Slurm叢集保護模式 - AWS ParallelCluster

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Slurm叢集保護模式

在啟用受保護模式的情況下執行叢集時,會在啟動運算節點時 AWS ParallelCluster 監視和追蹤計算節點啟動程序失敗。它這樣做是為了檢測這些故障是否持續發生。

如果在佇列 (分割區) 中偵測到下列項目,叢集就會進入受保護狀態:

  1. 連續的計算節點啟動程序失敗會持續發生,而不會成功啟動計算節

  2. 失敗計數達到預先定義的臨界值。

叢集進入受保護狀態後, AWS ParallelCluster 停用失敗達到或超過預先定義臨界值的佇列。

Slurm在 AWS ParallelCluster 版本 3.0.0 中添加了集群保護模式。

您可以使用受保護模式來減少耗費在計算節點啟動程序失敗循環上的時間和資源。

受保護模式參數

protected_failure_count

protected_failure_count指定佇列 (分割區) 中啟動叢集保護狀態的連續失敗次數。

預設值protected_failure_count為 10,且已啟用受保護模式。

如果大protected_failure_count於零,則會啟用受保護模式。

如果小protected_failure_count於或等於零,則會停用受保護模式。

您可以透過在位於的clustermgtd組態檔案中加入參數來/etc/parallelcluster/slurm_plugin/parallelcluster_clustermgtd.conf變更protected_failure_countHeadNode

您可以隨時更新此參數,而且不需要停止運算叢集即可執行此操作。如果在失敗計數達到之前佇列中啟動成功protected_failure_count,失敗計數會重設為零。

檢查叢集狀態為受保護狀態

當叢集處於受保護狀態時,您可以檢查運算叢集狀態和節點狀態。

運算叢集狀態

運算叢集的狀態是PROTECTED在執行受保護狀態的叢集中。

$ pcluster describe-compute-fleet --cluster-name <cluster-name> --region <region-id> { "status": "PROTECTED", "lastStatusUpdatedTime": "2022-04-22T00:31:24.000Z" }

節點狀態

若要瞭解哪些佇列 (分割區) 具有啟動受保護狀態的啟動程序失敗,請登入叢集並執行sinfo命令。啟動程序失敗等於或以上protected_failure_count的分割區處於INACTIVE狀態。沒有啟動程序失敗的磁碟分割處protected_failure_count於狀UP態,並如預期般運作。

PROTECTED狀態不會影響正在執行的工作。如果工作在具有啟動程序失敗等於或以上的分割區上執行protected_failure_count,則在執行中的工作完成INACTIVE後,該分割區會設定為。

請考慮下列範例中顯示的節點狀態。

$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* inact infinite 10 down% queue1-dy-c5xlarge-[1-10] queue1* inact infinite 3490 idle~ queue1-dy-c5xlarge-[11-3500] queue2 up infinite 10 idle~ queue2-dy-c5xlarge-[1-10]

分割區queue1INACTIVE因為偵測到 10 個連續的計算節點啟動程序失敗。

節點後面的執行個體queue1-dy-c5xlarge-[1-10]已啟動但無法加入叢集,因為狀態不良。

叢集處於受保護狀態。

分割區queue2不受中的啟動程序失敗影響queue1。它處於UP狀態,仍然可以運行作業。

如何停用受保護狀態

解決啟動程序錯誤之後,您可以執行下列命令,將叢集移出受保護狀態。

$ pcluster update-compute-fleet --cluster-name <cluster-name> \ --region <region-id> \ --status START_REQUESTED

啟動受保護狀態的引導失敗

