Ajuste de escala automático para WorkSpaces Pools - Amazon WorkSpaces

Ajuste de escala automático para WorkSpaces Pools

O ajuste de escala automático permite que você altere o tamanho dos pools automaticamente para que o fornecimento de instâncias disponíveis corresponda à demanda do usuário. O tamanho do pool determina o número de usuários que podem fazer streaming simultaneamente. É necessária uma instância para cada sessão de usuário. Você pode especificar a capacidade do seu pool em termos de instâncias. O número necessário de instâncias será disponibilizado com base nas configurações de seu pool e nas políticas de ajuste de escala automático. Você pode definir políticas de escalabilidade que ajustem o tamanho do pool automaticamente, com base em várias métricas de utilização, e otimizem o número de instâncias disponíveis para que corresponda à demanda dos usuários. Você pode também optar por desativar o ajuste de escala automático e determinar que o pool seja executado com um tamanho fixo.

nota
  • Ao desenvolver seu plano de escalabilidade do WorkSpaces Pools, verifique se sua configuração de rede atende aos seus requisitos.

  • Ao usar o ajuste de escala, você pode trabalhar com a API do Application Auto Scaling. Para que o ajuste de escala automático funcione corretamente no WorkSpaces Pools, o Application Auto Scaling requer permissão para descrever e atualizar seus pools e descrever os alarmes do Amazon CloudWatch, além de permissões para modificar a capacidade do pool em seu nome.

Os tópicos a seguir fornecem informações para ajudá-lo a entender e usar o ajuste de escala automático do WorkSpaces Pools.

Conceitos de escalabilidade

A escalabilidade do WorkSpaces Pools é fornecida pelo Application Auto Scaling. Para obter mais informações, consulte a Referência da API do Application Auto Scaling.

Para usar o ajuste de escala automático do WorkSpaces Pools com eficiência, você deve compreender os termos e conceitos a seguir.

Capacidade mínima/mínimo de sessões de usuário para o pool

O número mínimo de instâncias. O número de instâncias não pode ser abaixo desse valor e políticas de escalabilidade não vão dimensionar o pool abaixo desse valor. Por exemplo, se você definir a capacidade mínima de um pool como 2, ele nunca terá menos de 2 instâncias.

Capacidade máxima/máximo de sessões de usuário para o pool

O número máximo de instâncias. O número de instâncias não pode estar acima desse valor e as políticas de escalabilidade não dimensionarão seu pool acima desse valor. Por exemplo, se você definir a capacidade máxima de um pool como 10, ele nunca terá mais de 10 instâncias.

Capacidade desejada da sessão do usuário

O número total de sessões em execução ou pendentes. Isso representa o número total de sessões simultâneas de streaming às quais seu pool pode oferecer suporte em uma condição estável.

Ação da política de escalabilidade

Ação que a política de escalabilidade executa em seu pool quando a Condição da política de escalabilidade é atendida. Você pode escolher uma ação com base na % de capacidade ou no número de instâncias. Por exemplo, se a Capacidade desejada da sessão do usuário for 4 e a Ação da política de escalabilidade for definida como “Adicionar 25% à capacidade”, a Capacidade desejada da sessão do usuário é aumentada em 25% para 5, quando a Condição da política de escalabilidade for atendida.

Condição da política de escalabilidade

Condição que acionará um conjunto de ações em Scaling Policy Action. Essa condição inclui uma métrica de política de escalabilidade, um operador de comparação e um limite. Por exemplo, para dimensionar um pool se a utilização dele for superior a 50%, a condição da política de escalabilidade deverá ser "Se capacidade de utilização > 50%".

Métrica da política de escalabilidade

Sua política de dimensionamento está de acordo com essa métrica. A seguir se encontram as métricas disponíveis para as políticas de escalabilidade:

Utilização de capacidade

A porcentagem de instâncias em um pool que estão sendo usadas. Você pode usar essa métrica para dimensionar seu pool com base no respectivo uso. Por exemplo, Scaling Policy Condition (Condição da política de escalabilidade): “If Capacity Utilization < 25%” (Se a capacidade de utilização < 25%) executa Scaling Policy Action (Ação da política de escalabilidade): “Remove 25 % capacity” (Remover capacidade de 25%).

Capacidade disponível

O número de instâncias disponíveis em seu pool para usuários. Você pode usar essa métrica para manter um buffer na capacidade disponível para os usuários iniciarem sessões de streaming. Por exemplo, Scaling Policy Condition (Condição da política de escalabilidade): “If Available Capacity < 5” (Se a capacidade disponível < 5) executa Scaling Policy Action (Ação da política de escalabilidade): “Add 5 instance(s)” (Adicionar 5 instâncias).

Erro de capacidade insuficiente

O número de solicitações de sessão rejeitadas por falta de capacidade. É possível usar essa métrica para provisionar novas instâncias para usuários que não conseguem iniciar sessões de streaming devido à falta de capacidade. Por exemplo, Scaling Policy Condition: "If Insufficient Capacity Error > 0" executa Scaling Policy Action: "Add 1 instance(s)".

