

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

# 嘗試更新叢集
<a name="troubleshooting-fc-v3-update-cluster"></a>

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

## `pcluster update-cluster` 命令無法在本機執行
<a name="update-cluster-failure-cli-v3"></a>

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

## 叢集更新逾時
<a name="update-cluster-failure-timeout-v3"></a>

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

## `clusterStatus` 是 `UPDATE_FAILED`
<a name="update-cluster-failure-v3"></a>

### 根本原因
<a name="update-cluster-failure-v3-root-causing"></a>

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

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

檢查 [GitHub 上的 的 GitHub 已知問題](https://github.com/aws/aws-parallelcluster/wiki) AWS ParallelCluster 中是否提及您的問題。 GitHub

### 防止
<a name="update-cluster-failure-v3-preventing"></a>

如果叢集中至少有一個節點未成功套用更新，則叢集更新可能會失敗。為了降低叢集更新失敗的風險，建議您在啟動更新之前終止中斷的節點。可能中斷的節點範例是運算節點停滯在 `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
'
```

### 復原
<a name="update-cluster-failure-v3-recovering"></a>

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

 如果轉返失敗，叢集狀態不是確定性的。在這種情況下，可能會`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`
<a name="update-cluster-failure-rollback-failed-v3"></a>

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

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

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

1. 強制繼續轉返。

   ```
   $ aws cloudformation continue-update-rollback --region {{REGION}} --stack-name {{CLUSTER_STACK_NAME}}
   ```

1. 等待堆疊達到 `UPDATE_ROLLBACK_COMPLETE` 狀態。

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

## 叢集堆疊似乎卡在 `UPDATE_IN_PROGRESS`或 中 `UPDATE_ROLLBACK_IN_PROGRESS`
<a name="update-cluster-stuck-in-progress-v3"></a>

 如果登入節點 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`](#update-cluster-failure-rollback-failed-v3)。