為什麼 Amazon EC2 自動擴展沒有終止運作狀態不良的執行個體?

2 分的閱讀內容
0

我有一個 Amazon Elastic Compute Cloud (Amazon EC2) 自動擴展群組設定,但它不會終止運作狀態不良的 Amazon EC2 執行個體。我該如何解決這個問題?

簡短說明

Amazon EC2 Auto Scaling 能夠使用 Amazon EC2 狀態檢查和 彈性負載平衡 (ELB) 運作狀態檢查,自動判斷執行個體的運作狀態。Amazon EC2 Auto Scaling 群組的所有擴展動作都會記錄在 Amazon EC2 主控台的活動歷史記錄中。有時候您無法確定為什麼 Amazon EC2 Auto Scaling 無法僅從活動歷史記錄中終止運作狀態不良的執行個體。

您可以在 Amazon EC2 主控台中找到有關運作狀態不良的執行個體狀態以及如何終止該執行個體的進一步詳細資訊。檢查下列設定:

  • 運作狀態檢查寬限期
  • 暫停流程
  • EC2 主控台中的執行個體狀態
  • Auto Scaling 群組中的執行個狀態
  • ELB 運作狀態檢查

解決方法

首先,請注意 Amazon EC2 Auto Scaling 中執行個體的狀態:

  1. 登入 Amazon EC2 主控台。在「 自動擴展」底下的功能窗格中,選擇「 Auto Scaling 群組」,然後選取執行個體的群組。
  2. 選擇「 執行個體」視圖,並記下執行個體的運作狀態。

**運作狀態檢查寬限期 **

運作狀態檢查寬限期到期之前,Amazon EC2 Auto Scaling 不會終止根據 EC2 狀態檢查和 ELB 運作狀態檢查投入服務的執行個體。若要尋找寬限期長度:

  1. 在「 Amazon EC2 主控台導覽窗格的「 自動擴展」下,選擇 Auto Scaling 群組」,然後選取執行個體的群組。
  2. 選擇「 詳細資料」視圖,並記下運作狀態檢查寬限期長度。

暫停流程

運作狀態檢查、替換狀態不良或終止等程序的暫停會影響 Amazon EC2 Auto Scaling 偵測、更換或終止運作狀態不良執行個體的能力:

  1. Amazon EC2 主控台導覽窗格的「 自動擴展」下,選擇「 Auto Scaling 群組」,然後選取執行個體的群組。
  2. 選擇「 詳細資訊」視圖。
  3. 選擇「 編輯」,並從「 暫停的處理程序」中移除下列任何程序(如有): 運作狀態檢查替換運作狀態不良或**終止 **。
  4. 選擇「 儲存」以繼續處理程序。

Amazon EC2 主控台中的執行個體狀態

Amazon EC2 自動擴展不會立即終止狀態失效的執行個體。相反地,Amazon EC2 自動擴展會等待幾分鐘,讓執行個體復原。若要檢查執行個體是否失效:

  1. 在「 Amazon EC2 主控台導覽窗格的「 執行個體()下,選擇「 執行個體(),然後選取執行個體。
  2. 選擇「 狀態檢查」視圖,並記下執行個體的狀態是否為失效」。

Amazon EC2 Auto Scaling 也可能會延遲或不終止無法回報資料以進行狀態檢查的執行個體。當 Amazon CloudWatch 中的狀態檢查指標資料不足時,通常會發生這種情況。若要手動終止這些執行個體處理:

  1. 在「 Amazon EC2 主控台導覽窗格的「 執行個體()下,選擇「 執行個體(),然後選取執行個體。
  2. 選擇「 監視」視圖並記下執行個體的狀態。
  3. 如果狀態為「 資料不足」,請再次選取執行個體,選擇「 動作」功能表,選擇「 執行個體狀態」,然後選擇「 終止」。

Auto Scaling 群組中的執行個體狀態

