Amazon AppStream 2.0 的車隊自動擴展 - Amazon AppStream 2.0

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

Amazon AppStream 2.0 的車隊自動擴展

叢集 Auto Scaling 可讓您自動變更 AppStream 2.0 永遠在線或隨需叢集的大小,以符合使用者需求的可用執行個體供應。機群的大小會決定可同時串流的使用者數量。對於多工作階段機群,可以多個使用者使用單一執行個體。對於非多工作階段機群,每個使用者工作階段都需要一個執行個體。您可以根據執行個體 (針對單一工作階段機群) 和使用者工作階段 (針對多工作階段機群) 來指定機群容量。根據您的機群組態和自動擴展政策,將提供所需數量的執行個體。您可以根據各種使用率指標定義調整規模政策,以自動調整機群的大小,並根據使用者的需求最佳化可用執行個體的數量。您也可以選擇關閉自動調整規模,讓機群以固定的大小執行。

注意

彈性叢集容量由 AppStream 2.0 自動為您管理。您不需要建立自動擴展規則來管理彈性機群可用的機群串流執行個體數量。

注意

在開發 AppStream 2.0 叢集擴充計劃時,請確定您的網路組態符合您的需求。

在您可以使用叢集 Auto Scaling 之前,Application Auto Scaling 需要存取 Amazon CloudWatch 警示和 AppStream 2.0 叢集的權限。如需詳細資訊,請參閱 使用 AWS 受管理的原則和連結的角色來管理 AppStream 2.0 資源的管理員存取使用 IAM 政策管理對應用程式自動擴展的管理員存取

注意

使用擴展時,您可以使用應用程式自動擴展 API。為了讓叢集 Auto Scaling 能夠正常運作 AppStream 2.0,Application Auto Scaling 需要描述和更新 AppStream 2.0 叢集並描述 Amazon CloudWatch 警示的權限,以及代表您修改叢集容量的權限。如需詳細資訊,請參閱 AppStream 2.0、Application Auto Scaling 和 Cer AWS tificate Manager 私有 CA 所需的角色使用 IAM 政策管理對應用程式自動擴展的管理員存取

下列主題提供的資訊可協助您瞭解並使用 AppStream 2.0 叢集 Auto Scaling。

調整規模概念

AppStream 2.0 縮放由應用程式自動調整提供。如需詳細資訊,請參閱《Application Auto Scaling API 參考》。

如需使用 AppStream 2.0 叢集 Auto Scaling 的 step-by-step 指引,請參閱AWS 運算部落格的使用 Amazon AppStream 2.0 擴展桌面應用程式串流

若要有效地使用機群 Auto Scaling,您必須了解下列術語和概念。

比較多工作階段與單一工作階段

在單一工作階段案例中,每個使用者工作階段都有其專用預留執行個體。在多工作階段模式中,可在一個執行個體上佈建多個使用者工作階段。機群容量和自動擴展政策必須根據使用者工作階段進行設定,而且服務將會計算並啟動所需的執行個體數量。

機群的最小容量/使用者工作階段數量下限

執行個體數量下限 (針對單一工作階段機群) 或使用者工作階段數量下限 (針對多工作階段機群)。執行個體的數量 (針對單一工作階段機群) 或使用者工作階段的數量 (針對多工作階段機群) 不可低於此值,且擴展政策不會將您機群的規模調整到低於此值。例如,在單一工作階段案例中,如果您將機群的容量下限設定為 2,機群所擁有的執行個體數量便永遠不會少於 2 個。同樣地,在多工作階段案例中,執行個體上的工作階段數量上限設為 5 的情況下,如果您將機群的最小容量設定為 12,則機群擁有的執行個體數量四捨五入後將永遠不會少於 (12/5) = 3 個。

機群的最大容量/使用者工作階段數量上限

執行個體數量上限 (針對單一工作階段機群) 或使用者工作階段數量上限 (針對多工作階段機群)。執行個體的數量 (針對單一工作階段機群) 或使用者工作階段的數量 (針對多工作階段機群) 不可高於此值,且擴展政策不會將您機群的規模調整到高於此值。例如,在單一工作階段案例中,如果您將機群的容量上限設定為 10,機群所擁有的執行個體數量便永遠不會超過 10 個。同樣地,在多工作階段案例中,執行個體上的工作階段數量上限設為 5 的情況下,如果您將機群的最大容量設定為 52,則機群擁有的執行個體數量四捨五入後將永遠不會超過 (52/5) = 11 個。

所需容量

