建立預測性擴展政策 - Amazon EC2 Auto Scaling

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

建立預測性擴展政策

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

如果是新的 Auto Scaling 群組,則必須提供至少 24 小時的資料,然後 Amazon EC2 Auto Scaling 才能產生預測。

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

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

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

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

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

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

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

  4. 輸入政策的名稱。

  5. 開啟 Scale based on forecast (依據預測擴展),授予 Amazon EC2 Auto Scaling 許可立即開始擴展。

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

  6. 針對 Metrics (指標),從選項清單中選擇您的指標。選項包括 CPUNetwork In (網路輸入)、Network Out (網路輸出)、Application Load Balancer request count (Application Load Balancer 請求計數),以及 Custom metric pair (自訂指標對)。

    如果選擇了 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. 對於 Target utilization (目標使用率),輸入 Amazon EC2 Auto Scaling 應維護的目標值。Amazon EC2 Auto Scaling 會擴增容量,直到平均使用率達到目標使用率,或直到達到所指定執行個體數目上限為止。

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

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

    網路傳入

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

    網路輸出

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

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

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

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

  9. (選用) 對於 Max capacity behavior (最大容量行為),在預測容量超過定義的最大容量時,選擇是否讓 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. 前往網址 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台,然後從導覽窗格中選擇 Auto Scaling 群組

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

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

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

  4. 輸入政策的名稱。

  5. 開啟 Scale based on forecast (依據預測擴展),授予 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. 對於 Target utilization (目標使用率),輸入 Amazon EC2 Auto Scaling 應維護的目標值。Amazon EC2 Auto Scaling 會擴增容量,直到平均使用率達到目標使用率,或直到達到所指定執行個體數目上限為止。

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

  9. (選用) 對於 Max capacity behavior (最大容量行為),在預測容量超過定義的最大容量時,選擇是否讓 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 群組的預測性擴展政策。將每個使用者輸入預留位置替換為自己的資訊。

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

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

下列範例政策顯示完整的政策組態,該組態會使用 CPU 使用率指標進行預測擴展 (目標使用率為 40)。除非您明確指定要使用的模式,否則依據預設會使用 ForecastOnly 模式。將此組態儲存至名為 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 Resource Name (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 預測和擴展的政策,新增值為 ForecastAndScale 的屬性 Mode 。下列範例顯示使用 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 Resource Name (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 Resource Name (ARN)。

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