共用方式為


Jetpack

您需要在叢集的每個節點上使用 Jetpack。 Azure CycleCloud 會自動在您布建的每個虛擬機上安裝 Jetpack,以成為叢集中的節點。 Jetpack 提供三個主要功能:

  • 節點組態 - CycleCloud 會使用腳本和 Chef ,將布建的 VM 設定自動化至工作叢集節點。 Chef 用戶端和 VM 設定的必要資源會內嵌在 Jetpack 中。
  • 分散式同步處理 - Jetpack 會管理節點與 CycleCloud 應用程式伺服器之間的通訊。 此管理可讓 CycleCloud 監視布建 VM 的狀態,並同步處理叢集中多個節點的協調流程。
  • HealthCheck - Jetpack 會使用 HealthCheck 來判斷 VM 的健康情況,使其可以終止狀況不良的 VM。

Jetpack 安裝

當您第一次使用 CycleCloud 啟動叢集時,Jetpack 安裝程式會被快取在您的 Azure 儲存帳戶中。 布建叢集 VM 時, 自定義腳本擴充功能 會在開機程式中執行。 此延伸模組會從您的 Azure 記憶體快取下載 Jetpack 安裝程式,然後將它安裝在 VM 上。

Jetpack 安裝程式:

  • 將 Jetpack 檔案解壓縮到單一目錄樹狀結構:
    • Windows: C:\cycle\jetpack
    • Linux: /opt/cycle/Jetpack
  • 建立將 VM 設定為叢集節點的系統 init 啟動腳本
  • 安裝 HealthCheck 服務
  • 安裝 Jetpack 命令列工具 以:
    • Windows:C:\cycle\jetpack\bin\jetpack
    • Linux: /opt/cycle/jetpack/bin/jetpack
  • 在 Linux 上建立 udev 規則
  • 設定環境變數 CYCLECLOUD_HOME

備註

如果 Jetpack 已預安裝於映像上,則自定義腳本延伸模組 不會 重新安裝 Jetpack。 相反地,它會執行初始化步驟,以驗證節點與 CycleCloud 的連線,並在繼續設定節點之前啟動 healthcheckjetpackd 服務。

Jetpack 子目錄

目錄 說明
bin 實用的二進位檔和腳本。
config 用戶定義的和叢集定義組態檔和腳本。
logs 聯結叢集和聚合節點所產生的記錄。 特別令人感興趣的是 jetpack.log,其中包含收斂過程的結果。
run 系統所產生的運行時間檔案。 不建議直接存取這些檔案。
system 內部檔案。 我們不建議直接使用此目錄中的任何檔案,因為它們在每次發行中可能會發生重大變更。

HealthCheck

HealthCheck 服務會執行使用者定義的腳本,以判斷 VM 目前作為叢集節點的可行性。 如需詳細資訊,請參閱 HealthCheck 檔。

Jetpack 命令行工具

Jetpack 指令工具提供一組實用的子命令,可以用來管理目前的 VM 並與 Azure CycleCloud 互動。

Command 說明
jetpack autoscale 自動調整此節點所屬的叢集。
jetpack config 擷取組態值。
jetpack converge 執行「收斂」以更新節點組態。
jetpack download 從 Azure 記憶體中的項目下載 Blob 資源。
jetpack keepalive 依 HealthCheck 服務延遲系統終止。
jetpack log 將訊息記錄至 CycleCloud 叢集 UI。
jetpack run_on_shutdown 新增腳本以在節點終止之前呼叫。
jetpack send 將任意AMQP訊息傳送至 CycleCloud 伺服器。
jetpack shutdown 請求 CycleCloud 關閉 VM。
jetpack test 執行與指派給 VM 之專案相關聯的測試。
jetpack users 列出 CycleCloud 在此 VM 上管理的使用者。
jetpack report_issue 將記錄檔從 VM 封存到 Azure 儲存體

jetpack autoscale

使用 jetpack autoscale 來設定節點所屬叢集的自動調整目標。 您可以依核心、實例計數或自定義定義來調整叢集。

若要調整為 100 個核心:

jetpack autoscale --corecount=100

若要將 'gpu' nodearray 調整為五個節點:

jetpack autoscale --instancecount 5 --name=gpu

若要自定義自動調整,請將 JSON 檔案寫入磁碟,其中包含您想要調整的 nodearray 定義。 若要擴展至 100 個核心:

[
  {
      "Name": "execute",
      "TargetCoreCount": 100
  }
]
jetpack autoscale --file=custom-autoscale.json

jetpack 設定

使用 jetpack config 來擷取 CycleCloud 傳遞至 VM 的資訊。 它將揭露:

  • 透過 Ohai 提供的所有系統屬性
  • VM 的 Azure 中繼資料子集
  • 父 CycleCloud 叢集的相關資訊。

jetpack converge

jetpack converge 命令會下載與節點相關聯的所有 CycleCloud 專案,並啟動融合程式,以執行節點的 cluster-init 腳本。

Jetpack 下載

jetpack download 命令會下載您使用專案上傳至節點的 Blob。 您必須指定 Blob 所屬的專案。

若要在目前目錄下下載您在 example-project 專案中所上傳的 Blob big-file.zip:

jetpack download --project example-project big-file.zip .

jetpack keepalive

jetpack keepalive 命令會與 HealthCheck 服務互動,以因 HealthCheck 失敗而延遲 VM 終止。 您可以將延遲設定為固定期間或無限期。 根據預設,命令會延遲終止一小時。

若要將系統終止延遲一小時:

jetpack keepalive

若要將系統終止延遲六小時:

jetpack keepalive 6h

若要完全停用 HealthCheck 服務,也就是無限期延遲終止:

jetpack keepalive forever

備註

只有此選項 forever 適用於 Windows VM 上的 HealthCheck。

jetpack log

jetpack log 將記錄訊息傳回 CycleCloud。 訊息會出現在應用程式伺服器記錄檔中(通常是 /opt/cycle_server/cycle_server.log)、主要事件記錄檔和 [叢集 UI] 頁面。

每個訊息都有兩個屬性: levelpriority

屬性 level 表示訊息的類型。 有效層級為 infowarnerror。 層級不會指出指定訊息的重要性。 例如,有些錯誤是微不足道的,有些是重要的資訊訊息。

優先順序表示訊息的重要性。 有效的 優先順序 值為 『low』、'medium' 和 'high'。 只有優先順序為中或更高層級的訊息會顯示在 [叢集 UI] 頁面上,以避免將低優先順序訊息淹沒頁面。

若要傳送出現在 [叢集 UI] 頁面上的信息記錄訊息:

jetpack log 'system is now ready'

若要傳送您不希望顯示在 [叢集 UI] 頁面上的低優先等級記錄訊息,請按以下步驟操作:

jetpack log 'system is now ready' --priority low

根據預設,具有 錯誤 層級的訊息具有較高的優先順序。 若要傳送錯誤訊息:

jetpack log 'the machine cannot process jobs' --level error

若要傳送微不足道的錯誤訊息:

jetpack log 'the machine cannot process jobs' --level error --priority low

jetpack run_on_shutdown

命令 jetpack run_on_shutdown 會註冊一個在節點關閉之前需要執行的bash腳本。

此命令會將腳本的絕對路徑當做自變數。

當 Azure 終止節點並啟用 終止通知 時,Jetpack 會收到終止通知。 它會嘗試在節點關閉之前執行腳本。

節點 必須 開啟 終止通知 才能啟用 run_on_shutdown

jetpack run_on_shutdown /tmp/example.sh

Windows 節點不支援此命令。

jetpack 傳送

jetpack send 將AMQP訊息傳送至 CycleCloud。 除非您開發 CycleCloud 的外掛程式,否則不建議使用進階命令。

您可以使用指定的 AMQP 路由金鑰來傳送任何字串或檔案。

jetpack 關機

使用 jetpack shutdown 來要求 CycleCloud 終止節點。 您可以將選項傳遞至命令,以指定關機要求的原因(閑置與狀況不良),以及如何終止節點(終止與解除分配)。

若要關閉狀況不良的節點,請使用下列命令:

jetpack shutdown --unhealthy

若要解除分配節點:

jetpack shutdown --deallocate

jetpack 測試

使用 jetpack test 來執行指派給節點 之專案 隨附的任何測試。 命令會將結果列印至 stdout。

jetpack users

jetpack users 列出 CycleCloud 在節點上管理的使用者。 隨著使用者被指派到叢集或從叢集中移除,此列表可能會隨著時間而改變。

若要取得指派到節點的方便使用列印本:

$ jetpack users

Username: test-user
Full Name: Test User
UID: 10201
Is Admin: True
Is Owner: True

若要取得適合腳本使用的 JSON 輸出:

$ jetpack users --json

[
    {
        "fullName": "Test User",
        "isAdmin": true,
        "isOwner": true,
        "name": "test-user",
        "publicKeys": [
            "ssh-rsa public-key-goes-here\n"
        ],
        "uid": 10201
    }
]

jetpack report_issue

jetpack report_issue 封存 VM 中的記錄目錄,選擇性地將它們上傳至 Azure 記憶體,並建立用於外部存取的已簽署 URL。 命令會將記錄上傳至節點的 Locker 所參考的 Azure 儲存體帳戶。 當您在 Azure 記憶體中簽署封存時,產生的 SAS 令牌具有 30 天的 唯讀 存取權。

用法:

$ jetpack report_issue [LOG_PATH] [--upload/--no-upload] [--sign/--no-sign]

若要封存、上傳及簽署預設 Jetpack 記錄 ($JETPACK_HOME/logs):

$ jetpack report_issue
Logs can be found at: https://testaccount.blob.core.windows.net/cyclecloud/issues/TestCluster-execute-1-77777964-8b74-420d-ad44-094edf7695f2.zip?sv=2017-11-09&rsct=binary&sig=jBJUlYo10lRq0eW94I%2B6syzYVmgo1qcTFUc35D/q0Tg%3D&se=2020-12-04T15%3A15%3A00Z&spr=https&rscd=disposition%3Dfile%3B%20attachment&sp=r&sr=b
Signed URL will expire on: 2020-12-04T15:15:00Z

若要封存、上傳,但不簽署非默認記錄目錄:

$ jetpack report_issue /var/log/azure --no-sign
Logs can be found at: https://testaccount.blob.core.windows.net/cyclecloud/issues/TestCluster-execute-1-d67fe991-1dac-4644-9af7-50c835726f5e.zip

若要封存本機 VM 上的記錄:

$ jetpack report_issue --no-upload
Logs can be found at: /tmp/tmp4nscw705/TestCluster-execute-1-4249e973-3d87-4b14-94ed-6856a5267972.zip