View a markdown version of this page

嘗試更新叢集 - AWS ParallelCluster

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

嘗試更新叢集

下一節針對您嘗試更新叢集時可能發生的問題,提供可能的疑難排解解決方案。

pcluster update-cluster 命令無法在本機執行

如需失敗詳細資訊~/.parallelcluster/pcluster-cli.log,請參閱本機檔案系統中的 。

叢集更新逾時

這可能是與cfn-hup未執行相關的問題。如果cfn-hup示範被外部原因終止,則不會自動重新啟動。如果 cfn-hup 未執行,在叢集更新期間,CloudFormation 堆疊會如預期啟動更新程序,但前端節點上不會啟動更新程序,且堆疊部署最終會逾時。如需詳細資訊,請參閱 在 cfn-hup 未執行時對叢集更新逾時進行故障診斷以疑難排解並從問題中復原。

clusterStatusUPDATE_FAILED

根本原因

若要識別失敗的根本原因,起點是查看叢集堆疊事件和前端節點/var/log/chef-client.log中的 。

可能的原因是至少有一個叢集節點未套用更新。您可以透過在 日誌/var/log/chef-client.log中尋找 ,擷取在前端節點Check cluster readiness中更新失敗的節點清單。

檢查 GitHub 上的 的 GitHub 已知問題 AWS ParallelCluster 中是否提及您的問題。 GitHub

防止

如果叢集中至少有一個節點未成功套用更新,則叢集更新可能會失敗。為了降低叢集更新失敗的風險,建議您在啟動更新之前終止中斷的節點。可能中斷的節點範例是運算節點停滯在 COMPLETING 狀態的時間超過預期的 epilog 持續時間。若要偵測這些節點,您可以執行下列命令,根據您的需求調整 threshold值 (該值必須大於對 epilogs 預期的最長持續時間)。

$ scontrol show nodes --json | jq -r --argjson threshold 60 ' .nodes[] | select(.state | index("COMPLETING")) | select((now - .last_busy.number) > $threshold) | .name '

復原

如果更新失敗,復原是預期會復原叢集狀態的機制。

如果轉返失敗,叢集狀態不是確定性的。在這種情況下,可能會clustermgtd停止以防止失敗的擴增。我們建議您在前端節點上執行下列命令來啟動它。將 Python 版本調整為與您的版本一起隨附的 AWS ParallelCluster 版本:

$ /opt/parallelcluster/pyenv/versions/3.12.11/envs/cookbook_virtualenv/bin/supervisorctl start clustermgtd

clusterStatusUPDATE_FAILEDcloudFormationStackStatusUPDATE_ROLLBACK_FAILED

pcluster describe-cluster報告clusterStatusUPDATE_FAILEDcloudFormationStackStatusUPDATE_ROLLBACK_FAILED,叢集更新和後續復原都會失敗。在此狀態下,叢集堆疊無法接受任何進一步的更新,且需要手動介入才能解除封鎖。

若要解除封鎖叢集堆疊,請完成下列步驟:

  1. 修正失敗的根本原因。

  2. 強制繼續轉返。

    $ aws cloudformation continue-update-rollback --region REGION --stack-name CLUSTER_STACK_NAME
  3. 等待堆疊達到 UPDATE_ROLLBACK_COMPLETE 狀態。

  4. 使用 pcluster update-cluster命令重試原始更新。

叢集堆疊似乎卡在 UPDATE_IN_PROGRESS或 中 UPDATE_ROLLBACK_IN_PROGRESS

如果登入節點 Auto Scaling 群組因為登入節點中的引導失敗而無法穩定,叢集堆疊可能會卡在 UPDATE_IN_PROGRESS或最多 UPDATE_ROLLBACK_IN_PROGRESS 1 小時。

若要驗證您是否因為登入節點 Auto Scaling 群組而發生這種情況,您需要執行下列檢查:在主要堆疊中, 中的唯一資源UPDATE_IN_PROGRESS是登入節點巢狀堆疊。在登入節點巢狀堆疊中,卡在其中的唯一資源UPDATE_IN_PROGRESS是登入節點 Auto Scaling 群組。

如果您在這種情況下,您可以取消更新,這樣就不需要等待 1 小時即可完成更新。

$ aws cloudformation cancel-update-stack --region REGION --stack-name CLUSTER_STACK_NAME

取消更新會觸發回復。您無法減少轉返的 1 小時逾時,因此在最壞的情況下,您需要等待轉返達到最終狀態。

如果復原成功,您可以在修正失敗的根本原因後,立即重試原始叢集更新。否則,請參閱 clusterStatus 是 UPDATE_FAILED, cloudFormationStackStatus是 UPDATE_ROLLBACK_FAILED