關於 Auto Scaling 群組的運作狀態檢查 - Amazon EC2 Auto Scaling

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

關於 Auto Scaling 群組的運作狀態檢查

本主題提供可用運作狀態檢查類型的概觀,並說明整合 Amazon EC2 Auto Scaling 運作狀態檢查與應用程式的關鍵考量。

運作狀態檢查類型

Amazon EC2 Auto Scaling 可以使用下列一或多個運作狀態檢查來判斷InService執行個體的運作狀態:

運作狀態檢查類型 它檢查的服務項目

Amazon EC2 狀態檢查和排程事件

  • 檢查執行個體是否正在執行。

  • 檢查是否有基礎硬體或軟體問題,這些問題可能會影響執行個體。

這是 Auto Scaling 群組的預設運作狀態檢查類型。

Elastic Load Balancing 運作狀態檢查

  • 檢查負載平衡器是否將執行個體報告為運作狀態良好,確認執行個體是否可以處理請求。

若要執行此運作狀態檢查類型,您必須為 Auto Scaling 群組開啟它。

VPC Lattice 運作狀態檢查

  • 檢查 VPC Lattice 是否將執行個體報告為運作狀態良好,確認執行個體是否可以處理請求。

若要執行此運作狀態檢查類型,您必須為 Auto Scaling 群組開啟它。

Amazon EBS 運作狀態檢查

  • 檢查 EBS 磁碟區是否可連線並傳遞 I/O 狀態檢查。

若要執行此運作狀態檢查類型,您必須為 Auto Scaling 群組開啟它。

自訂運作狀態檢查

  • 根據您的自訂運作狀態檢查,檢查可能表示執行個體運作狀態問題的任何其他問題。

Amazon EC2 運作狀態檢查

在執行個體啟動後,該執行個體會連接至 Auto Scaling 群組,並進入 InService 狀態。如需 Auto Scaling 群組中執行個體不同生命週期的詳細資訊,請參閱 Amazon EC2 Auto Scaling 執行個體生命週期

Amazon EC2 Auto Scaling 會定期檢查 Auto Scaling 群組內所有執行個體的運作狀態,藉此確認執行個體是否正在執行且狀態良好。

狀態檢查

Amazon EC2 Auto Scaling 使用 Amazon EC2 執行個體狀態檢查和系統狀態檢查的結果來判斷執行個體的運作狀態。如果執行個體的狀態是 running 以外的任何 Amazon EC2 狀態,或是狀態檢查的狀態變為 impaired,則 Amazon EC2 Auto Scaling 會認定此執行個體運作狀態不佳,並將其取代。這包括執行個體具有下列任何狀態時:

  • stopping

  • stopped

  • shutting-down

  • terminated

Amazon EC2 狀態檢查不需要任何特殊組態,並且會永遠啟用。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的狀態檢查類型

重要

Amazon EC2 Auto Scaling 允許狀態檢查偶爾失敗,而不採取任何動作。當狀態檢查失敗時,Amazon EC2 Auto Scaling 會等待幾分鐘 AWS 讓 修正問題。當執行個體狀態檢查的狀態變為 impaired 時,其不會立即將執行個體標示為 Unhealthy

然而,如果 Amazon EC2 Auto Scaling 偵測到執行個體不再處於 running 狀態,但是,此情況可視為立即失敗。在這種情況下,它會立即將執行個體標記為 Unhealthy並取代它。

排程事件

Amazon EC2 偶爾可以將您執行個體上的事件安排在特定時間戳之後執行。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的執行個體排程事件

若您其中一個執行個體受到排程事件影響,Amazon EC2 Auto Scaling 會認定此執行個體運作狀態不佳,並會進行取代。在達到時間戳記中指定的日期和時間之前,執行個體不會開始關閉。

Elastic Load Balancing 運作狀態檢查

當您開啟 Auto Scaling 群組的 Elastic Load Balancing 運作狀態檢查時,Amazon EC2 Auto Scaling 可以使用這些運作狀態檢查的結果來判斷執行個體的運作狀態。

您必須先設定 Elastic Load Balancing 負載平衡器,並為其設定運作狀態檢查,以判斷您的執行個體是否運作狀態良好,才能開啟 Auto Scaling 群組的 Elastic Load Balancing 運作狀態檢查。如需詳細資訊,請參閱準備連接 Elastic Load Balancing 負載平衡器

將負載平衡器連接至 Auto Scaling 群組後,會發生下列情況:

  • Amazon EC2 Auto Scaling 會向負載平衡器註冊 Auto Scaling 群組中的執行個體。

  • 在執行個體完成註冊後,其會進入 InService 狀態,並可與負載平衡器搭配使用。

預設情況下,Amazon EC2 Auto Scaling 會忽略 Elastic Load Balancing 運作狀態檢查的結果。開啟 Auto Scaling 群組的這些運作狀態檢查後,當 Elastic Load Balancing 將已註冊的執行個體報告為 時Unhealthy,Amazon EC2 Auto Scaling 會在其下一次定期運作狀態檢查Unhealthy上標記執行個體,並加以取代。

如果為負載平衡器啟用連接耗盡 (取消註冊的延遲),Amazon EC2 Auto Scaling 會等待傳送中的請求完成或最長逾時過期 (兩者擇一),再終止運作狀態不佳的執行個體。

注意

如需如何連接負載平衡器並開啟 Auto Scaling 群組 Elastic Load Balancing 運作狀態檢查的說明,請參閱 將 Elastic Load Balancing 負載平衡器連接至 Auto Scaling 群組

當您開啟群組的 Elastic Load Balancing 運作狀態檢查時,Amazon EC2 Auto Scaling 可以取代 Elastic Load Balancing 回報為運作狀態不佳的執行個體,但只有在負載平衡器處於 InService 狀態之後。如需詳細資訊,請參閱確認負載平衡器的連接狀態

VPC Lattice 運作狀態檢查

預設情況下,Amazon EC2 Auto Scaling 會忽略 VPC Lattice 運作狀態檢查的結果。您可以選擇性地為 Auto Scaling 群組開啟這些運作狀態檢查。之後,當 VPC Lattice 將註冊的執行個體報告為 Unhealthy,Amazon EC2 Auto Scaling 會在下次定期執行運作狀態檢查時將執行個體標示為 Unhealthy 並將其取代。註冊執行個體然後檢查其健康狀態的程序,與 Elastic Load Balancing 運作狀態檢查的程序相同。

注意

如需如何連接 VPC Lattice 目標群組和開啟 Auto Scaling 群組 VPC Lattice 運作狀態檢查的說明,請參閱 將 VPC Lattice 目標群組連接到 Auto Scaling 群組

當您開啟群組的 VPC Lattice 運作狀態檢查時,Amazon EC2 Auto Scaling 可以取代 VPC Lattice 回報為運作狀態不佳的執行個體,但僅限於目標群組處於 InService 狀態之後。如需詳細資訊,請參閱確認 VPC Lattice 目標群組的連接狀態

Amazon EC2 Auto Scaling 如何將停機時間降至最低

根據預設,新執行個體會與您現有的執行個體終止同時佈建,這可能會阻止接受新的請求,直到新的執行個體完全運作為止。

如果 Amazon EC2 Auto Scaling 判斷任何執行個體不再執行 (或使用 Unhealthy set-instance-health 命令標記),它會立即取代它們。但是,如果發現其他執行個體運作狀態不佳,Amazon EC2 Auto Scaling 會使用下列方法來從失敗中復原。此方法最大限度地減少因臨時問題或設定錯誤的運作狀態檢查而可能導致的停機時間。

  • 如果擴展活動正在進行中,且您的 Auto Scaling 群組低於其所需的容量達 10% 或更高,Amazon EC2 Auto Scaling 會等待進行中的擴展活動,然後再取代運作狀態不佳的執行個體。

  • 在橫向擴展時,Amazon EC2 Auto Scaling 會等待執行個體通過初始運作狀態檢查。它還會等待預設執行個體完成暖機,以確保新的執行個體準備就緒。

  • 在執行個體完成暖機,且群組已上升到所需容量的 90% 以上後,Amazon EC2 Auto Scaling 會取代運作狀態不佳的執行個體,如下所示:

    • Amazon EC2 Auto Scaling 最高一次僅取代該群組所需容量的 10%。它會執行此操作,直到所有運作狀態不佳的執行個體完成替換。

    • 取代執行個體時,它會等待新執行個體傳遞初始運作狀態檢查。它還會等待預設執行個體完成暖機,然後再繼續作業。

注意

如果 Auto Scaling 群組的大小太小,使得產生的 10% 值小於一個,Amazon EC2 Auto Scaling 會取代一次一個運作狀態不佳的執行個體。這可能會導致群組產生一些停機時間。

此外,如果 Auto Scaling 群組中的所有執行個體都由 Elastic Load Balancing 運作狀態檢查報告為運作狀態不佳,且負載均衡器處於 InService 狀態,Amazon EC2 Auto Scaling 可能會一次把較少的執行個體標示為運作狀態不佳。這可能導致一次替換的執行個體比在其他案例中套用的 10% 少得多。這可讓您有時間修正問題,而不需要 Amazon EC2 Auto Scaling 自動終止整個群組。

暖集區中執行個體的運作狀態檢查

Amazon EC2 Auto Scaling 也會對暖集區中的執行個體執行運作狀態檢查。如需詳細資訊,請參閱檢視運作狀態檢查狀態和運作狀態檢查失敗的原因

運作狀態檢查注意事項

以下是使用 Amazon EC2 Auto Scaling 運作狀態檢查時的考量事項。

  • 如果您需要對正在終止的執行個體或正在啟動的執行個體做些什麼,可以使用 lifecycle hook。使用這些掛鉤,您可以執行自訂動作,如 Amazon EC2 Auto Scaling 啟動或終止執行個體。如需詳細資訊,請參閱Amazon EC2 Auto Scaling lifecycle hook

  • Amazon EC2 Auto Scaling 不提供從運作狀態檢查中移除 Amazon EC2 狀態檢查和排程事件的方法。如果不想要取代執行個體,建議您暫停任何個別 Auto Scaling 群組的 ReplaceUnhealthyHealthCheck 程序。如需詳細資訊,請參閱暫停和繼續 Amazon EC2 Auto Scaling 程序

  • 若要手動將運作不佳的執行個體的運作狀態設回 Healthy,您可以試著使用 set-instance-health 命令。如果您看見錯誤,這可能是因為執行個體已終止。通常,使用 set-instance-health 命令將執行個體的運作狀態設回 Healthy 的作法,只適用於 ReplaceUnhealthy 程序或 Terminate 程序已暫停處理的情況。

  • 如果您需要對執行個體進行故障診斷,而不會受到運作狀態檢查的干擾,您可以將執行個體置於 Standby 狀態。Amazon EC2 Auto Scaling 不會對處於 Standby 狀態的執行個體執行運作狀態檢查,直到您讓執行個體恢復服務為止。如需詳細資訊,請參閱從 Auto Scaling 群組暫時移除執行個體

  • 當您的執行個體終止後,所有與彈性 IP 地址相關聯的設定,都會解除,且不會自動關聯到新的執行個體。您必須手動將這些彈性 IP 地址關聯到新的執行個體,或使用 lifecycle hook 型解決方案自動進行。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的彈性 IP 地址

  • 同樣地,當您的執行個體終止後,其連接的 EBS 磁碟區會分開 (或刪除,具體取決於磁碟區的 DeleteOnTermination 屬性)。您必須手動將這些 EBS 磁碟區連接到新的執行個體,或使用 lifecycle hook 型解決方案自動進行。如需詳細資訊,請參閱「Amazon EBS 使用者指南」中的將 Amazon EBS 磁碟區連接到執行個體