Spot Fleet 的自動擴展 - Amazon Elastic Compute Cloud

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

Spot Fleet 的自動擴展

自動擴展是根據需求自動增加或減少 Spot Fleet 目標容量的能力。Spot Fleet 可以在您選擇的範圍內,啟動執行個體 (向外擴展) 或終止執行個體 (向內擴展),以回應一個或多個擴展政策。

Spot Fleet 支援以下類型的自動擴展:

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

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

  • 排程的擴展 – 根據日期和時間,來增加或減少機群目前的容量。

如果您要使用執行個體權重,請記住 Spot Fleet 可視需要超過目標容量。已實現的容量可以是浮點數,但目標容量必須是整數,因此 Spot Fleet 會四捨五入為下一個整數。如果檢視警示觸發時擴展政策的結果,您必須將這些行為列入考量。例如,假設目標容量為 30、已實現的容量為 30.1,則規模調整政策會減掉 1。當警示觸發時,自動擴展程序會從 30.1 減掉 1 而得出 29.1,然後再四捨五入為 30,因此不需採取規模調整動作。在另一個範例中,假設選擇了 2、4 和 8 的執行個體權重,而目標容量為 10,但沒有可用的權重 2 執行個體,因此 Spot Fleet 針對已實現的容量 12 佈建權重為 4 和 8 的執行個體。如果規模調整政策將目標容量減少了 20%,而且警示已觸發,則自動擴展程序會從 12 減掉 12*0.2 而得出 9.6,然後再四捨五入為 10,因此不需採取規模調整動作。

您為 Spot Fleet 建立的擴展政策支援冷卻時間。這是在擴展活動完成之後,先前的觸發相關擴展活動還能影響未來擴展活動的秒數。如果使用向外擴展政策,則在冷卻時間仍有效時,由先前起始冷卻時間的向外擴展事件所新增的容量,會在計算時列入下次向外擴展所需容量的一部分。這種做法的目的是連續的向外擴展 (但並非過度)。如果使用向內擴展政策,在冷卻時間尚未到期之前,會利用此期間來封鎖請求中後續的擴展。這種做法的目的是保守地進行擴展,以保障應用程式的可用性。不過,如果在向內擴展後的冷卻時間內,有另一個警示觸發了向外擴展政策,則自動擴展功能會立即擴展可擴展的目標。

建議您依據 1 分鐘頻率的基於執行個體指標進行擴展,因為這樣能確保更快速地回應使用率變更。5 分鐘頻率的擴展指標可能會導致較慢的回應時間和用到過時的指標資料進行擴展。若要 CloudWatch 在 1 分鐘內將執行個體的指標資料傳送至,您必須特別啟用詳細監控。如需詳細資訊,請參閱 啟用或關閉執行個體的詳細監控使用已定義的參數建立 Spot Fleet 請求 (主控台)

如需設定 Spot Fleet 擴展的詳細資訊,請參閱以下資源:

Spot Fleet 自動擴展所需的 IAM 許可

透過 Amazon EC2、Amazon CloudWatch 和應用程式自動擴展 API 的組合,可實現競價型叢集的自動擴展。Spot 叢集請求是使用 Amazon EC2 建立的,使用建立警示 CloudWatch,並使用應用程式自動擴展建立擴展政策。

除了 Spot 機群和 Amazon EC2 的 IAM 許可之外,存取機群擴展設定的使用者必須擁有支援動態擴展之服務的適當許可。使用者必須具備使用以下範例政策中各項動作的許可。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:*", "ec2:DescribeSpotFleetRequests", "ec2:ModifySpotFleetRequest", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarmHistory", "cloudwatch:DescribeAlarms", "cloudwatch:DescribeAlarmsForMetric", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "cloudwatch:PutMetricAlarm", "cloudwatch:DisableAlarmActions", "cloudwatch:EnableAlarmActions", "iam:CreateServiceLinkedRole", "sns:CreateTopic", "sns:Subscribe", "sns:Get*", "sns:List*" ], "Resource": "*" } ] }

您也可以建立自己的 IAM 政策,以便具有更精細的 Application Auto Scaling API 呼叫許可。如需詳細資訊,請參閱Application Auto Scaling使用者指南中的身分身分驗證與存取控制

應用程式 Auto Scaling 服務還需要權限來描述您的競價型叢集和 CloudWatch 警報,以及代表您修改 Spot 叢集目標容量的權限。如果您為 Spot Fleet 啟用自動擴展,則會建立名為 AWSServiceRoleForApplicationAutoScaling_EC2SpotFleetRequest 的服務連結角色。此服務連結角色會授與 Application Auto Scaling 許可以描述政策的警示、監控機群目前的容量,以及修改機群的容量。Application Auto Scaling 的原始受管 Spot Fleet 角色為 aws-ec2-spot-fleet-autoscale-role,但已不再需要。服務連結的角色預設為 Application Auto Scaling。如需詳細資訊,請參閱Application Auto Scaling使用者指南中的服務連結角色