Como gerenciar a escalabilidade de pool por meio do console

Você pode configurar e gerenciar a escalabilidade do pool usando o console do WorkSpaces de uma destas duas maneiras: durante a criação do pool ou a qualquer momento, usando a guia Pools. Depois de criar pools, acesse a guia Políticas de escalabilidade para adicionar novas políticas de escalabilidade ao seu pool. Para obter mais informações, consulte Criar um WorkSpaces Pool.

Para ambientes de usuário que variam em número, defina políticas de escalabilidade para controlar como a escalabilidade deve responder à demanda. Se você espera um número fixo de usuários ou tem outros motivos para desabilitar a escalabilidade, pode configurar o pool com um número fixo de instâncias para sessões de usuário.

Para fazer isso, defina a capacidade mínima para o número desejado de instâncias. Ajuste a capacidade máxima para ser, no mínimo, o valor da capacidade mínima. Isso evita erros de validação, mas a capacidade máxima acabará sendo ignorada, pois o pool não será escalado. Em seguida, exclua todas as políticas de escalabilidade desse pool.

Para definir uma política de escalabilidade de pool usando o console
  1. Abra o console do WorkSpaces em https://console.aws.amazon.com/workspaces/v2/home.

  2. No painel de navegação, selecione Pools (Grupos).

  3. Selecione o pool.

  4. Na página desse pool, role a tela para baixo até capacidade e escalabilidade.

  5. Escolha Editar.

  6. Edite as políticas existentes, defina os valores desejados em seus campos e escolha Salvar. As alterações nas políticas entram em vigor em alguns minutos.

  7. Você também pode adicionar novas políticas de capacidade e escalabilidade escolhendo Add new schedule capacity, Add new scale out policy ou Add new scale in policy.

A seguir é apresentado um exemplo de gráfico de uso da atividade de escalabilidade quando cinco usuários conectam-se ao pool e se desconectam. Esse exemplo é de um pool que usa os seguintes valores de política de escalabilidade:

  • Capacidade mínima = 10

  • Capacidade máxima = 50

  • Aumentar a escala horizontalmente = Se a utilização da capacidade do meu pool for maior que 75%, adicione 5 instâncias

  • Reduzir a escala horizontalmente = Se a utilização da capacidade do meu pool for inferior a 25%, remova 6 instâncias

    nota

    Durante a sessão, cinco novas instâncias serão inicializadas durante um evento de aumento horizontal da escala. Durante um evento de redução de escala horizontal, 6 instâncias serão recuperadas, se houver instâncias suficientes sem sessões de usuário ativas, e o número total de instâncias não cair abaixo da capacidade mínima de 10 instâncias. As instâncias com sessões de usuário em execução não serão recuperadas. Somente instâncias sem sessões de usuário em execução serão recuperadas.

Gerenciar a escalabilidade de pool usando o AWS CLI

É possível configurar e gerenciar a escalabilidade de pool usando o AWS Command Line Interface (AWS CLI). Para obter recursos mais avançados, como a configuração de tempos de esfriamento para aumento e redução horizontal da escala, use o AWS CLI. Antes de executar comandos de política de escalabilidade, primeiro você deve registrar seu pool como um destino escalável. Para fazer isso, use o seguinte comando 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

Exemplo 1: aplicação de uma política de escalabilidade com base na utilização de capacidade

Esse exemplo do AWS CLI configura uma política de escalabilidade que aumenta horizontalmente a escala de um pool em 25% se o uso for superior ou igual a 75%.

O seguinte comando put-scaling-policy define uma política de escalabilidade com base na utilização:

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

Os conteúdos do arquivo scale-out-utilization.json são os seguintes:

{ "PolicyName": "policyname", "ServiceNamespace": "workspaces", "ResourceId": "workspacespool/PoolId", "ScalableDimension": "workspaces:workspacespool:DesiredUserSessions", "PolicyType": "StepScaling", "StepScalingPolicyConfiguration": { "AdjustmentType": "PercentChangeInCapacity", "StepAdjustments": [ { "MetricIntervalLowerBound": 0, "ScalingAdjustment": 25 } ], "Cooldown": 120 } }

Se o comando tiver êxito, o resultado será semelhante ao seguinte, embora alguns detalhes sejam exclusivos à sua conta e região. Neste exemplo, o identificador de políticas é 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"}

Agora, configure um alarme do CloudWatch para essa política. Use os nomes, a região, o número da conta e o identificador de política que se aplicam a você. Você pode usar o ARN de política retornado pelo comando anterior para o parâmetro -- alarm-actions.

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"

Exemplo 2: aplicação de uma política de escalabilidade com base em erros de capacidade insuficiente

Esse exemplo do AWS CLI configura uma política de escalabilidade que aumenta horizontalmente a escala do pool em 1 se ela retornar um erro InsufficientCapacityError.

O seguinte comando define uma política de escalabilidade com base na capacidade insuficiente:

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

Os conteúdos do arquivo scale-out-capacity.json são os seguintes:

{ "PolicyName": "policyname", "ServiceNamespace": "workspaces", "ResourceId": "workspacespool/PoolId", "ScalableDimension": "workspaces:workspacespool:DesiredUserSessions", "PolicyType": "StepScaling", "StepScalingPolicyConfiguration": { "AdjustmentType": "ChangeInCapacity", "StepAdjustments": [ { "MetricIntervalLowerBound": 0, "ScalingAdjustment": 1 } ], "Cooldown": 120 } }

Se o comando tiver êxito, o resultado será semelhante ao seguinte, embora alguns detalhes sejam exclusivos à sua conta e região. Neste exemplo, o identificador de políticas é 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"}

Agora, configure um alarme do CloudWatch para essa política. Use os nomes, a região, o número da conta e o identificador de política que se aplicam a você. Você pode usar o ARN de política retornado pelo comando anterior para o parâmetro --alarm-actions.

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"

Exemplo 3: aplicação de uma política de escalabilidade com base na baixa utilização de capacidade

Esse exemplo do AWS CLI configura uma política de escalabilidade que reduz horizontalmente a escala do pool a fim de diminuir a capacidade real quando o UserSessionsCapacityUtilization está baixa.

O seguinte comando define uma política de escalabilidade com base na capacidade excessiva:

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

Os conteúdos do arquivo scale-in-capacity.json são os seguintes:

{ "PolicyName": "policyname", "ServiceNamespace": "workspaces", "ResourceId": "workspacespool/PoolId", "ScalableDimension": "workspaces:workspacespool:DesiredUserSessions", "PolicyType": "StepScaling", "StepScalingPolicyConfiguration": { "AdjustmentType": "PercentChangeInCapacity", "StepAdjustments": [ { "MetricIntervalUpperBound": 0, "ScalingAdjustment": -25 } ], "Cooldown": 360 } }

Se o comando tiver êxito, o resultado será semelhante ao seguinte, embora alguns detalhes sejam exclusivos à sua conta e região. Neste exemplo, o identificador de políticas é 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"}

Agora, configure um alarme do CloudWatch para essa política. Use os nomes, a região, o número da conta e o identificador de política que se aplicam a você. Você pode usar o ARN de política retornado pelo comando anterior para o parâmetro --alarm-actions.

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"

Exemplo 4: alterar a capacidade do pool com base em uma programação

A alteração da capacidade do pool com base em uma programação permite escalar a capacidade do pool em resposta a alterações previsíveis na demanda. Por exemplo, no início de um dia útil, você pode esperar que um determinado número de usuários solicite conexões de streaming de uma só vez. Para alterar a capacidade do pool com base em uma programação, você pode usar a ação de APIPutScheduledAction de ajuste de escala automático ou o comando do AWS CLI put-scheduled-action.

Antes de alterar a capacidade do pool, você pode listar sua capacidade do pool atual usando o comando do AWS CLI describe-workspaces-pools no WorkSpaces.

aws workspaces describe-workspaces-pools --name PoolId

A capacidade do pool atual será semelhante à seguinte saída (mostrada no formato JSON):

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

Em seguida, use o comando put-scheduled-action para criar uma ação programada para alterar a capacidade do pool. Por exemplo, o comando a seguir altera a capacidade mínima para 3 e a capacidade máxima para 5 todos os dias às 9:00 UTC.

nota

Para expressões cron, especifique quando executar a ação em UTC. Para obter mais informações, consulte Expressões 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

Para confirmar se a ação programada para alterar a capacidade do pool foi criada com êxito, execute o comando describe-scheduled-actions.

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

Se a ação programada for criada com êxito, a saída será semelhante ao seguinte.

{ "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" } ] }

Para obter mais informações, consulte Escalabilidade programada no Guia do usuário do Application Auto Scaling.

Exemplo 5: como aplicar uma política de escalabilidade de rastreamento de destino

Com a escalabilidade de rastreamento de destino, é possível especificar um nível de utilização de capacidade para o pool.

Ao criar uma política de ajuste de escala de rastreamento de destino, o Application Auto Scaling cria e gerencia automaticamente alarmes do CloudWatch que acionam a política de ajuste de escala. A política de escalabilidade adiciona ou remove capacidade conforme necessário para manter a utilização da capacidade no valor de destino especificado ou próxima a ele. Para garantir a disponibilidade do aplicativo, a escala do pool é expandida horizontalmente de forma proporcional à métrica o mais rápido possível, mas é reduzida gradualmente.

O comando put-scaling-policy a seguir define uma política de escalabilidade de rastreamento de destino que tenta manter 75% da utilização da capacidade para um WorkSpaces Pool.

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

Os conteúdos do arquivo config.json são os seguintes:

{ "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 } }

Se o comando tiver êxito, o resultado será semelhante ao seguinte, embora alguns detalhes sejam exclusivos à sua conta e região. Neste exemplo, o identificador da política é 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" } ] }

Para obter mais informações, consulte Políticas de escalabilidade de rastreamento de destino no Guia do usuário do Application Auto Scaling.

Recursos adicionais

Para saber mais sobre como usar os comandos da AWS CLI ou as ações de API do Application Auto Scaling, consulte os seguintes recursos: