為自動調整資源調整群組建立預測性資源調度規 - Amazon EC2 Auto Scaling

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

為自動調整資源調整群組建立預測性資源調度規

下列程序可協助您使用 AWS Management Console 或建立預測性擴展政策 AWS CLI。

如果「自動擴展」群組是新的,則必須提供至少 24 小時的資料,Amazon EC2 Auto Scaling 才能為其產生預測。

建立預測擴展政策 (主控台)

如果這是您第一次建立預測性擴展政策,建議您使用主控台在預測模式下建立多個預測擴展政策。這可讓您測試不同度量和目標值的潛在影響。您可以為每個 Auto Scaling 群組建立多個預測擴展政策,但只有其中一個政策可用於作用中擴展。

請使用下列程序CPU,使用預先定義的指標 (網路 I/O 或每個目標的 Application Load Balancer 要求計數) 來建立預測資源調度資源調整原則。建立預測擴展政策最簡單的方法是使用預先定義的指標。但如果您偏好使用自訂指標,請參閱 在主控台中建立預測擴展政策 (自訂指標)

建立預測擴展政策
  1. 在開啟 Amazon EC2 主控台 https://console.aws.amazon.com/ec2/,然後從導覽窗格中選擇 Auto Scaling 群組

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

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

  3. Automatic scaling (自動擴展) 索引標籤的 Scaling policies (擴展政策) 中,選擇 Create predictive scaling policy (建立預測擴展政策)。

  4. 輸入政策的名稱。

  5. 開啟「根據預測擴展」,即可授予 Amazon EC2 Auto Scaling 立即開始擴展的權限。

    若要將政策保留在 Forecast only (僅預測) 模式,保持 Scale based on forecast (依據預測擴展) 為關閉。

  6. 針對 Metrics (指標),從選項清單中選擇您的指標。選項包括CPU網路輸入網路輸出、Ap plication Load Balancer 要求計數自訂量度配對

    如果選擇了 Application Load Balancer request count per target (每個目標的 Application Load Balancer 請求計數),則在 Target group (目標群組) 中選擇目標群組。只有將 Application Load Balancer 目標群組連接至 Auto Scaling 群組後,才支援 Application Load Balancer request count per target (每個目標的 Application Load Balancer 請求計數)。

    如果選擇了 Custom metric pair (自訂指標對),則從 Load metric (負載指標) 和 Scaling metric (擴展指標) 下拉式清單中選擇個別指標。

  7. 對於目標使用率,請輸入 Amazon EC2 Auto Scaling 應維護的目標值。Amazon EC2 Auto Scaling 會擴展您的容量,直到平均使用率達到目標使用率為止,或達到您指定的最大執行個體數為止。

    如果擴展指標為... 則目標使用率代表...
    CPU

    理想情況下CPU,每個執行個體應該使用的百分比。

    網路傳入

    每個執行個體在理想情況下應該接收的每分鐘平均位元組數量。

    網路輸出

    每個執行個體在理想情況下應該傳出的每分鐘平均位元組數量。

    每個目標的 Application Load Balancer 請求計數

    每個執行個體在理想情況下應該接收的每分鐘平均請求數量。

  8. (選用) 對於 Pre-launch instances (預先啟動執行個體),選擇您希望預測呼叫增加負載之前啟動執行個體的間隔時間。

  9. (選擇性) 對於最大容量行為,請選擇是否在預測容量超過定義的最大容量時,讓 Amazon EC2 Auto Scaling 向外擴展高於群組的最大容量。開啟此設定讓您能在預測流量達到最高值時擴展容量。

  10. (選用) 對於 Buffer maximum capacity above the forecasted capacity (緩衝區最大容量高於預測容量),選擇預測容量接近或超過容量上限時要使用多少額外容量。指定數值是相對於預測容量的百分比。例如,如果緩衝區為 10,這表示 10% 的緩衝區。因此,如果預測容量為 50 而最大容量為 40,則有效最大容量是 55。

    如果設為 0,Amazon EC2 Auto Scaling 可能會將容量擴展到高於最大容量的容量,但不得超過預測的容量。

  11. 選擇建立預測擴展政策

利用自訂指標,使用以下程序來建立預測擴展政策。自訂量度可以包括由提供的其他量度 CloudWatch 或您發佈的指標 CloudWatch。若要針對每個目標使用CPU網路 I/O 或 Application Load Balancer 要求計數,請參閱在主控台中建立預測擴展政策 (預先定義的指標)

若要利用自訂指標建立預測擴展政策,您必須執行以下操作:

  • 您必須提供原始查詢,讓 Amazon EC2 Auto Scaling 與中的指標互動 CloudWatch。如需詳細資訊,請參閱使用自訂指標的進階預測擴展政策。為了確保 Amazon EC2 Auto Scaling 可以從中擷取指標資料 CloudWatch,請確認每個查詢都傳回資料點。使用 CloudWatch 控制台或操作確認此 CloudWatch GetMetricDataAPI操作。

    注意

    我們在 Amazon EC2 Auto Scaling 主控台的JSON編輯器中提供範例JSON承載。這些範例會為您提供新增其他 CloudWatch 量度所需的索引鍵值配對參考, AWS 或您先前發佈的量度。 CloudWatch您能以這些範例為起點,然後根據需要加以自訂。

  • 如果您使用任何公制數學運算,您必須手動建構JSON以符合您的獨特案例。如需詳細資訊,請參閱使用指標數學表達式。在於政策中使用指標數學之前,應先確認以指標數學表達式為基礎的指標查詢是否有效,且會傳回單一的時間序列。使用 CloudWatch 控制台或操作確認此 CloudWatch GetMetricDataAPI操作。

如果因為提供錯誤的資料 (例如錯誤的 Auto Scaling 群組名稱) 而在查詢中發生錯誤,則預測將不會有任何資料。如需自訂指標問題的疑難排解,請參閱 預測性擴展政策中自訂指標的考量

建立預測擴展政策
  1. 在開啟 Amazon EC2 主控台 https://console.aws.amazon.com/ec2/,然後從導覽窗格中選擇 Auto Scaling 群組

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

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

  3. Automatic scaling (自動擴展) 索引標籤的 Scaling policies (擴展政策) 中,選擇 Create predictive scaling policy (建立預測擴展政策)。

  4. 輸入政策的名稱。

  5. 開啟「根據預測擴展」,即可授予 Amazon EC2 Auto Scaling 立即開始擴展的權限。

    若要將政策保留在 Forecast only (僅預測) 模式,保持 Scale based on forecast (依據預測擴展) 為關閉。

  6. 針對 Metrics (指標),選擇 Custom metric pair (自訂指標對)。

    1. 對於「載入量度」,請選擇「自訂 CloudWatch 量度」以使用自訂量度。建構包含原則之載入測量結果定義的JSON承載,並將其貼到JSON編輯器方塊中,取代方塊中已有的內容。

    2. 對於「縮放」量度,請選擇「自訂 CloudWatch 量度」以使用自訂量度。建構包含原則之縮放量度定義的JSON承載,並將其貼到JSON編輯器方塊中,取代方塊中已有的內容。

    3. (選用) 若要新增自訂容量指標,請選取 Add custom capacity metric (新增自訂容量指標) 的核取方塊。建構包含原則之容量測量結果定義的JSON承載,並將其貼到JSON編輯器方塊中,取代方塊中已有的內容。

      如果容量指標資料橫跨多個 Auto Scaling 群組,您只需啟用此選項即可為容量建立新的時間序列。在此情況下,您必須使用指標數學將資料彙總為單一時間序列。

  7. 對於目標使用率,請輸入 Amazon EC2 Auto Scaling 應維護的目標值。Amazon EC2 Auto Scaling 會擴展您的容量,直到平均使用率達到目標使用率為止,或達到您指定的最大執行個體數為止。

  8. (選用) 對於 Pre-launch instances (預先啟動執行個體),選擇您希望預測呼叫增加負載之前啟動執行個體的間隔時間。

  9. (選擇性) 對於最大容量行為,請選擇是否在預測容量超過定義的最大容量時,讓 Amazon EC2 Auto Scaling 向外擴展高於群組的最大容量。開啟此設定讓您能在預測流量達到最高值時擴展容量。

  10. (選用) 對於 Buffer maximum capacity above the forecasted capacity (緩衝區最大容量高於預測容量),選擇預測容量接近或超過容量上限時要使用多少額外容量。指定數值是相對於預測容量的百分比。例如,如果緩衝區為 10,這表示 10% 的緩衝區。因此,如果預測容量為 50 而最大容量為 40,則有效最大容量是 55。

    如果設為 0,Amazon EC2 Auto Scaling 可能會將容量擴展到高於最大容量的容量,但不得超過預測的容量。

  11. 選擇建立預測擴展政策

建立預測擴展政策 (AWS CLI)

使用下 AWS CLI 列步驟來設定 Auto Scaling 群組的預測性擴展政策。替換每個 user input placeholder 使用您自己的信息。

如需有關可指定指 CloudWatch 標的詳細資訊,請參閱 Amazon EC2 Auto Scaling API 參考PredictiveScalingMetricSpecification中的。

範例 1:建立預測但不擴展的預測擴展政策

下列範例原則顯示完整的原則組態,其使用CPU率指標進行預測性擴展,目標使用率為40ForecastOnly預設會使用 mode,除非您明確指定要使用的模式。將此組態儲存至名為 config.json 的檔案。

{ "MetricSpecifications": [ { "TargetValue": 40, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ASGCPUUtilization" } } ] }

若要從命令列建立原則,請使用指定的組態檔執行put-scaling-policy命令,如下列範例所示。

aws autoscaling put-scaling-policy --policy-name cpu40-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json

如果成功,此命令會傳回政策的 Amazon 資源名稱 (ARN)。

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/cpu40-predictive-scaling-policy", "Alarms": [] }

範例 2:預測並擴展的預測擴展政策

對於允許 Amazon EC2 Auto Scaling 預測和擴展的政策,請新增值為Mode的屬性ForecastAndScale。下列範例顯示使用 Application Load Balancer 請求計數指標的政策組態。目標使用率為 1000,且預測擴展會設定為 ForecastAndScale 模式。

{ "MetricSpecifications": [ { "TargetValue": 1000, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ALBRequestCount", "ResourceLabel": "app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff" } } ], "Mode": "ForecastAndScale" }

若要建立此原則,請使用指定的組態檔執行put-scaling-policy命令,如下列範例所示。

aws autoscaling put-scaling-policy --policy-name alb1000-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json

如果成功,此命令會傳回政策的 Amazon 資源名稱 (ARN)。

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:19556d63-7914-4997-8c81-d27ca5241386:autoScalingGroupName/my-asg:policyName/alb1000-predictive-scaling-policy", "Alarms": [] }

範例 3:可擴展為高於容量上限的預測擴展政策

下列範例顯示當您需要處理高於正常負載時,如何建立可以擴展為高於群組大小上限的政策。根據預設,Amazon EC2 Auto Scaling 不會將您的EC2容量擴展到高於定義的最大容量。然而,以稍微多一些容量讓它擴展得稍高一些,有助於避免效能或可用性問題。

若要在預測容量達到或非常接近群組的大小上限時,為 Amazon EC2 Auto Scaling 提供佈建額外容量的空間,請指定MaxCapacityBreachBehaviorMaxCapacityBuffer屬性,如以下範例所示。您必須指定數值為 IncreaseMaxCapacityMaxCapacityBreachBehavior。群組可擁有的執行個體的最大數量取決於 MaxCapacityBuffer 的數值。

{ "MetricSpecifications": [ { "TargetValue": 70, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ASGCPUUtilization" } } ], "MaxCapacityBreachBehavior": "IncreaseMaxCapacity", "MaxCapacityBuffer": 10 }

在此範例中,政策設定為使用 10% 的緩衝區 ("MaxCapacityBuffer": 10),因此如果預測容量為 50 而最大容量為 40,則有效的最大容量是 55。如果政策可將容量擴展至高於容量上限,以便等於但不超過預測容量,則緩衝區為 0 ("MaxCapacityBuffer": 0)。

若要建立此原則,請使用指定的組態檔執行put-scaling-policy命令,如下列範例所示。

aws autoscaling put-scaling-policy --policy-name cpu70-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json

如果成功,此命令會傳回政策的 Amazon 資源名稱 (ARN)。

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:d02ef525-8651-4314-bf14-888331ebd04f:autoScalingGroupName/my-asg:policyName/cpu70-predictive-scaling-policy", "Alarms": [] }