激活受保護狀態的引導錯誤細分為以下三種類型。要識別類型和問題,您可以檢查是否 AWS ParallelCluster 生成日誌。如果已產生記錄檔,您可以檢查它們以取得錯誤詳細資訊。如需詳細資訊,請參閱 擷取和保留記錄

  1. 引導程序錯誤,導致實例自我終止

    執行個體會在啟動程序的早期失敗,例如因為 SlurmQueues\ CustomActions\ OnNodeStart| OnNodeConfigured指令碼中的錯誤而自行終止的執行個體。

    對於動態節點,請尋找類似下列內容的錯誤:

    Node bootstrap error: Node ... is in power up state without valid backing instance

    對於靜態節點,請在 clustermgtd log (/var/log/parallelcluster/clustermgtd) 中查看類似以下內容的錯誤:

    Node bootstrap error: Node ... is in power up state without valid backing instance
  2. 節點resume_timeoutnode_replacement_timeout過期

    執行個體無法在 resume_timeout (針對動態節點) 或 node_replacement_timeout (針對靜態節點) 內加入叢集。它不會在超時之前自行終止。例如,未正確設定叢集的網路,而且在逾時到期Slurm之後,節點會設定為DOWN狀態。

    對於動態節點,請尋找類似下列內容的錯誤:

    Node bootstrap error: Resume timeout expires for node

    對於靜態節點,請在 clustermgtd log (/var/log/parallelcluster/clustermgtd) 中查看類似以下內容的錯誤:

    Node bootstrap error: Replacement timeout expires for node ... in replacement.
  3. 節點運作狀態檢查失敗

    節點後面的執行個體無法進行 Amazon EC2 運作狀態檢查或排程的事件運作狀態檢查,並將節點視為啟動程序故障節點。在此情況下,執行個體會因無法控制的 AWS ParallelCluster原因而終止。

    clustermgtd log (/var/log/parallelcluster/clustermgtd) 中查看類似下列內容的錯誤:

    Node bootstrap error: Node %s failed during bootstrap when performing health check.
  4. 計算節點Slurm註冊失敗

    向Slurm控制slurmd常駐程式 (slurmctld) 註冊常駐程式失敗,並導致計算節點狀態變更為INVALID_REG狀態。不正確設定的Slurm運算節點可能會造成此錯誤,例如設定了CustomSlurmSettings運算節點規格錯誤的計算節點。

    查看 head 節點上的slurmctld記錄檔 (/var/log/slurmctld.log),或查看失敗計算節點的slurmd記錄檔 (/var/log/slurmd.log),找出類似下列內容的錯誤:

    Setting node %s to INVAL with reason: ...

如何調試受保護模式

如果您的叢集處於受保護狀態,並且從有問題的計算節點 AWS ParallelCluster 產生clustermgtdcloud-init-output記錄檔HeadNode和記錄檔,則您可以檢查記錄檔以取得錯誤詳細資訊。如需如何擷取記錄檔的詳細資訊,請參閱擷取和保留記錄

clustermgtd標頭節點上的 log(/var/log/parallelcluster/clustermgtd

記錄訊息會顯示哪些分割區有啟動程序失敗,以及對應的啟動程序失敗

[slurm_plugin.clustermgtd:_handle_protected_mode_process] - INFO - Partitions bootstrap failure count: {'queue1': 2}, cluster will be set into protected mode if protected failure count reach threshold.

clustermgtd記錄檔中,搜尋Found the following bootstrap failure nodes以尋找啟動失敗的節點。

[slurm_plugin.clustermgtd:_handle_protected_mode_process] - WARNING - Found the following bootstrap failure nodes: (x2) ['queue1-st-c5large-1(192.168.110.155)', 'broken-st-c5large-2(192.168.65.215)']

在記clustermgtd錄檔中,搜尋Node bootstrap error以尋找失敗的原因。

[slurm_plugin.clustermgtd:_is_node_bootstrap_failure] - WARNING - Node bootstrap error: Node broken-st-c5large-2(192.168.65.215) is currently in replacement and no backing instance

cloud-init-output運算節點上的 log (/var/log/cloud-init-output.log)

在記錄檔中取得啟動程序失敗節點私人 IP 位址之後,您可以登入計算節點或遵循中的指示擷取記錄檔,擷取和保留記錄來尋找對應的計算節點記錄。clustermgtd在大多數情況下,有問題節點的/var/log/cloud-init-output記錄檔會顯示造成計算節點啟動程序失敗的步驟。