Jetpack
在叢集的每個節點上都需要 Jetpack。 Azure CycleCloud 會自動在布建為成為叢集中節點的每個虛擬機上安裝它。 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
- 建立系統 init 啟動文本,將 VM 設定為叢集節點
- 安裝 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 |
聯結叢集和交集節點所產生的記錄,特別感興趣的 是chef-client.log ,其中包含聚合 Chef 配方的結果。 |
run |
系統所產生的運行時間檔案。 我們不建議直接存取這些檔案。 |
system |
內部檔案。 我們不建議直接使用此目錄中的任何檔案,因為它們可能會大幅從發行變更為發行。 |
HealthCheck
HealthCheck 服務會執行使用者定義的腳本,以判斷 VM 目前的可行性作為叢集節點。 如需詳細資訊,請參閱 HealthCheck 檔。
Jetpack 命令行工具
Jetpack 命令行工具提供一組實用的子命令,可用來操作目前的 VM,並與 Azure CycleCloud 互動。
命令 | 描述 |
---|---|
jetpack autoscale |
自動調整此節點所屬的叢集。 |
jetpack config |
擷取組態值。 |
jetpack converge |
執行 Chef 交集。 |
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 自動調整
jetpack autoscale
會設定節點所屬叢集的自動調整目標。 叢集可以透過核心、實例計數或自定義定義來調整。
若要調整為 100 個核心:
jetpack autoscale --corecount=100
若要將 'gpu' nodearray 調整為 5 個節點:
jetpack autoscale --instancecount 5 --name=gpu
若要自定義自動調整,json 檔案必須寫入磁碟,其中包含您想要調整的 nodearray 定義。 若要調整為 100 個核心:
[
{
"Name": "execute",
"TargetCoreCount": 100
}
]
jetpack autoscale --file=custom-autoscale.json
jetpack config
jetpack config
擷取由 CycleCloud 傳遞至 VM 的資訊。 它會公開:
jetpack 交集
jetpack converge
會下載與節點相關聯的所有 CycleCloud 專案,並啟動 Chef 交集程式,以執行節點的所有 Chef 配方和叢集 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 記錄
jetpack log
會將記錄訊息傳回 CycleCloud。 訊息會出現在應用程式伺服器記錄檔中, (通常是 /opt/cycle_server/cycle_server.log) 、主要事件記錄檔和 [叢集 UI] 頁面。
每個訊息都有兩個屬性: 層級 和 優先順序。
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 send
jetpack send
將AMQP訊息傳送至 CycleCloud。 除非您開發 CycleCloud 的外掛程式,否則這是不建議使用的進階命令。
您可以使用指定的 AMQP 路由金鑰來傳送任何字串或檔案。
jetpack 關機
jetpack shutdown
要求 CycleCloud 終止節點。 選項可以傳遞至 命令,以指定關閉要求 (閑置與狀況不良) 的原因,以及如何終止節點 (終止與解除分配) 。
若要關閉狀況不良的節點:
jetpack shutdown --unhealthy
若要解除分配節點:
jetpack shutdown --deallocate
jetpack 測試
jetpack test
會執行指派給節點 的專案 隨附的任何測試,並將結果列印至 stdout。
jetpack 使用者
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。 記錄會上傳至節點的保險箱所參考的 Azure 記憶體帳戶。 在 Azure 記憶體中簽署封存時,產生的 SAS 令牌將具有 唯讀 存取權 30 天。
Usage :
$ 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