Amazon EC2 自動擴展不會對處於待命狀態的執行個體執行運作狀態檢查。將待命執行個體設回「服務中」狀態:

  1. 在「 Amazon EC2 主控台導覽窗格的「 Auto Scaling 群組」下,選取執行個體的群組,然後選擇「 執行個體」視圖。
  2. 選擇篩選功能表「 任何生命週期狀態」,然後選取「 待命」。
  3. 若要繼續運作狀態檢查,請開啟執行個體的內容 (按一下滑鼠右鍵) 功能表,然後選擇「 設定為服務中」,即出現「 結束待命狀態

如果執行個體正在等待 lifecycle hook 完成,Amazon EC2 Auto Scaling 會等待執行個體終止。若要尋找生命週期狀態並完成 lifecycle hook:

  1. 在「 Amazon EC2 主控台導覽窗格的「 自動擴展」下,選擇 Auto Scaling 群組」,然後選取執行個體的群組。
  2. 選擇「 執行個體」視圖,並記下執行個體的「 生命週期」狀態。
  3. 如果狀態為 terminating:wait,您可以檢查活動訊號逾時,然後執行completing-lifecycle-action 來完成 lifecycle hook。

如果 Amazon EC2 Auto Scaling 正在等待 ELB 連接耗盡期間完成,則會等待終止執行個體:

  1. 在「 Amazon EC2 主控台導覽窗格的「 自動擴展」下,選擇 Auto Scaling 群組」,然後選取執行個體的群組。
  2. 選擇「 執行個體」視圖,並確認執行個體的生命週期正在終止
  3. 選擇「 活動歷史記錄」視圖。
  4. 針對「 篩選器」,選取「 等待 ELB 連接耗盡」,以確認群組是否正在等待終止執行個體。

ELB 運作狀態檢查

ELB 設定可能會影響運作狀態檢查和執行個體取代。請注意 ELB 主控台上執行個體的狀態:

  1. Amazon EC2 主控台導覽窗格的 負載平衡」下,選擇「 負載平衡器」,然後選取要向其註冊執行個體的負載平衡器。
  2. 選擇「 執行個體」視圖,並記下執行個體的狀態和說明。

當群組的運作狀態檢查組態設定為 EC2 時,Amazon EC2 Auto Scaling 不會使用 ELB 運作狀態檢查的結果來確定執行個體的運作狀態。因此,Amazon EC2 自動擴展不會終止未通過 ELB 運作狀態檢查的執行個體。如果 ELB 主控台上執行個體的狀態為 OutoFService,但在 Amazon EC2 Auto Scaling 主控台上執行個體的狀態為「運作良好」,請確認運作狀態檢查類型已設定為 ELB:

  1. 在「 Amazon EC2 主控台導覽窗格的「 自動擴展」下,選擇 Auto Scaling 群組」,然後選取執行個體的群組。
  2. 選擇「 詳細資料」視圖並記下「 運作狀態檢查類型」。
  3. 選擇「 編輯」並為「 運作狀態檢查類型」選取「 ** ELB **」,然後選擇「 儲存」。

如果群組的運作狀態檢查類型已經是 ELB,而 ELB 主控台上的執行個體狀態為 OutofService,請使用您先前提到的狀態描述來判斷進一步的步驟:

  • 執行個體註冊仍在進行中:等待負載平衡器完成執行個體註冊,並讓執行個體進入 InService 狀態。
  • 執行個體位於未將 LoadBalancer 設定為將流量路由到的 Amazon EC2 可用區域中編輯 Auto Scaling 群組或負載平衡器的子網路,以確保它們與執行個體的子網路相同。
  • 執行個體尚未連續通過設定的 HealthyThreshold 運作狀態檢查數目:等待 ELB 完成運作狀態檢查,並且執行個體進入 InService 狀態。

相關資訊

針對狀態檢查失敗的執行個體進行疑難排解

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

AWS 官方
AWS 官方已更新 2 年前