為什麼 Amazon EC2 Auto Scaling 會終止執行個體?

3 分的閱讀內容
0

我的 Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling 群組已終止執行個體。但在 Amazon EC2 主控台上看不到終止原因。

簡短描述

Amazon EC2 Auto Scaling 依靠 Amazon EC2 或 Elastic Load Balancing (ELB) 運作狀態檢查來確定執行個體運作狀態。您可以在 Amazon EC2 主控台的活動歷史記錄中查看 Auto Scaling 群組的所有擴展動作,包括運作狀態檢查取代。

解決方法

若要確定疑難排解步驟,請使用活動歷程記錄視圖中執行個體的描述。

先找出執行個體終止的描述和原因:

  1. 開啟 Amazon EC2 主控台
  2. 在導覽窗格的 Auto Scaling 下,選擇 Auto Scaling 群組。然後,選取執行個體的群組。
  3. 選擇活動視圖,然後在活動歷史記錄中搜尋執行個體終止事件。
  4. 記下執行個體終止事件的描述原因

若要對執行個體終止的原因進行疑難排解,請參閱下列描述範例。

「由於 EC2 運作狀態檢查顯示其已終止或停止,執行個體已停止服務」

Amazon EC2 Auto Scaling 會終止已停止和已完成重新啟動的執行個體。若要確定使用者是否手動停止或重新啟動執行個體,請檢查 AWS CloudTrail 歷史記錄:

  1. 開啟 AWS CloudTrail 主控台
  2. 在導覽窗格中,選取事件歷史記錄
  3. 檢查 TerminateInstancesStopInstancesRebootInstances API 的歷史記錄。

「因 EC2 執行個體狀態檢查失敗,執行個體已停止服務」

使用 Amazon CloudWatch 指標尋找執行個體或系統檢查失敗:

  1. 開啟 Amazon CloudWatch 主控台
  2. 在導覽窗格中,選擇指標,然後選擇所有指標視圖。
  3. 在指標面板中選擇 EC2,然後選擇每個執行個體指標
  4. 輸入 instance-id,然後選擇 StatusCheckFailed_InstanceStatusCheckFailed_SystemStatusCheckFailed 以檢閱指標圖。

「因 ELB 系統運作狀態檢查失敗,執行個體已停止服務」

如果您為 Auto Scaling 群組開啟了 Elastic Load Balancing 運作狀態檢查,Amazon EC2 Auto Scaling 會同時執行 Elastic Load Balancing 和 EC2 運作狀態檢查。接著,服務會終止未通過其中一項運作狀態檢查的執行個體。確認您的 Auto Scaling 群組已啟用 Elastic Load Balancing 運作狀態檢查:

  1. 開啟 Amazon EC2 主控台
  2. 在導覽窗格的 Auto Scaling 下,選擇 Auto Scaling 群組,然後選擇執行個體的群組。
  3. 選擇詳細資訊視圖,然後記下運作狀態檢查類型
  4. 如果運作狀態檢查類型為「EC2、ELB」,則 Auto Scaling 群組會啟用 Elastic Load Balancing 運作狀態檢查。

如需詳細資訊,請參閱因 Elastic Load Balancing 系統運作狀態檢查失敗,執行個體已停止服務

在某些情況下,Auto Scaling 群組具有多個l連接的目標群組或負載平衡器。在這種情況下,為使 Amazon EC2 Auto Scaling 認為執行個體運作狀態良好,所有目標群組和負載平衡器都必須將其報告為運作狀態良好。

  1. 在導覽窗格的 Auto Scaling 下,選擇 Auto Scaling 群組
  2. 選擇執行個體的群組,然後選擇詳細資訊視圖。
  3. 請注意負載平衡器目標群組下是否已連接一個以上的負載平衡器。
  4. 選取目標群組負載平衡器
  5. 在導覽窗格的負載平衡下,選擇目標群組,選取您的目標群組,然後選擇監控
  6. 若要確認執行個體是否未通過運作狀態檢查,請檢查狀態運作狀態良好和運作狀態不良的主機指標圖表。

查看 CloudTrail 歷史記錄,確定已暫停的程序是否已延遲終止運作不良的執行個體,直到程序恢復:

  1. 開啟 AWS CloudTrail 主控台
  2. 在導覽窗格中,選取事件歷史記錄
  3. 檢查 SuspendProcessesResumeProcesses API 呼叫的歷史記錄。