執行中或待定的執行個體總數 (針對單一工作階段機群) 或使用者工作階段總數 (針對多工作階段機群)。此值表示在穩定狀態下,您的機群可支援的並行串流工作階段的總數。若要設定 Desired Capacity (所需的容量) 值,請編輯 Fleet Details (機群詳細資料)。當您使用擴展政策時,我們不建議手動變更所需容量值。

如果 Desired Capacity (所需的容量) 的值設為低於 Minimum Capacity (容量下限) 的值,且觸發向外調整規模活動,則 Application Auto Scaling 會將 Desired Capacity (所需的容量) 的值向上調整規模到 Minimum Capacity (容量下限) 的值,並根據調整規模政策繼續視需要向外調整規模。但是,在此案例中,向內調整規模活動不會調整 Desired Capacity (所需的容量),因為它已低於 Minimum Capacity (容量下限) 的值。

如果 Desired Capacity (所需的容量) 的值設為高於 Maximum Capacity (容量上限) 的值,且觸發向內調整規模活動,則 Application Auto Scaling 會將 Desired Capacity (所需的容量) 的值向下調整規模到 Maximum Capacity (容量上限) 的值,並根據調整規模政策繼續視需要向內調整規模。但是,在此案例中,向外調整規模活動不會調整 Desired Capacity (所需的容量),因為它已高於 Maximum Capacity (容量上限) 的值。

調整規模政策動作

滿足 Scaling Policy Condition (調整規模政策條件) 時,調整規模政策在您機群上所執行的動作。您可以根據 % 容量執行個體數量 (針對單一工作階段機群) 或使用者工作階段數量 (針對多工作階段機群) 來選擇動作。例如,如果 [目前容量] 為 4 且 [擴展原則動作] 設定為 [新增 25% 容量],則當符合擴展政策條件時,所需容量增加將設定為 5。

調整規模政策條件

觸發 Scaling Policy Action (調整規模政策動作) 中所設定動作的條件。此條件包含調整規模政策指標、一個比較運算子,以及一個閾值。例如,若要在機群使用率超過 50% 時調整規模機群,您的調整規模政策條件應設為「若容量使用率 > 50%」。

調整規模政策指標

您的調整規模政策會以此指標作為根據。以下指標可用於調整規模政策:

容量使用率

機群內正在使用中執行個體的百分比。您可以使用此指標來根據機群的用量調整規模您的機群。例如,Scaling Policy Condition (調整規模政策條件):「若容量使用率 < 25%」執行 Scaling Policy Action (調整規模政策動作):「移除 25% 的容量」。

可用容量

機群中可供使用者使用的執行個體數量 (針對單一工作階段機群) 或使用者工作階段數量 (針對多工作階段機群)。您可以使用此指標來在您的容量中維持一個緩衝區,供使用者啟動串流工作階段。例如,擴展政策條件:「如果可用容量 < 5」執行擴展政策動作:「新增 5 個執行個體 (針對單一工作階段機群) 或使用者工作階段 (針對多工作階段機群)」。

容量不足錯誤

由於容量不足而導致工作階段請求被拒的數量。您可以使用此指標,為因容量不足而無法啟動串流工作階段的使用者佈建新的執行個體。例如,擴展政策條件:「如果容量不足錯誤 > 0」執行擴展政策動作:「新增 1 個執行個體 (針對單一工作階段機群) 或使用者工作階段 (針對多工作階段機群)」。

使用主控台管理機群調整規模

您可以透過下列兩種方式之一使用 AppStream 2.0 主控台來設定和管理叢集擴展:在建立叢集期間,或隨時使用 [叢集] 索引標籤。新建立的機群在啟動後會有兩個相關聯的預設調整規模政策。您可以在 AppStream 2.0 主控台的「資源調整政策」索引標籤上編輯這些政策。如需詳細資訊,請參閱 建立機群

針對數量各不相同的使用者環境,定義調整規模政策來控制調整規模回應需求的方式。若您預期擁有固定數量的使用者,或是有其他停用擴展的理由,您可以將您的機群設為擁有固定數量的執行個體或使用者工作階段。

使用主控台設定機群調整規模政策
  1. 請在以下位置開啟 AppStream 2.0 主控台。 https://console.aws.amazon.com/appstream2

  2. 在導覽窗格中,選擇 Fleets (機群)

  3. 選取機群,然後選擇 Scaling Policies (調整規模政策)

  4. 透過選擇每個值旁邊的編輯圖示,編輯現有政策。在編輯欄位中設定所需要的值,然後選擇 Update (更新)。政策變更會在幾分鐘之內生效。

  5. 使用 Add Policy (新增政策) 連結新增 (建立) 新的政策。在編輯欄位中設定所需要的值,然後選擇 Create (建立)。新的政策會在幾分鐘之內生效。

您可以使用 Fleet Usage (機群用量) 標籤來監控您調整規模政策變更的效果。以下是五個使用者連線到機群,然後中斷連線時調整規模活動的範例用量圖。此範例來自使用下列調整規模政策值的機群:

  • 容量下限 = 10

  • 容量上限 = 50

  • 橫向擴展 = 如果容量使用率 > 75%,則新增 5 個執行個體 (針對單一工作階段機群) 或使用者工作階段 (針對多工作階段機群)

  • 縮減 = 如果容量使用率 < 25%,則移除 6 個執行個體 (針對單一工作階段機群) 或使用者工作階段 (針對多工作階段機群)

    注意

    上述政策同時適用於單一工作階段和多工作階段案例。在單一工作階段案例中,5 個新的執行個體將在橫向擴展事件期間啟動,而 4 個執行個體將在縮減規模期間回收。在多工作階段案例中,每個執行個體的工作階段數量上限 = 4 的情況下,橫向擴展事件將在四捨五入後觸發啟動 (每個執行個體新增 5 個使用者工作階段/工作階段數量上限 4) = 2 個執行個體。在縮減事件期間,服務將在四捨五入後回收 (移除 6 個使用者工作階段/每個執行個體的工作階段數量上限 4) = 2 個執行個體。具有執行中使用者工作階段的執行個體將不會回收。只會回收沒有執行中使用者工作階段的執行個體。

使用主控台設定固定容量的機群
  1. 請在以下位置開啟 AppStream 2.0 主控台。 https://console.aws.amazon.com/appstream2

  2. 在導覽窗格中,選擇 Fleets (機群)

  3. 選取機群。

  4. 針對 Scaling Policies (調整規模政策),移除所有與機群相關聯的政策。

  5. 針對 Fleet Details (機群詳細資訊),編輯機群以設定 Desired Capacity (所需容量)

固定機群具有以您指定為 Desired Capacity (所需容量) 的值做為基礎的常數容量。請注意,固定機群隨時都擁有所需數量的可用執行個體,因此您必須停止機群,才能停止為該機群支付費用。

使用 AWS CLI 管理叢集擴展

您可以使用 AWS Command Line Interface (AWS CLI) 設定和管理叢集擴展。如需更進階的功能,例如設定多重擴展政策或設定縮放和擴充冷卻時間,請使用 CLI。 AWS 在執行調整規模政策命令前,您必須先將您的機群註冊為可調整規模的目標。若要這樣做,請使用以下 register-scalable-target 命令:

aws application-autoscaling register-scalable-target --service-namespace appstream \ --resource-id fleet/fleetname \ --scalable-dimension appstream:fleet:DesiredCapacity \ --min-capacity 1 --max-capacity 5

範例 1:根據容量使用率套用調整規模政策

此 AWS CLI 範例會設定擴展政策,如果使用率大於等於 75%,則將叢集擴展 25%。

以下 put-scaling-policy 命令會定義使用率類型的調整規模政策:

aws application-autoscaling put-scaling-policy --cli-input-json file://scale-out-utilization.json

scale-out-utilization.json 檔案的內容如下:

{ "PolicyName": "policyname", "ServiceNamespace": "appstream", "ResourceId": "fleet/fleetname", "ScalableDimension": "appstream:fleet:DesiredCapacity", "PolicyType": "StepScaling", "StepScalingPolicyConfiguration": { "AdjustmentType": "PercentChangeInCapacity", "StepAdjustments": [ { "MetricIntervalLowerBound": 0, "ScalingAdjustment": 25 } ], "Cooldown": 120 } }

若命令成功,則輸出類似以下內容,雖然有些詳細資訊會因您的帳戶和區域而有所不同。在此範例中,政策識別符是 e3425d21-16f0-d701-89fb-12f98dac64af

{"PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:e3425d21-16f0-d701-89fb-12f98dac64af:resource/appstream/fleet/SampleFleetName:policyName/scale-out-utilization-policy"}

現在,為此原則設定 CloudWatch 警示。使用適用於您的名稱、區域、帳號和政策識別符。您可以使用先前命令針對 --alarm-actions 參數所傳回的政策 ARN。

aws cloudwatch put-metric-alarm --alarm-name alarmname \ --alarm-description "Alarm when Capacity Utilization exceeds 75 percent" \ --metric-name CapacityUtilization \ --namespace AWS/AppStream \ --statistic Average \ --period 300 \ --threshold 75 \ --comparison-operator GreaterThanOrEqualToThreshold \ --dimensions "Name=Fleet,Value=fleetname" \ --evaluation-periods 1 --unit Percent \ --alarm-actions "arn:aws:autoscaling:your-region-code:account-number-without-hyphens:scalingPolicy:policyid:resource/appstream/fleet/fleetname:policyName/policyname"

範例 2:根據容量不足錯誤套用調整規模政策

此 AWS CLI 範例會設定擴展政策,如果叢集傳回InsufficientCapacityError錯誤,則將叢集擴展為 1。

以下命令會定義容量不足類型的調整規模政策:

aws application-autoscaling put-scaling-policy --cli-input-json file://scale-out-capacity.json

scale-out-capacity.json 檔案的內容如下:

{ "PolicyName": "policyname", "ServiceNamespace": "appstream", "ResourceId": "fleet/fleetname", "ScalableDimension": "appstream:fleet:DesiredCapacity", "PolicyType": "StepScaling", "StepScalingPolicyConfiguration": { "AdjustmentType": "ChangeInCapacity", "StepAdjustments": [ { "MetricIntervalLowerBound": 0, "ScalingAdjustment": 1 } ], "Cooldown": 120 } }

若命令成功,則輸出類似以下內容,雖然有些詳細資訊會因您的帳戶和區域而有所不同。在此範例中,政策識別符是 f4495f21-0650-470c-88e6-0f393adb64fc

{"PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:f4495f21-0650-470c-88e6-0f393adb64fc:resource/appstream/fleet/SampleFleetName:policyName/scale-out-insufficient-capacity-policy"}

現在,為此原則設定 CloudWatch 警示。使用適用於您的名稱、區域、帳號和政策識別符。您可以使用先前命令針對 --alarm-actions 參數所傳回的政策 ARN。

aws cloudwatch put-metric-alarm --alarm-name alarmname \ --alarm-description "Alarm when out of capacity is > 0" \ --metric-name InsufficientCapacityError \ --namespace AWS/AppStream \ --statistic Maximum \ --period 300 \ --threshold 0 \ --comparison-operator GreaterThanThreshold \ --dimensions "Name=Fleet,Value=fleetname" \ --evaluation-periods 1 --unit Count \ --alarm-actions "arn:aws:autoscaling:your-region-code:account-number-without-hyphens:scalingPolicy:policyid:resource/appstream/fleet/fleetname:policyName/policyname"

範例 3:根據低容量使用率套用調整規模政策

此 AWS CLI 範例會設定擴展政策,該政策可在叢集中進行擴展,以便在低時CapacityUtilization減少實際容量。

以下命令會定義容量超過類型的調整規模政策:

aws application-autoscaling put-scaling-policy --cli-input-json file://scale-in-capacity.json

scale-in-capacity.json 檔案的內容如下:

{ "PolicyName": "policyname", "ServiceNamespace": "appstream", "ResourceId": "fleet/fleetname", "ScalableDimension": "appstream:fleet:DesiredCapacity", "PolicyType": "StepScaling", "StepScalingPolicyConfiguration": { "AdjustmentType": "PercentChangeInCapacity", "StepAdjustments": [ { "MetricIntervalUpperBound": 0, "ScalingAdjustment": -25 } ], "Cooldown": 360 } }

若命令成功,則輸出類似以下內容,雖然有些詳細資訊會因您的帳戶和區域而有所不同。在此範例中,政策識別符是 12ab3c4d-56789-0ef1-2345-6ghi7jk8lm90

{"PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:12ab3c4d-56789-0ef1-2345-6ghi7jk8lm90:resource/appstream/fleet/SampleFleetName:policyName/scale-in-utilization-policy"}

現在,為此原則設定 CloudWatch 警示。使用適用於您的名稱、區域、帳號和政策識別符。您可以使用先前命令針對 --alarm-actions 參數所傳回的政策 ARN。

aws cloudwatch put-metric-alarm --alarm-name alarmname \ --alarm-description "Alarm when Capacity Utilization is less than or equal to 25 percent" \ --metric-name CapacityUtilization \ --namespace AWS/AppStream \ --statistic Average \ --period 120 \ --threshold 25 \ --comparison-operator LessThanOrEqualToThreshold \ --dimensions "Name=Fleet,Value=fleetname" \ --evaluation-periods 10 --unit Percent \ --alarm-actions "arn:aws:autoscaling:your-region-code:account-number-without-hyphens:scalingPolicy:policyid:resource/appstream/fleet/fleetname:policyName/policyname"

