Amazon EC2 Auto Scaling 動態擴展 - Amazon EC2 Auto Scaling

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

Amazon EC2 Auto Scaling 動態擴展

動態擴展會隨著流量變化而擴展 Auto Scaling 群組的容量。

Amazon EC2 Auto Scaling 支援下列動態擴展政策類型:

  • 目標追蹤擴展 — 根據 Amazon CloudWatch 指標和目標值增加和減少群組目前的容量。這與家中溫控器維持溫度的方式類似:您只要選擇溫度,然後溫控器就會完成其他的動作。

  • 步進擴展 - 根據一組擴展值來增加和減少群組目前的容量,也稱為步進調整,會根據警示違規的程度而有不同。

  • 簡易擴展 - 根據單一擴展調整增加和減少群組的目前容量,每個擴展活動之間有一個冷卻時間。

我們強烈建議您使用目標追蹤擴展政策,並選擇與 Auto Scaling 群組容量變更成反比的量度。因此,如果您將「Auto Scaling」群組的大小增加一倍,則量度會減少 50%。如此一來,指標資料就能依比例準確觸發擴展事件。包括平均 CPU 使用率或每個目標的平均要求計數等指標。

透過目標追蹤,您的 Auto Scaling 群組會根據應用程式的實際負載直接比例縮放。這意味著除了滿足應對負載變化的即時容量需求外,目標追蹤政策還可以適應隨時間而發生的負載變化,例如由於季節性變化。

目標追蹤政策也不需要手動定義 CloudWatch 警示和擴展調整。Amazon EC2 自 Auto Scaling 會根據您設定的目標自動處理此問題。

動態擴展政策的運作方式

動態擴展政策會指示 Amazon EC2 Auto Scaling 追蹤特定指 CloudWatch 標,並定義關聯 CloudWatch 警示處於警報狀態時要採取的動作。用於呼叫警示狀態的指標是來自 Auto Scaling 群組中所有執行個體的指標彙總。(例如,假設您有一個 Auto Scaling 群組具有兩個執行個體,其中一個執行個體的 CPU 使用率是 60%,另一個 CPU 使用率是 40%。平均而言,其 CPU 使用率是 50%)。政策生效後,Amazon EC2 Auto Scaling 會在超出警示閾值時,向上或向下調整群組的所需容量。

叫用動態擴展政策時,如果容量計算產生的數字超過群組的大小下限和上限範圍,Amazon EC2 Auto Scaling 會確保新容量永遠不會超過大小限制的下限和上限。容量的測量方式有兩種:使用您在執行個體方面設定所需容量時選擇的相同單位,或使用容量單位 (如果已套用執行個體權重)。

  • 範例 1:Auto Scaling 群組的容量上限為 3,目前容量為 2,以及增加 3 個執行個體的動態擴展政策。叫用此政策時,Amazon EC2 Auto Scaling 只會將 1 個執行個體新增至群組,防止群組超過其大小上限。

  • 範例 2:Auto Scaling 群組的容量下限為 2,目前容量為 3,以及移除 2 個執行個體的動態擴展政策。叫用此政策時,Amazon EC2 Auto Scaling 只會從群組移除 1 個執行個體,防止群組變成小於其大小下限。

當所需容量達到大小上限時,會停止擴增。如果需求下降,而且容量減少,則 Amazon EC2 Auto Scaling 可以再次進行擴增。

例外是當您使用執行個體權重時。在這種情況下,Amazon EC2 Auto Scaling 可以擴增到大小上限以上,但最多只能擴展到您的最大執行個體權重。其目的是盡可能接近新的所需容量,但仍會遵循為該群組指定的配置策略。配置策略會決定要啟動的執行個體類型。權重會根據其執行個體類型決定每個執行個體對群組所需容量有多少容量單位。

  • 範例 3:Auto Scaling 群組的容量上限為 12,目前容量為 10,以及增加 5 個容量單位的動態擴展政策。執行個體類型已指派以下三個權重之一:1、4 或 6。叫用此政策時,Amazon EC2 Auto Scaling 會根據配置策略選擇啟動權重為 6 的執行個體類型。此擴增事件的結果是所需容量為 12 且目前容量為 16 的群組。

多個動態擴展政策

在大部分情況下,目標追蹤擴展政策已足夠設定 Auto Scaling 群組自動擴增或縮減。目標追蹤擴展政策可讓您選擇所需的結果,並令 Auto Scaling 群組視需要新增和移除執行個體,以達成該結果。

對於進階擴展組態而言,Auto Scaling 群組可以擁有多個擴展政策。例如,您可以定義一或多個目標追蹤擴展政策、一或多個步進擴展政策,或兩者兼具。這樣可以提供更大的靈活性,以涵蓋多種情境。

為了說明多個動態擴展政策如何搭配使用,請考慮採用一個使用 Auto Scaling 群組的應用程式,以及一個將請求傳送給群組中單一 EC2 執行個體的 Amazon SQS 佇列。為了確認應用程式在最佳狀態等級下執行,有兩種政策控制 Auto Scaling 群組何時該執行擴增。一個是目標追蹤政策,使用自訂指標,依據佇列中 SQS 訊息的數量新增和移除容量。另一個是步驟擴展政策,當執行個體在指定時間長度內超過 90% 的使用率時,會使用 Amazon 指 CloudWatch CPUUtilization標新增容量。

當多個政策同時生效時,有可能每一個政策同時都會指示 Auto Scaling 群組擴增 (或縮減)。例如,在 SQS 自定義指CPUUtilization標峰值並違反自定義指標 CloudWatch 警報的閾值的同時,指標可能會尖峰並違反警報的閾值。

發生這些情況時,Amazon EC2 Auto Scaling 會選擇對於擴增和縮減均可提供容量上限的政策。例如,假設 CPUUtilization 政策啟動一個執行個體,SQS 佇列政策啟動兩個執行個體。如果擴增條件同時滿足這兩個政策,則 Amazon EC2 Auto Scaling 會優先採用 SQS 佇列政策。這樣會使 Auto Scaling 群組啟動兩個執行個體。

即使各政策使用不同的縮減條件,仍然適用優先選擇能提供容量上限的政策。例如,如果一個政策終止三個執行個體,另一個政策減少 25% 的執行個體數,且群組在縮減時有八個執行個體,Amazon EC2 Auto Scaling 會優先選擇為該群組提供最大數量執行個體的政策。這樣會使 Auto Scaling 群組終止兩個執行個體 (8 的 25% = 2)。這種做法的目的是防止 Amazon EC2 Auto Scaling 移除過多的執行個體。

不過,我們建議您小心使用目標追蹤擴展政策與步進擴展政策,因為這些政策之間的衝突可能會造成非預期行為。例如,如果步進擴展政策在目標追蹤政策準備好縮減之前即啟動縮減活動,則不會封鎖縮減活動。縮減活動完成之後,目標追蹤政策可以指示群組再次進行擴增。