「因 EC2 Spot 執行個體中斷通知,執行個體已停止服務。」

Amazon EC2 Auto Scaling 會在下列其中一種情況發生時終止 Spot 執行個體:

  • 已不再提供容量。
  • Spot 價格超過您為執行個體指定的最高價格。

活動歷史記錄可能會顯示該執行個體因運作狀態檢查而從服務中移除。若要驗證終止原因,請檢查 Spot 請求狀態:

  1. 開啟 Amazon EC2 主控台
  2. 在導覽窗格的執行個體下,選擇 Spot 請求
  3. 選取 Spot 請求,選擇描述視圖,然後記下狀態

「因使用者請求,執行個體已停止服務」

檢閱執行個體因任何 TerminateInstanceInAutoScalingGroup API 呼叫而停止服務之時段的 CloudTrail 事件歷史記錄:

  1. 開啟 AWS CloudTrail 主控台
  2. 在導覽窗格中,選取事件歷史記錄
  3. 檢查 TerminateInstanceInAutoScalingGroup API 呼叫的歷史記錄。

「AutoScalingGroup 使用者請求限制條件為最小值: 0、最大值: 2、所需值: 1,將所需容量從 2 變更為 1」

您可以手動變更 Auto Scaling 群組的限制。例如,您可以減少其容量。當您變更限制時,Amazon EC2 Auto Scaling 可能會終止執行個體以符合新設定。

「啟動執行個體以平衡 us-east-1a 區域與其他區域的執行個體」

依預設,Amazon EC2 Auto Scaling 會在所有可用區域間平衡執行個體。當您將新的可用區域新增到 Auto Scaling 群組時,Amazon EC2 Auto Scaling 會在該區域中啟動一個新的執行個體。任何重新平衡都可能終止其他區域中的執行個體。

「執行個體已停止服務,以平衡隨需和 Spot 容量的分配。」

當隨需或 Spot 執行個體的發配發生變更時,相關的 Auto Scaling 群組會重新平衡,以符合您想要的購買選項分配。因此,隨需或 Spot 執行個體可能會終止,以便 Auto Scaling 群組可以取代它們,以實現您想要的購買選項。

「一個狀態為 ALARM 的監控警示 XXX-High-CPU-Utilization 已觸發政策 AAA-scaledown,將所需的容量由 2 變更為 1」

Amazon EC2 Auto Scaling 可根據已設定的 CloudWatch 警示終止群組中的執行個體。檢查群組政策和 CloudWatch 警示歷史記錄。

檢查 Auto Scaling 群組政策:

  1. 開啟 Amazon EC2 主控台
  2. 在導覽窗格的 Auto Scaling 下,選擇 Auto Scaling 群組
  3. 選擇執行個體的群組。
  4. 若要檢視和編輯政策,請選擇自動擴展窗格

檢視 CloudWatch 警示歷史記錄:

  1. 開啟 Amazon CloudWatch 主控台
  2. 在導覽窗格中,選擇警示
  3. 選擇警示,然後選擇歷史記錄視圖。
  4. 檢查歷史記錄是否有警示的任何狀態變更或警示組態的修改。

「因使用者運作狀態檢查,執行個體已停止服務」

您可以在 Amazon EC2 Auto Scaling 中定義自訂運作狀態檢查。當自訂運作狀態檢查判斷執行個體的運作狀態不良時,檢查會手動啟動 SetInstanceHealth。然後,它會將執行個體的狀態設定為運作狀態不良。Amazon EC2 Auto Scaling 會在其下次執行時終止運作不良的執行個體。

「AutoScalingGroup 排程動作更新限制條件為最小值: 1、最大值: 9、所需值: 1,將所需容量從 2 變更為 1」

您可以設定排程動作,來變更 Auto Scaling 群組的最小容量、最大容量或所需容量值。當排程動作降低所需容量時,Amazon EC2 Auto Scaling 會終止一個或多個執行個體以符合新的所需容量。

相關資訊

為什麼 Auto Scaling 群組會縮減規模?

為什麼 Amazon EC2 Auto Scaling 沒有終止運作狀態不良的執行個體?

AWS 官方
AWS 官方已更新 9 個月前