設定 Auto Scaling 群組的預設執行個體暖機期 - Amazon EC2 Auto Scaling

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

設定 Auto Scaling 群組的預設執行個體暖機期

CloudWatch 收集並彙總整個 Auto Scaling 執行個體的使用情況資料,例如 CPU 和網路 I/O。您可以使用這些指標來建立擴展政策,而這些政策會根據所選指標值的增加和減少來調整 Auto Scaling 群組中的執行個體數量。

您可以指定執行處理在將使用InService狀態提供給聚總測量結果之前等待的時間長度。這個指定的時間稱為預設執行個體暖機。這樣可防止動態擴展受到尚未處理應用程式流量且運算資源暫時高使用率的個別執行個體的指標影響。

為了最佳化目標追蹤和步驟擴展政策的效能,我們強烈建議您啟用並設定預設執行個體暖機。默認情況下未啟用或配置它。

啟用預設執行個體暖機時,請記住,如果 Auto Scaling 群組設定為使用執行個體維護政策,或者您使用執行個體重新整理來取代執行個體,您可以防止執行個體在完成初始化之前計入最低運作狀態百分比。

擴展效能考量

對於大多數應用程式來說,只要有一個預設執行個體暖機時間,可套用至所有功能,而不是不同功能的不同暖機時間。例如,如果您未設定預設執行個體暖機,執行個體重新整理功能會使用健康狀態檢查寬限期做為預設暖機時間。如果您有任何目標追蹤和步數調整政策,它們會使用為預設冷卻時間設定的值作為預設暖機時間。如果您有任何預測性擴展政策,則它們沒有預設的預熱時間。

當執行個體正在預熱時,只有在未預熱的執行個體的指標值大於政策的警示高閾值 (或目標追蹤擴展政策的目標使用率) 時,您的動態擴展政策才會向外擴充。如果需求減少,動態擴展會變得更加保守,以保護應用程式的可用性。這會阻止縮放活動以進行動態縮放,直到新執行個體完成預熱為止。

在向外擴展時,Amazon EC2 Auto Scaling 會在決定要新增多少個執行個體到群組時,將正在暖機的執行個體視為群組容量的一部分。因此,需要添加類似容量的多個警報漏洞會導致單個擴展活動。目的是不斷向外擴展,而不會過度這樣做。

如果未啟用預設執行個體暖機,則執行個體在傳送指標 CloudWatch 並將其計入目前容量之前等待的時間會因執行個體而異。因此,與發生的實際工作負載相比,擴展政策可能會無法預測地執行。

例如,假設具有週期性 on-and-off 工作負載模式的應用程式。預測擴展政策可用於針對是否增加執行個體數量做出週期性決策。由於預測性擴展政策沒有預設的預熱時間,因此執行個體會立即開始貢獻彙總指標。如果這些執行個體在啟動時有較高的資源使用量,則新增執行個體可能會導致彙總指標激增。這可能會影響使用這些指標的任何動態擴展政策,視使用量穩定下來所需的時間而定。如果違反動態擴展政策的高警示閾值,則群組的大小會再次增加。當新的執行個體正在暖機時,縮減活動將被阻止。

選擇預設執行個體暖機時間

設定預設執行個體暖機期的關鍵在於確定執行個體完成初始化所需的時間,以及在執行個體達到 InService 狀態後資源消耗穩定下來所需的時間。選擇執行個體暖機時間時,請嘗試在收集合法流量的使用情況資料,以及將啟動時暫時使用量峰值相關的資料收集降到最低之間保持最佳平衡。

假設您有一個 Auto Scaling 群組連接到 Elastic Load Balancing 負載平衡器。新的執行個體完成啟動後,它們會註冊到負載平衡器,然後再進入 InService 狀態。在執行個體進入 InService 狀態後,資源耗用仍然會遇到暫時峰值,並需要時間來穩定。例如,相較於無需下載大型資產的輕量型 Web 伺服器,必須下載和快取大型資產的應用程式伺服器的資源耗用需要更長的穩定時間。執行個體暖機期提供了穩定資源耗用所需的時間延遲。

重要

如果您不確定預熱時間需要多少時間,可以從 300 秒開始。然後逐漸減少或增加它,直到您為應用程式取得最佳的擴充效能為止。您可能需要執行幾次才能正確執行此操作。或者,如果您有任何擴展政策具有自己的暖機時間 (EstimatedInstanceWarmup),則可以使用此值來啟動。如需詳細資訊,請參閱 使用先前設定的執行個體預熱時間尋找擴展政策

可以考慮將生命週期關聯用於在啟動時要執行組態任務或指令碼的使用案例。生命週期關聯可以延遲新的執行個體投入使用,直到其完成初始化。它們特別適用於您的自舉指令碼需要一段時間才能完成的情況。如果您新增 lifecycle hook,則可以減少預設執行個體暖機期的值。如需有關 lifecycle hook 的詳細資訊,請參閱 Amazon EC2 Auto Scaling lifecycle hook

為群組啟用預設執行個體暖機期

您可以在建立 Auto Scaling 群組時啟用預設執行個體暖機期。您也可以為現有的群組啟用此功能。

啟用預設的執行個體暖機功能後,您就不必再為下列功能指定暖機參數值:

Console
為新群組啟用預設執行個體暖機期 (主控台)

當您建立 Auto Scaling 群組時,於 Configure advanced options (設定進階選項) 頁面的 Additional settings (其他設定) 中,選取 Enable default instance warmup (啟用預設執行個體暖機期) 選項。選擇應用程式所需的預熱時間。

AWS CLI
為新群組啟用預設執行個體暖機期 (AWS CLI)

要為 Auto Scaling 群組啟用預設執行個體暖機期,請新增 --default-instance-warmup 選項並指定一個值 (以秒為單位),範圍從 0 到 3600。啟用後,-1 的值將關閉此設定。

以下 create-auto-scaling-group 命令會建立一個名為 my-asg 的 Auto Scaling 群組,並啟用值為 120 秒的預設執行個體暖機期。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120 ...
提示

如果此命令引發錯誤,請確保您已將本 AWS CLI 地更新為最新版本。

Console
為現有群組啟用預設執行個體暖機期 (主控台)
  1. 前往網址 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台,然後從導覽窗格中選擇 Auto Scaling 群組

  2. 在螢幕上方的導覽列中,選擇您在建立 Auto Scaling 群組時所在的 AWS 區域 。

  3. 選取 Auto Scaling 群組旁的核取方塊。

    頁面底部會開啟一個分割窗格。

  4. Details (詳細資訊) 索引標籤上,選擇 Advanced configurations (進階組態)、Edit (編輯)。

  5. 在「預設執行個體暖機」中,選擇應用程式所需的暖機時間。

  6. 選擇更新

AWS CLI
為現有群組啟用預設執行個體暖機期 (AWS CLI)

以下範例使用 update-auto-scaling-group 命令名為 my-asg 的現有 Auto Scaling 群組啟用預設執行個體暖機期,且其值為 120 秒。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120
提示

如果此命令引發錯誤,請確保您已將本 AWS CLI 地更新為最新版本。

驗證群組的預設執行個體暖機期

驗證 Auto Scaling 群組的預設執行個體暖機期 (AWS CLI)

使用以下 describe-auto-scaling-groups 命令。將 my-asg 取代為您的 Auto Scaling 群組名稱。

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

以下是回應範例。

{ "AutoScalingGroups": [ { "AutoScalingGroupName": "my-asg", "AutoScalingGroupARN": "arn", ... "DefaultInstanceWarmup": 120 } ] }

使用先前設定的執行個體預熱時間尋找擴展政策

若要識別您是否擁有自己的預機時間的原則EstimatedInstanceWarmup,請使用執行下列描述政策命令。 AWS CLI將 my-asg 取代為您的 Auto Scaling 群組名稱。

aws autoscaling describe-policies --auto-scaling-group-name my-asg --query 'ScalingPolicies[?EstimatedInstanceWarmup!=`null`]'

下列為範例輸出。

[ { "AutoScalingGroupName":"my-asg", "PolicyName":"cpu50-target-tracking-scaling-policy", "PolicyARN":"arn", "PolicyType":"TargetTrackingScaling", "StepAdjustments":[], "EstimatedInstanceWarmup":120, "Alarms":[{ "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e", "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e" }, { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2", "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2" }], "TargetTrackingConfiguration":{ "PredefinedMetricSpecification":{ "PredefinedMetricType":"ASGAverageCPUUtilization" }, "TargetValue":50.0, "DisableScaleIn":false }, "Enabled":true }, ... additional policies ... ]

清除先前為擴展政策設定的執行個體暖機期

啟用預設執行個體暖機之後,請更新任何仍有自己暖機時間的資源調整政策,以清除先前設定的值。否則,它將覆寫預設的執行個體暖機期。

您可以使用主控台或 AWS SDK 更新擴展政策。 AWS CLI本章節介紹使用主控台的步驟。如果您使用 AWS CLI 或 AWS SDK,請確定您保留現有的原則組態,但移除該EstimatedInstanceWarmup內容。當您更新現有的資源調整政策時,政策將被您以程式設計方式呼叫 P PutScalingolicy 時指定的內容取代。不會保留原始值。

清除先前為擴展政策設定的執行個體暖機期 (主控台)
  1. 前往網址 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台,然後從導覽窗格中選擇 Auto Scaling 群組

  2. 選取 Auto Scaling 群組旁的核取方塊。

    頁面底部會開啟一個分割窗格。

  3. 自動擴展索引標籤的動態擴展政策中,選擇您感興趣的政策,然後選擇動作編輯

  4. 針對「執行個體暖機」,請清除執行個體暖機值,改為使用預設的執行個體暖機值。

  5. 選擇更新