本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
嘗試更新叢集
下一節針對您嘗試更新叢集時可能發生的問題,提供可能的疑難排解解決方案。
pcluster update-cluster 命令無法在本機執行
如需失敗詳細資訊~/.parallelcluster/pcluster-cli.log,請參閱本機檔案系統中的 。
叢集更新逾時
這可能是與cfn-hup未執行相關的問題。如果cfn-hup示範被外部原因終止,則不會自動重新啟動。如果 cfn-hup 未執行,在叢集更新期間,CloudFormation 堆疊會如預期啟動更新程序,但前端節點上不會啟動更新程序,且堆疊部署最終會逾時。如需詳細資訊,請參閱 在 cfn-hup 未執行時對叢集更新逾時進行故障診斷以疑難排解並從問題中復原。
clusterStatus 是 UPDATE_FAILED
根本原因
若要識別失敗的根本原因,起點是查看叢集堆疊事件和前端節點/var/log/chef-client.log中的 。
可能的原因是至少有一個叢集節點未套用更新。您可以透過在 日誌/var/log/chef-client.log中尋找 ,擷取在前端節點Check cluster readiness中更新失敗的節點清單。
檢查 GitHub 上的 的 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
clusterStatus 是 UPDATE_FAILED, cloudFormationStackStatus是 UPDATE_ROLLBACK_FAILED
當pcluster describe-cluster報告clusterStatus為 UPDATE_FAILED和 cloudFormationStackStatus 時UPDATE_ROLLBACK_FAILED,叢集更新和後續復原都會失敗。在此狀態下,叢集堆疊無法接受任何進一步的更新,且需要手動介入才能解除封鎖。
若要解除封鎖叢集堆疊,請完成下列步驟:
-
修正失敗的根本原因。
-
強制繼續轉返。
$aws cloudformation continue-update-rollback --regionREGION--stack-nameCLUSTER_STACK_NAME -
等待堆疊達到
UPDATE_ROLLBACK_COMPLETE狀態。 -
使用
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 --regionREGION--stack-nameCLUSTER_STACK_NAME
取消更新會觸發回復。您無法減少轉返的 1 小時逾時,因此在最壞的情況下,您需要等待轉返達到最終狀態。
如果復原成功,您可以在修正失敗的根本原因後,立即重試原始叢集更新。否則,請參閱 clusterStatus 是 UPDATE_FAILED, cloudFormationStackStatus是 UPDATE_ROLLBACK_FAILED。