WorkSpaces プールの自動スケーリング - Amazon WorkSpaces

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

WorkSpaces プールの自動スケーリング

Auto Scaling では、利用可能なインスタンスの供給をユーザーの需要に合わせて、プールのサイズを自動的に変更できます。プールのサイズによって、同時にストリーミングできるユーザーの数が決まります。ユーザーセッションごとに 1 つのインスタンスが必要です。プール容量は、 インスタンスで指定できます。プール設定と自動スケーリングポリシーに基づいて、必要な数のインスタンスが使用可能になります。さまざまな使用率メトリクスに基づいてプールのサイズを自動的に調整するスケーリングポリシーを定義し、ユーザーの需要に合わせて使用可能なインスタンスの数を最適化できます。また、自動スケーリングをオフにして、プールを固定サイズで実行することもできます。

注記
  • WorkSpaces プールスケーリングの計画を立てるときは、ネットワーク設定が要件を満たしていることを確認してください。

  • スケーリングを使用する場合は、Application Auto Scaling を使用しますAPI。Auto Scaling が WorkSpaces プールと正しく連携するには、Application Auto Scaling にプールを記述および更新し、Amazon CloudWatch アラームを記述するアクセス許可と、ユーザーに代わってプール容量を変更するアクセス許可が必要です。

以下のトピックでは、 WorkSpaces プールの Auto Scaling の理解と使用に役立つ情報を提供します。

スケーリングの概念

WorkSpaces プールのスケーリングは、Application Auto Scaling によって提供されます。詳細については、「Application Auto Scaling APIリファレンス」を参照してください。

WorkSpaces プールで Auto Scaling を効果的に使用するには、以下の用語と概念を理解する必要があります。

プールの最小容量/最小ユーザーセッション

インスタンスの最小数。インスタンスの数をこの値未満にすることはできません。また、スケーリングポリシーはこの値を下回ってプールをスケーリングしません。例えば、プールの最小容量を 2 に設定すると、プールのインスタンス数が 2 未満になることはありません。

プールの最大容量/最大ユーザーセッション

インスタンスの最大数。インスタンスの数はこの値を超えることはできません。また、スケーリングポリシーはこの値を超えてプールをスケーリングしません。例えば、プールの最大容量を 10 に設定すると、プールに 10 個を超えるインスタンスが発生することはありません。

希望するユーザーセッション容量

実行中または保留中のセッションの合計数。これは、プールが定常状態でサポートできる同時ストリーミングセッションの合計数を表します。

スケーリングポリシーアクション

スケーリングポリシー条件が満たされたときにスケーリングポリシーがプールで実行するアクション。[% capacity] または [number of instance(s)] に基づいてアクションを選択できます。例えば、希望するユーザーセッション容量が 4 で、スケーリングポリシーアクションが「25% の容量を追加」に設定されている場合、スケーリングポリシー条件が満たされると、希望するユーザーセッション容量は 25% 増加して 5 になります。

スケーリングポリシー条件

[Scaling Policy Action] で設定されたアクションをトリガーする条件。この条件は、スケーリングポリシーのメトリクス、比較演算子、しきい値を含みます。例えば、プールの使用率が 50% を超える場合にプールをスケーリングするには、スケーリングポリシー条件を「キャパシティ使用率 > 50%」にする必要があります。

スケーリングポリシーメトリクス

お客様のスケーリングポリシーはこのメトリクスに基づいています。スケーリングポリシーには、次のメトリクスを使用できます。

容量使用率

プール内で使用されているインスタンスの割合。このメトリクスを使用して、プールの使用状況に基づいてプールをスケーリングできます。たとえば、[Scaling Policy Condition]: 「容量使用率 < 25%」の場合、[Scaling Policy Action]: 「25% の容量を削除」を実行します。

使用可能な容量

ユーザーが利用できるプール内のインスタンスの数。このメトリクスを使用して、ユーザーがストリーミングセッションを開始するための、使用可能なメモリ容量のバッファを維持できます。たとえば、[Scaling Policy Condition]: 「使用可能な容量 < 5」 の場合、[Scaling Policy Action]: 「5 インスタンスを追加」を実行します。

容量不足エラー

容量不足により拒否されたセッションリクエストの数。このメトリクスを使用して、容量不足のためにストリーミングセッションを開始できないユーザーの新しいインスタンスをプロビジョニングできます。たとえば、[Scaling Policy Condition]: 「容量不足エラー > 0」の場合、[Scaling Policy Action]: 「1 インスタンスを追加」を実行します。

コンソールを使用したプールスケーリングの管理

スケーリングの設定と管理は、 WorkSpaces コンソールを使用して、プールの作成中、またはプールタブを使用していつでも行うことができます。プールを作成したら、スケーリングポリシータブに移動して、プールの新しいスケーリングポリシーを追加します。詳細については、「 WorkSpaces プールを作成する」を参照してください。

ユーザーの環境はさまざまに異なるため、需要に応じてスケーリングを制御するようにスケーリングポリシーを定義します。一定数のユーザーが予想される場合や、スケーリングを無効にするその他の理由がある場合は、ユーザーセッションの一定数のインスタンスでプールを設定できます。

これを行うには、最小容量を必要なインスタンス数に設定します。最大容量を少なくとも最小容量の値に調整します。これにより、検証エラーを回避できますが、プールはスケーリングされないため、最大容量は最終的に無視されます。次に、そのプールのすべてのスケーリングポリシーを削除します。

コンソールを使用してプールスケーリングポリシーを設定するには
  1. で WorkSpaces コンソールを開きますhttps://console.aws.amazon.com/workspaces/

  2. ナビゲーションペインで、[プール] を選択します。

  3. プールを選択します。

  4. そのプールのページで、容量とスケーリングまで下にスクロールします。

  5. [編集] を選択します。

  6. 既存のポリシーを編集し、そのフィールドに目的の値を設定し、保存 を選択します。ポリシーの変更は数分以内で有効になります。

  7. 新しいスケジュールキャパシティの追加、新しいスケールアウトポリシーの追加、またはポリシー の新しいスケールの追加を選択して、新しいキャパシティとスケーリングポリシーを追加することもできます。

以下は、5 人のユーザーがプールに接続してから切断した場合のスケーリングアクティビティの使用グラフの例です。この例は、次のスケーリングポリシー値を使用するプールからのものです。

  • 最小容量 = 10

  • 最大容量 = 50

  • スケールアウト = プールのキャパシティ使用率が 75% を超える場合は、5 つのインスタンスを追加します。

  • スケールイン = プールのキャパシティ使用率が 25% 未満の場合、6 つのインスタンスを削除する

    注記

    セッション中、スケールアウトイベント中に 5 つの新しいインスタンスが起動されます。スケールインイベント中に、アクティブなユーザーセッションがないインスタンスが十分で、インスタンスの総数が最小容量の 10 インスタンスを下回らない場合、6 つのインスタンスが再利用されます。ユーザーセッションが実行中であるインスタンスは再利用されません。実行中のユーザーセッションがないインスタンスのみが再利用されます。

を使用したプールスケーリングの管理 AWS CLI

を使用してプールスケーリングを設定および管理できます。 AWS Command Line Interface (AWS CLI)。スケールインやスケールアウトのクールダウン時間の設定など、より高度な機能については、 AWS CLI。スケーリングポリシーコマンドを実行する前に、プールをスケーラブルターゲットとして登録する必要があります。そのためには、次のregister-scalable-targetコマンドを使用します。

aws application-autoscaling register-scalable-target --service-namespace workspaces \ --resource-id workspacespool/PoolId \ --scalable-dimension workspaces:workspacespool:DesiredUserSessions \ --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": "workspaces", "ResourceId": "workspacespool/PoolId", "ScalableDimension": "workspaces:workspacespool:DesiredUserSessions", "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/workspaces/workspacespool/PoolId:policyName/scale-out-utilization-policy"}

次に、このポリシーの CloudWatch アラームを設定します。該当する名前、リージョン、アカウント番号、およびポリシー識別子を使用します。-- alarm-actions パラメータには、前のコマンドでARN返されたポリシーを使用できます。

aws cloudwatch put-metric-alarm --alarm-name alarmname \ --alarm-description "Alarm when Available User Session Capacity exceeds 75 percent" \ --metric-name AvailableUserSessionCapacity \ --namespace AWS/WorkSpaces \ --statistic Average \ --period 300 \ --threshold 75 \ --comparison-operator GreaterThanOrEqualToThreshold \ --dimensions "Name=WorkSpaces pool ID,Value=PoolId" \ --evaluation-periods 1 --unit Percent \ --alarm-actions "arn:aws:autoscaling:your-region-code:account-number-without-hyphens:scalingPolicy:policyid:resource/workspaces/workspacespool/PoolId: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": "workspaces", "ResourceId": "workspacespool/PoolId", "ScalableDimension": "workspaces:workspacespool:DesiredUserSessions", "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/workspaces/workspacespool/PoolId: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/WorkSpaces \ --statistic Maximum \ --period 300 \ --threshold 0 \ --comparison-operator GreaterThanThreshold \ --dimensions "Name=Pool,Value=PoolId" \ --evaluation-periods 1 --unit Count \ --alarm-actions "arn:aws:autoscaling:your-region-code:account-number-without-hyphens:scalingPolicy:policyid:resource/workspaces/workspacespool/PoolId:policyName/policyname"

例 3: 低容量使用率に基づくスケーリングポリシーの適用

この AWS CLI サンプルUserSessionsCapacityUtilizationは、 が低い場合に実際の容量を減らすためにプール内でスケーリングするスケーリングポリシーを設定します。

以下のコマンドは、容量超過に基づくスケーリングポリシーを定義します。

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

scale-in-capacity.json ファイルの内容は以下のようになります。

{ "PolicyName": "policyname", "ServiceNamespace": "workspaces", "ResourceId": "workspacespool/PoolId", "ScalableDimension": "workspaces:workspacespool:DesiredUserSessions", "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/workspaces/workspacespool/PoolId: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 UserSessionsCapacityUtilization \ --namespace AWS/WorkSpaces \ --statistic Average \ --period 120 \ --threshold 25 \ --comparison-operator LessThanOrEqualToThreshold \ --dimensions "Name=Pool,Value=PoolId" \ --evaluation-periods 10 --unit Percent \ --alarm-actions "arn:aws:autoscaling:your-region-code:account-number-without-hyphens:scalingPolicy:policyid:resource/workspaces/workspacespool/PoolId:policyName/policyname"

例 4: スケジュールに基づいてプール容量を変更する

スケジュールに基づいてプール容量を変更すると、需要の予測可能な変化に応じてプール容量をスケーリングできます。たとえば、稼働日の最初に、特定の数のユーザーが同時にストリーミング接続をリクエストすることが予期されます。スケジュールに基づいてプールの容量を変更するには、Application Auto Scaling PutScheduledActionAPIアクションまたは put-scheduled-action AWS CLI コマンド。

プール容量を変更する前に、 を使用して現在のプール容量を一覧表示できます。 WorkSpaces describe-workspaces-pools AWS CLI コマンド。

aws workspaces describe-workspaces-pools --name PoolId

現在のプール容量は、次の出力 ( JSON 形式で表示) のようになります。

{ "CapacityStatus": { "AvailableUserSessions": 1, "DesiredUserSessions": 1, "ActualUserSessions": 1, "ActiveUserSessions": 0 }, }

次に、 put-scheduled-action コマンドを使用して、プールの容量を変更するスケジュールされたアクションを作成します。例えば、次のコマンドは、毎日午前 9:00 に最小容量を 3 に、最大容量を 5 に変更しますUTC。

注記

cron 式の場合、 でアクションを実行するタイミングを指定しますUTC。詳細については、「Cron 式」を参照してください。

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

プール容量を変更するスケジュールされたアクションが正常に作成されたことを確認するには、 describe-scheduled-actions コマンドを実行します。

aws application-autoscaling describe-scheduled-actions --service-namespace workspaces --resource-id workspacespool/PoolId

スケジュールされたアクションが正常に作成された場合、出力は次のようになります。

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

詳細については、「Application Auto Scaling ユーザーガイド」の「スケジュールされたスケーリング」を参照してください。

例 5: ターゲット追跡スケーリングポリシーの適用

ターゲット追跡スケーリングでは、プールの容量使用率レベルを指定できます。

ターゲット追跡スケーリングポリシーを作成すると、Application Auto Scaling はスケーリングポリシーをトリガーする CloudWatch アラームを自動的に作成および管理します。スケーリングポリシーは、指定されたターゲット値、またはそれに近い値に容量使用率を維持するため、必要に応じて容量を追加または削除します。アプリケーションの可用性を確保するために、プールはメトリクスに比例して可能な限り速くスケールアウトしますが、スケールインはより緩やかです。

次のput-scaling-policyコマンドは、 WorkSpaces プールの容量使用率を 75% に維持しようとするターゲット追跡スケーリングポリシーを定義します。

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

config.json ファイルの内容は以下のようになります。

{ "PolicyName":"target-tracking-scaling-policy", "ServiceNamespace":"workspaces", "ResourceId":"workspacespool/PoolId", "ScalableDimension":"workspaces:workspacespool:DesiredUserSessions", "PolicyType":"TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration":{ "TargetValue":75.0, "PredefinedMetricSpecification":{ "PredefinedMetricType":"WorkSpacesAverageUserSessionsCapacityUtilization" }, "ScaleOutCooldown":300, "ScaleInCooldown":300 } }

コマンドが成功した場合、一部の詳細はアカウントおよびリージョンで固有ですが、出力は次のようになります。この例では、ポリシー識別子は 6d8972f3-efc8-437c-92d1-6270f29a66e7 です。

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

詳細については、Application Auto Scaling ユーザーガイドの「ターゲット追跡スケーリングポリシー」を参照してください。

追加リソース

Application Auto Scaling の使用の詳細については、「」を参照してください。 AWS CLI コマンドまたはAPIアクションについては、以下のリソースを参照してください。