Auto Scaling en WorkSpaces Pools - Amazon WorkSpaces

Auto Scaling en WorkSpaces Pools

Auto Scaling le permite cambiar automáticamente el tamaño de los grupos para que la oferta de instancias disponibles se equipare con la demanda de los usuarios. El tamaño del grupo determina el número de usuarios que pueden transmitir de forma simultánea. Se requiere una instancia para cada sesión de usuario. Puede especificar la capacidad del grupo en cuanto a las instancias. Según las configuraciones del grupo y las políticas de escalado automático, estará disponible la cantidad requerida de instancias. Puede definir políticas de escalado para que el tamaño del grupo se ajuste automáticamente en función de una serie de métricas de uso, así como optimizar la cantidad de instancias disponibles de forma que se equipare con la demanda de los usuarios. Además, puede desactivar el escalado automático de forma que el tamaño del grupo en ejecución se mantenga fijo.

nota
  • A medida que desarrolle el plan para el escalado de WorkSpaces Pools, asegúrese de que la configuración de red cumpla los requisitos.

  • Cuando usa el escalado, trabaja con la API del Auto Scaling de aplicaciones. Para que Auto Scaling funcione correctamente con WorkSpaces Pools, Application Auto Scaling necesita permiso para describir y actualizar los grupos y describir las alarmas de Amazon CloudWatch, además de permisos para modificar la capacidad del grupo en su nombre.

En los siguientes temas se proporciona información que le ayudará a comprender y utilizar Auto Scaling en WorkSpaces Pools.

Conceptos de escalado

Application Auto Scaling proporciona el escalado de WorkSpaces Pools. Para obtener más información, consulte la Referencia de la API de Application Auto Scaling.

Para utilizar de forma eficaz Auto Scaling con WorkSpaces Pools, debe comprender los siguientes términos y conceptos.

Capacidad mínima y número mínimo de sesiones de usuario para el grupo

El número mínimo de instancias. El número de instancias no puede ser inferior a este valor y las políticas de escalado no escalarán el grupo por debajo de este valor. Por ejemplo, si establece la capacidad mínima para un grupo en 2, el grupo nunca tendrá menos de dos instancias.

Capacidad máxima y número máximo de sesiones de usuario para el grupo

El número máximo de instancias. El número de instancias no puede ser superior a este valor y las políticas de escalado no escalarán el grupo por encima de este valor. Por ejemplo, si establece la capacidad máxima para un grupo en 10, el grupo nunca tendrá más de 10 instancias.

Capacidad de sesión de usuario deseada

El número total de sesiones que se están ejecutando o están pendientes. Esto representa el número total de sesiones de transmisión simultáneas que puede admitir el grupo en un estado estable.

Acción de la política de escalado

La acción que las políticas de escalado llevan a cabo en el grupo cuando se cumple la opción Condición de la política de escalado. Puede elegir una acción basándose en % capacity o number of instance(s). Por ejemplo, si la opción Capacidad de sesión de usuario deseada está establecida en 4 y la opción Acción de la política de escalado está establecida en “Añadir un 25 % de capacidad”, la opción Capacidad de sesión de usuario deseada aumentará un 25 % a 5 cuando se cumpla la opción Condición de la política de escalado.

Condición de la política de escalado

La condición que desencadena la acción establecida en Scaling Policy Action. Esta condición incluye una métrica de la política de escalado, un operador de comparación y un umbral. Por ejemplo, para escalar un grupo cuando su utilización sea superior al 50 %, la condición de la política de escalado debe ser “Si utilización de la capacidad > 50 %”.

Métrica de la política de escalado

La política de escalado se basa en esta métrica. Las siguientes métricas están disponibles para políticas de escalado:

Capacity Utilization

El porcentaje de instancias de un grupo que se están utilizando. Puede utilizar esta métrica para escalar el grupo en función de su uso. Por ejemplo, Scaling Policy Condition: "si la condición es Capacity Utilization < 25%", llevar a cabo la acción Scaling Policy Action: "Remove 25 % capacity".

Capacidad disponible

El número de instancias del grupo que están disponibles para los usuarios. Puede utilizar esta métrica para mantener un búfer de capacidad disponible que permita a los usuarios iniciar sesiones de streaming. Por ejemplo, Scaling Policy Condition: "si la condición es Available Capacity < 5", llevar a cabo la acción Scaling Policy Action: "Add 5 instance(s)".

Errores de capacidad insuficiente

Número de solicitudes de sesión que se han rechazado por falta de capacidad. Esta métrica se puede utilizar para aprovisionar nuevas instancias para los usuarios que no pueden iniciar sesiones de streaming debido a la falta de capacidad. Por ejemplo, Scaling Policy Condition: "si la condición es Insufficient Capacity Error > 0", llevar a cabo la acción Scaling Policy Action: "Add 1 instance(s)".

Administración del escalado de grupos mediante la consola

Puede configurar y administrar el escalado mediante la consola de WorkSpaces de cualquiera de las dos formas siguientes: durante la creación de grupos, o en cualquier momento, mediante la pestaña Grupos. Después de crear los grupos, vaya a la pestaña Políticas de escalado para añadir nuevas políticas de escalado para el grupo. Para obtener más información, consulte Creación de un grupo de WorkSpaces Pools.

Para entornos de usuario que varían en número, defina políticas de escalado que permitan controlar cómo responderá el escalado a la demanda. Si prevé un número fijo de usuarios o existen otros motivos para deshabilitar el escalado, puede configurar el grupo con un número fijo de instancias para las sesiones de usuario.

Para ello, defina la capacidad mínima en el número de instancias que desee. Ajuste la capacidad máxima para que sea al menos el valor de la capacidad mínima. Esto evita errores de validación, pero, en última instancia, se ignorará la capacidad máxima, ya que el grupo no se escalará. A continuación, elimine todas las políticas de escalado de ese grupo.

Cómo definir una política de escalado de grupos con la consola
  1. Abra la consola de WorkSpaces en https://console.aws.amazon.com/workspaces/v2/home.

  2. En el panel de navegación, elija Pools (Grupos).

  3. Seleccione el grupo.

  4. En la página de ese grupo, desplácese hacia abajo hasta la capacidad y el escalado.

  5. Seleccione Editar.

  6. Edite las políticas existentes, establezca los valores deseados en su campo y seleccione Guardar. Los cambios de la política entrarán en vigor transcurridos unos minutos.

  7. También puede añadir nuevas políticas de capacidad y escalado. Para ello, seleccione Añadir nueva capacidad de programación, Añadir nueva política de escalado horizontal o Añadir nueva política de reducción horizontal.

A continuación se muestra un ejemplo gráfico de la actividad de escalado cuando cinco usuarios se conectan al grupo y, a continuación, se desconectan. Este ejemplo es de un grupo en el que se utilizan los siguientes valores de la política de escalado:

  • Capacidad mínima = 10

  • Capacidad máxima = 50

  • Escalar horizontalmente = si la utilización de la capacidad del grupo es superior al 75 %, añada cinco instancias

  • Reducir horizontalmente = si la utilización de la capacidad del grupo es inferior al 25 %, elimine seis instancias

    nota

    Durante la sesión, se iniciarán cinco instancias nuevas durante un evento de escalado horizontal. Durante un evento de reducción horizontal, se recuperarán seis instancias si hay suficientes instancias sin sesiones de usuario activas y si el número total de instancias no cae por debajo de la capacidad mínima de 10 instancias. Las instancias con sesiones de usuario en ejecución no se recuperarán. Solo se recuperarán las instancias en las que no se esté ejecutando ninguna sesión de usuario.

Administración del escalado de grupos mediante la CLI de AWS

Puede configurar y administrar el escalado de grupos mediante AWS Command Line Interface (CLI de AWS). Para obtener características más avanzadas, como, por ejemplo, el establecimiento de plazos de recuperación de escalado horizontal y reducción horizontal, utilice la CLI de AWS. Antes de ejecutar los comandos de las políticas de escalado, debe registrar el grupo como objetivo escalable. Para hacerlo, utilice el comando register-scalable-target siguiente:

aws application-autoscaling register-scalable-target --service-namespace workspaces \ --resource-id workspacespool/PoolId \ --scalable-dimension workspaces:workspacespool:DesiredUserSessions \ --min-capacity 1 --max-capacity 5

Ejemplo 1: Aplicación de una política de escalado basada en la utilización de la capacidad

En este ejemplo de la CLI de AWS se configura una política de escalado que escala horizontalmente un grupo en un 25 % si la utilización es >= 75 %.

El comando put-scaling-policy siguiente define una política de escalado basada en la utilización:

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

El contenido del archivo scale-out-utilization.json es el siguiente:

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

Si el comando es correcto, el resultado es similar al siguiente, aunque algunos datos son exclusivos de cada cuenta y región. En este ejemplo, el identificador de la política es 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"}

Ahora, configure una alarma de CloudWatch para esta política. Utilice los nombres, la región, el número de cuenta y el identificador de la política que se le apliquen a usted. Puede utilizar el ARN de la política devuelto por el comando anterior para el 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"

Ejemplo 2: Aplicación de una política de escalado basada en los errores de capacidad insuficiente

En este ejemplo de la CLI de AWS se configura una política de escalado que escala horizontalmente el grupo en 1 si este devuelve un error InsufficientCapacityError.

El comando siguiente define una política de escalado basada en la capacidad insuficiente:

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

El contenido del archivo scale-out-capacity.json es el siguiente:

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

Si el comando es correcto, el resultado es similar al siguiente, aunque algunos datos son exclusivos de cada cuenta y región. En este ejemplo, el identificador de la política es 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"}

Ahora, configure una alarma de CloudWatch para esta política. Utilice los nombres, la región, el número de cuenta y el identificador de la política que se le apliquen a usted. Puede utilizar el ARN de la política devuelto por el comando anterior para el 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"

Ejemplo 3: Aplicación de una política de escalado basada en la utilización de baja capacidad

En este ejemplo de la AWS CLI se establece una política de escalado que reduce horizontalmente el grupo para reducir la capacidad real cuando el valor de UserSessionsCapacityUtilization sea bajo.

El comando siguiente define una política de escalado basada en la capacidad excesiva:

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

El contenido del archivo scale-in-capacity.json es el siguiente:

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

Si el comando es correcto, el resultado es similar al siguiente, aunque algunos datos son exclusivos de cada cuenta y región. En este ejemplo, el identificador de la política es 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"}

Ahora, configure una alarma de CloudWatch para esta política. Utilice los nombres, la región, el número de cuenta y el identificador de la política que se le apliquen a usted. Puede utilizar el ARN de la política devuelto por el comando anterior para el 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"

Ejemplo 4: Cambio de la capacidad del grupo en función de una programación

El cambio de la capacidad del grupo en función de una programación le permite escalar la capacidad del grupo como respuesta a los cambios previstos en la demanda. Por ejemplo, al inicio de un día laborable, es posible que espere que un determinado número de usuarios solicite conexiones de streaming al mismo tiempo. Para cambiar la capacidad del grupo en función de una programación, puede utilizar la acción de la API PutScheduledAction o el comando de la CLI de AWS put-scheduled-action de Application Auto Scaling.

Antes de cambiar la capacidad del grupo, puede enumerar la capacidad actual del grupo mediante el comando de la CLI de AWS describe-workspaces-pools de WorkSpaces.

aws workspaces describe-workspaces-pools --name PoolId

La capacidad actual del grupo tendrá un aspecto similar al del siguiente resultado (tal y como se muestra en formato JSON):

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

A continuación, utilice el comando put-scheduled-action para crear una acción programada para cambiar la capacidad del grupo. Por ejemplo, el siguiente comando cambia la capacidad mínima a 3 y la capacidad máxima a 5 cada día a las 9:00 h.

nota

Para expresiones cron, especifique cuándo realizar la acción en UTC. Para obtener más información, consulte Expresiones 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 que la acción programada para cambiar la capacidad del grupo se ha creado correctamente, ejecute el comando describe-scheduled-actions.

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

Si la acción programada se ha creado correctamente, el resultado tiene un aspecto similar al siguiente.

{ "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 obtener más información, consulte Escalado programado en la Guía del usuario de Auto Scaling de aplicaciones.

Ejemplo 5: Aplicación de una política de escalado de seguimiento de destino

Con el escalado de seguimiento de destino puede especificar un nivel de utilización de capacidad para el grupo.

Al crear una política de escalado de seguimiento de destino, el Auto Scaling de aplicaciones crea y administra de manera automática las alarmas de CloudWatch que activan la política de escalado. La política de escalado amplía o reduce la capacidad en función de las necesidades para mantener el uso de la capacidad en el valor objetivo especificado o en un valor próximo. Para garantizar la disponibilidad de la aplicación, el grupo se escala horizontalmente de un modo proporcional a la métrica tan rápido como puede, pero se reduce horizontalmente de un modo más gradual.

El siguiente comando put-scaling-policy define una política de escalado de seguimiento de destino que intenta mantener una utilización de la capacidad del 75 % para un grupo de WorkSpaces.

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

El contenido del archivo config.json es el siguiente:

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

Si el comando es correcto, el resultado es similar al siguiente, aunque algunos datos son exclusivos de cada cuenta y región. En este ejemplo, el identificador de la política es 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 obtener más información, consulte Políticas de escalado de seguimiento de destino en la Guía del usuario de Auto Scaling de aplicaciones.

Recursos adicionales

Para obtener más información acerca del uso de acciones de la API o comandos de la AWS CLI del Auto Scaling de aplicaciones, consulte los siguientes recursos: