

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

# 對 Amazon EC2 Auto Scaling 中運作狀態不佳的執行個體進行故障診斷
<a name="ts-as-healthchecks"></a>

以下是 Amazon EC2 Auto Scaling 傳回的錯誤訊息、潛在原因，以及您可以採取的步驟來解決問題。

若要擷取錯誤訊息，請參閱 [檢視運作狀態檢查失敗的原因](replace-unhealthy-instance.md)。

**Topics**
+ [執行個體因 EC2 執行個體狀態檢查失敗而停止運作](#ts-failed-status-checks)
+ [執行個體因指出了執行個體已終止或停止的 EC2 運作狀態檢查而停止運作](#ts-terminated-or-stopped)
+ [執行個體因 ELB 系統運作狀態檢查失敗而停止運作](#ts-failed-elb-health-checks)
+ [其他資源](#troubleshoot-health-checks-additional-resources)

## 執行個體因 EC2 執行個體狀態檢查失敗而停止運作
<a name="ts-failed-status-checks"></a>

**問題**：Auto Scaling 執行個體未通過 Amazon EC2 狀態檢查。

**原因 1**：如果有問題導致 Amazon EC2 考慮 Auto Scaling 群組中的執行個體受損，Amazon EC2 Auto Scaling 會自動取代執行個體，作為其運作狀態檢查的一部分。

**解決方案 1**：當執行個體狀態檢查失敗時，您通常必須透過變更執行個體組態來自行解決問題，直到應用程式不再顯示任何問題為止。若要解決此問題，請遵循這些步驟：

1. 手動建立不屬於 Auto Scaling 群組的 Amazon EC2 執行個體，並調查問題。如需調查受損執行個體的一般說明，請參閱《*Amazon EC2 使用者指南*》中的[故障診斷狀態檢查失敗的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)。

1. 確認您的執行個體已成功啟動且運作正常後，請將新的無錯誤執行個體組態部署到 Auto Scaling 群組。

1. 刪除已建立的執行個體，以免持續為您的 AWS 帳戶支付費用。

## 執行個體因指出了執行個體已終止或停止的 EC2 運作狀態檢查而停止運作
<a name="ts-terminated-or-stopped"></a>

**問題**：已停止、重新啟動或終止的 Auto Scaling 執行個體被替換。

**原因 1**：使用者手動停止、重新啟動或終止執行個體。

**解決方案 1**：如果您需要停止或重新啟動 Auto Scaling 群組中的執行個體，建議您先讓執行個體處於待命狀態。如需詳細資訊，請參閱[從 Auto Scaling 群組暫時移除執行個體](as-enter-exit-standby.md)。

**原因 2**：Amazon EC2 Auto Scaling 嘗試在 Amazon EC2 Spot 服務中斷執行個體後替換 Spot 執行個體，因為 Spot 價格增長超過您的最高價格或容量已不可使用。

**解決方案 2**：無法保證 Spot 執行個體在任何指定時間點都能滿足請求。不過，您可以嘗試下列方法：
+ 使用較高的 Spot 最高價格 (可能是隨需價格)。將最高價格設得更高，可讓 Amazon EC2 Spot 服務更好地啟動和維護所需容量。
+ 在多個可用區域中執行多個執行個體類型，增加可從中啟動執行個體的不同容量集區的數量。如需詳細資訊，請參閱[具有多種執行個體類型和購買選項的 Auto Scaling 群組](ec2-auto-scaling-mixed-instances-groups.md)。
+ 如果使用多個執行個體類型，請考慮啟用容量重新平衡功能。如果希望 Amazon EC2 Spot 服務在執行中的執行個體終止前嘗試啟動新的 Spot 執行個體，則可用到此功能。如需詳細資訊，請參閱[Auto Scaling 中的容量重新平衡，以取代具有風險的 Spot 執行個體](ec2-auto-scaling-capacity-rebalancing.md)。

**原因 3**：使用容量區塊時，Amazon EC2 會終止容量區塊結束時間前 30 分鐘仍在執行的任何執行個體。此突然終止會導致 Auto Scaling 群組嘗試啟動新執行個體以維持其所需的容量，即使容量區塊已結束。

**解決方案 3**：若要解決此問題，請嘗試下列動作：
+ 減少 Auto Scaling 群組所需的容量，以防止其嘗試啟動新的執行個體。如需詳細資訊，請參閱[Amazon EC2 Auto Scaling 手動擴展](ec2-auto-scaling-scaling-manually.md)。
+ 請務必在容量區塊結束時間前 30 分鐘擴展 Auto Scaling 群組，以免經常遇到此錯誤。確定任何生命週期關聯在容量區塊結束時間之前 30 分鐘完成。如需詳細資訊，請參閱[Capacity Blocks 用於機器學習工作負載](launch-template-capacity-blocks.md)。

## 執行個體因 ELB 系統運作狀態檢查失敗而停止運作
<a name="ts-failed-elb-health-checks"></a>

**問題**：Auto Scaling 執行個體可能未通過 EC2 狀態檢查。但是，對於已註冊 Auto Scaling 群組的目標群組或 Classic Load Balancer，它們可能無法通過 Elastic Load Balancing 運作狀態檢查。

**原因 1**：如果您的 Auto Scaling 群組依賴 Elastic Load Balancing 提供的運作狀態檢查，Amazon EC2 Auto Scaling 會同時檢查 EC2 狀態檢查和 Elastic Load Balancing 運作狀態檢查的結果，以判斷執行個體的運作狀態。為了執行運作狀態檢查，負載平衡器會傳送請求至每個執行個體並等待正確的回應，或建立與執行個體的連線。執行個體可能無法通過 Elastic Load Balancing 運作狀態檢查，因為在執行個體上執行的應用程式問題造成負載平衡器認定執行個體已停止服務。

**解決方案 1**：若要通過 Elastic Load Balancing 運作狀態檢查：
+ 確認目標群組的運作狀態檢查設定已正確設定。您可以依據目標群組，指定負載平衡器的運作狀態檢查設定。如需詳細資訊，請參閱[設定目標的運作狀態檢查](getting-started-elastic-load-balancing.md#elb-health-checks-for-targets)。
+ 記下負載平衡器預期的成功代碼，並且確認您的應用程式已設定為在成功時傳回這些代碼。
+ 確認負載平衡器和 Auto Scaling 群組的安全群組已正確設定。
+ 確認負載平衡器設定在與 Auto Scaling 群組相同的可用區域中。

**解決方案 2**：更新 Auto Scaling 群組以關閉 Elastic Load Balancing 運作狀態檢查。如需如何關閉這些運作狀態檢查的指示，請參閱[分離目標群組或 Classic Load Balancer](https://docs.aws.amazon.com//autoscaling/ec2/userguide/attach-load-balancer-asg.html#as-remove-load-balancer)。

**原因 2**：運作狀態檢查寬限期與執行個體啟動時間不相符。

**解決方案 3**：編輯 Auto Scaling 群組的運作狀態檢查寬限期。將寬限期設定為足夠長的時間，以支援 Elastic Load Balancing 認為新啟動的執行個體運作狀態良好之前所需的連續成功運作狀態檢查次數。如需詳細資訊，請參閱[設定 Auto Scaling 群組的運作狀態檢查寬限期。](health-check-grace-period.md)。

## 其他資源
<a name="troubleshoot-health-checks-additional-resources"></a>

如果您有不同的問題，請參閱下列 AWS re:Post 文章以取得其他故障診斷說明：
+  [Amazon EC2 Auto Scaling 為什麼會終止執行個體？](https://repost.aws/knowledge-center/auto-scaling-instance-how-terminated) 
+  [為什麼 Amazon EC2 Auto Scaling 未終止運作狀態不佳的執行個體？](https://repost.aws/knowledge-center/auto-scaling-terminate-instance) 