健康情況檢查

CycleCloud 提供兩種機制來檢查 VM 的健康情況:節點健康情況檢查是較新的功能,可在布建階段執行檢查,並防止狀況不良的 VM 加入,而 HealthCheck 會在 VM 加入叢集作為節點之後定期執行。

節點健康情況檢查

節點健康情況檢查可以在允許 VM 加入 CycleCloud 叢集之前偵測狀況不良的硬體。 這項功能的目前版本將會執行內建于官方 AzureHPC 映射的健康情況檢查腳本,可在 /opt/azurehpc/test/azurehpc-health-checks/下找到。 這些腳本的來源位於 AzureHPC 節點健康情況檢查存放庫中,但請注意,您叢集版本的 AzureHPC 映射內建版本可能不是存放庫中可用的最新版本。

規格需求

目前版本的節點健康情況檢查僅支援 2023 年 11 月 7 日之後發行的 AzureHPC 映射, (包含 azurehpc-health-checks 2.0.6 版或更新版本的) 和衍生自它們的自訂映射。 Windows 目前不支援節點健康情況檢查。

啟用 Slurm 叢集的節點健康情況檢查

Slurm 叢集建立表單提供核取方塊,以啟用位於 [ 進階設定 ] 索引標籤下的 [節點健康情況檢查]。核取方塊會在叢集的 HPC 節點陣列上啟用節點健康情況檢查。 如果您想要在其他節點陣列上啟用節點健康情況檢查, (或其他叢集類型) ,您必須使用自訂叢集範本。

只要取消核取方塊,即可在執行中的叢集上停用節點健康情況檢查。 不需要相應減少節點陣列,變更才會生效。

節點健康情況檢查 GUI

瞭解節點健康情況檢查結果

在 VM 通過健康情況檢查之後,它會繼續進行軟體設定階段。

如果 VM 失敗任何健康情況檢查腳本,則會將錯誤訊息傳送至 CycleCloud,且 VM 會自動防止加入叢集。

節點健康情況檢查錯誤記錄

如果 VM 是在已啟用過度布建的 NodeArray 中啟動 (,例如 Slurm hpc Node Array) 則應該在過度布建過程中自動取代 VM。 在此情況下,不需要採取任何動作,而且系統會選取狀況良好的 VM 來加入叢集 (,不過您會在叢集頁面上看到錯誤訊息,指出一或多個 VM 失敗檢查) 。

如果 VM 已針對單一節點啟動、已停用過度布建的節點陣列 (例如 Slurm) ,或如果 VM 失敗健康情況檢查超過過度布建所支援,節點將會移至失敗狀態,且配置將會失敗。 CycleCloud 可能會嘗試重新製作 VM 映射以修正問題,但如果重新映射失敗,則必須由系統管理員手動終止節點,並由系統管理員手動取代 (自動調整程式) 。

注意

如果您已啟用節點健康情況檢查,但 VM 映射不符合上述需求,則允許所有 VM 加入叢集,但狀態會包含警告,指出不支援檢查。 節點健康情況檢查錯誤詳細資料

屬性參考

屬性 類型 定義
EnableNodeHealthChecks Boolean (選擇性) 啟用此節點或節點陣列的開機節點健康情況檢查

HealthCheck

Azure CycleCloud 提供一種機制,可終止處於健康情況不良狀態的虛擬機器 (VM) 。 系統與使用者定義腳本 (Python 和 Bash) 會在 Windows 上定期執行 (5 分鐘,Linux) 10 分鐘,以判斷 VM 的整體健康情況。 HealthCheck 可讓系統管理員定義應終止 VM 的條件,而不需要手動監視和補救。

內建 HealthCheck 腳本

已啟用 CycleCloud 的 VM 隨附兩個預設 HealthCheck 腳本:

  • converge_timeout腳本會在啟動四小時內終止尚未完成軟體設定的實例。 此逾時期間可以使用 cyclecloud.keepalive.timeout) 秒內定義的設定 (來控制。
  • scheduled_shutdown腳本會在$JETPACK_HOME/run/scheduled_shutdown中尋找製作者檔案,其中包含單行,以Unix 時間戳記秒為單位提供關機時間,以及提供說明的選擇性第二行。 當目前時間晚于檔案中最早的時間戳記時,VM 會被視為狀況不良。

運作方式

HealthCheck 腳本位於 $JETPACK_HOME/config/healthcheck.d 目錄中。 Linux 同時支援 Python 和 Bash 腳本,而 Windows 僅支援 Python 腳本。 腳本應該會判斷 VM 的健康情況。 如果發現 VM 狀況不良,腳本應該會結束狀態為 254 ,這表示 CycleCloud VM 狀況不良且應該終止。

登入執行 HealthCheck 的 VM 時,您可以執行 jetpack keepalive命令,讓 VM 無法關機。 在 Linux 實例上,您可以在 Windows forever 上以小時或 forever 時間指定時間範圍是唯一的選項。

注意

當 VM 判斷為狀況不良時,HealthCheck 代理程式會要求 CycleCloud 終止 VM,VM 永遠不會透過 shutdown 命令在本機關閉。 如果 VM 無法與 CycleCloud 通訊,即使 VM 狀況不良,VM 仍會保持狀況不良,直到到達 CycleCloud 的時間為止。

範例

作為簡單的範例,我們將撰寫 HealthCheck 腳本,以確保 Linux VM 未使用超過 24 小時。 此腳本可用來模擬低優先順序收回,以測試工作流程如何回應收回的 VM。 此腳本會放在/opt/cycle/jetpack/config/healthcheck.d/healthcheck_example.sh

#!/bin/bash

# Get the uptime of the system (in seconds) and check to see if it is
# greater than 86,400 (24 hours in seconds). If it is, exit 254 to
# signal that the VM is unhealthy.
if (( $(cat /proc/uptime | awk '{print ($1 > 86400)}'))); then
  exit 254
fi

注意

此腳本可以透過 CycleCloud 專案 放置在 VM 上,或在 建立自訂映射時直接新增它。