範例 4:根據排程變更機群容量

根據排程變更您的機群容量,可讓您針對可預期的需求變更調整機群容量規模以進行回應。例如,在工作天的一開始,您可能預期會有特定數量的使用者同時請求串流連線。若要根據排程變更叢集容量,您可以使用應用程式自PutScheduled動調整動作 API 動作或放置排程動 AWS 作 CLI 命令。

在變更叢集容量之前,您可以使用 AppStream 2.0 描述 AWS 叢集 CLI 指令列出目前的叢集容量。

aws appstream describe-fleets --name fleetname

目前的機群容量會顯示與以下內容相似的輸出 (以 JSON 格式顯示):

{ { "ComputeCapacityStatus": { "Available": 1, "Desired": 1, "Running": 1, "InUse": 0 }, }

然後,使用 put-scheduled-action 命令建立排程動作來變更您的機群容量。例如,以下命令會在每天早上 9 點 (UTC) 將容量下限變更為 3,並將容量上限變更為 5。

注意

對於 cron 表達式,請指定在 UTC 的何時執行動作。如需詳細資訊,請參閱 Cron 表達式

aws application-autoscaling put-scheduled-action --service-namespace appstream \ --resource-id fleet/fleetname \ --schedule="cron(0 9 * * ? *)" \ --scalable-target-action MinCapacity=3,MaxCapacity=5 \ --scheduled-action-name ExampleScheduledAction \ --scalable-dimension appstream:fleet:DesiredCapacity

若要確認已成功建立變更您機群容量的排程動作,請執行 describe-scheduled-actions 命令。

aws application-autoscaling describe-scheduled-actions --service-namespace appstream --resource-id fleet/fleetname

若排程動作已成功建立,則會顯示與以下內容相似的輸出。

{ "ScheduledActions": [ { "ScalableDimension": "appstream:fleet:DesiredCapacity", "Schedule": "cron(0 9 * * ? *)", "ResourceId": "fleet/ExampleFleet", "CreationTime": 1518651232.886, "ScheduledActionARN": "<arn>", "ScalableTargetAction": { "MinCapacity": 3, "MaxCapacity": 5 }, "ScheduledActionName": "ExampleScheduledAction", "ServiceNamespace": "appstream" } ] }

如需詳細資訊,請參閱《應用程式自動擴展使用者指南》中的排程擴展

範例 5:套用目標追蹤調整規模政策

透過目標追蹤調整規模,您可以為機群指定容量使用率層級。

當您建立目標追蹤資源調度規模政策時,Application Auto Scaling 會自動建立和管理 CloudWatch 警示,以觸發擴展政策。調整規模政策會視需要新增或移除容量,以讓容量使用率保持在等於或接近指定目標值。為了確保應用程式的可用性,您的機群可以配合指標按比例快速地擴展規模,但是以更漸進的方式縮減規模。

下列 put-Scaling 原則命令會定義目標追蹤擴展政策,該原則會嘗試維持 2.0 叢集 75% 的容量使用率。 AppStream

aws application-autoscaling put-scaling-policy --cli-input-json file://config.json

config.json 檔案的內容如下:

{ "PolicyName":"target-tracking-scaling-policy", "ServiceNamespace":"appstream", "ResourceId":"fleet/fleetname", "ScalableDimension":"appstream:fleet:DesiredCapacity", "PolicyType":"TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration":{ "TargetValue":75.0, "PredefinedMetricSpecification":{ "PredefinedMetricType":"AppStreamAverageCapacityUtilization" }, "ScaleOutCooldown":300, "ScaleInCooldown":300 } }

若命令成功,則輸出類似以下內容,雖然有些詳細資訊會因您的帳戶和區域而有所不同。在此範例中,政策識別符為 6d8972f3-efc8-437c-92d1-6270f29a66e7。

{ "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/appstream/fleet/fleetname:policyName/target-tracking-scaling-policy", "Alarms": [ { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-fleet/fleetname-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca", "AlarmName": "TargetTracking-fleet/fleetname-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca" }, { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-fleet/fleetname-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d", "AlarmName": "TargetTracking-fleet/fleetname-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d" } ] }

如需詳細資訊,請參閱《應用程式自動擴展使用者指南》中的目標追蹤擴展政策

其他資源

如需使用 AppStream 2.0 叢集 Auto Scaling 的 step-by-step 指引,請參閱AWS 運算部落格的使用 Amazon AppStream 2.0 擴展桌面應用程式串流

若要深入了解如何使用 Application Auto Scaling AWS CLI 命令或 API 動作,請參閱下列資源: