您需要在叢集的每個節點上使用 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 的連線,並在繼續設定節點之前啟動 healthcheck 和 jetpackd 服務。
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] 頁面。
每個訊息都有兩個屬性: level 和 priority。
屬性 level 表示訊息的類型。 有效層級為 info、 warn與 error。 層級不會指出指定訊息的重要性。 例如,有些錯誤是微不足道的,有些是重要的資訊訊息。
優先順序表示訊息的重要性。 有效的 優先順序 值為 『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