Políticas de escalado de seguimiento de destino para Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Políticas de escalado de seguimiento de destino para Amazon EC2 Auto Scaling

Con las políticas de escalado de seguimiento de destino, selecciona una métrica de escalado y establece un valor objetivo. El Auto Scaling de Amazon EC2 crea y administra las alarmas de CloudWatch que activan la política de escalado y calcula el ajuste de escalado en función de la métrica y el valor objetivo. La política de escalado amplía o reduce la capacidad en función de las necesidades para mantener la métrica en el valor objetivo especificado o en un valor próximo. Además de mantener la métrica próxima al valor de destino, la política de escalado de seguimiento de destino también se ajusta a los cambios de la métrica producidos por una carga de trabajo en constante cambio.

Por ejemplo, puede utilizar el escalado de seguimiento de destino para:

  • Configurar una política de escalado de seguimiento de destino para mantener la media total de utilización de la CPU del grupo de Auto Scaling en el 40 por ciento.

  • Configurar una política de escalado de seguimiento de destino de forma que el número de solicitudes por cada uno de los destinos del grupo de destino del Application Load Balancer se mantenga en 1000 en su grupo de Auto Scaling.

En función de las necesidades de la aplicación, es posible que una de estas métricas de escalado populares funcione mejor para usted cuando utilice el seguimiento de destino o que una combinación de estas métricas o una métrica diferente satisfaga mejor sus necesidades.

Considerations

Antes de crear una política de escalado de seguimiento de destino para el grupo de Auto Scaling, debe comprender las siguientes características y comportamientos de las políticas de escalado de seguimiento de destino:

  • Una política de escalado de seguimiento de destino presupone que el grupo de Auto Scaling debe escalarse de forma ascendente cuando la métrica está por encima del valor objetivo. Las políticas de escalado de seguimiento de destino no pueden utilizarse para realizar un escalado ascendente en el grupo de Auto Scaling si la métrica está por debajo del valor objetivo.

  • Es posible que haya diferencias entre el valor objetivo y los puntos de datos de la métrica real. Esto se debe a que actuamos de forma conservadora redondeando hacia arriba o hacia abajo a la hora de determinar el número de instancias que se deben agregar o quitar. Esto impide que agreguemos un número insuficiente de instancias o eliminemos demasiadas. Sin embargo, en el caso de los grupos de Auto Scaling más pequeños con menos instancias, la utilización del grupo puede parecer que está muy lejos del valor objetivo. Por ejemplo, supongamos que establece un valor de destino del 50 por ciento de utilización de la CPU y, a continuación, el grupo de Auto Scaling supera el dicho objetivo. Es posible determinar que la adición de 1,5 instancias disminuirá la utilización de la CPU hasta aproximadamente el 50 por ciento. Como no es posible agregar 1,5 instancias, redondeamos hacia arriba y añadimos dos instancias. Esto podría reducir la utilización de la CPU a un valor inferior al 50 por ciento, pero garantizaría que la aplicación cuenta con los recursos suficientes. Del mismo modo, si determinamos que, en caso de que se eliminen 1,5 instancias, la utilización de la CPU podría aumentar por encima del 50 por ciento, eliminamos una sola instancia.

  • En el caso de grupos de Auto Scaling más grandes con más instancias, la utilización se distribuye en un mayor número de instancias, en cuyo caso, si se añaden o quitan instancias, la diferencia entre el valor de destino y los puntos de datos de la métrica real es menor.

  • Para garantizar la disponibilidad de la aplicación, el grupo de Auto Scaling se escala en horizontal proporcionalmente a la métrica tan rápido como puede, pero se escala de forma descendente de más gradualmente.

  • Puede tener varias políticas de escalado de seguimiento de destino para un grupo de Auto Scaling, siempre que cada una de ellas use una métrica diferente. La intención de Amazon EC2 Auto Scaling siempre es dar prioridad a la disponibilidad, por lo que su comportamiento varía en función de si las políticas de seguimiento de destino están listas para el escalado ascendente o descendente. Realizará un escalado descendente del grupo de Auto Scaling si cualquiera de las políticas de seguimiento de destino está lista para el escalado descendente, pero solo realizará el escalado descendente si todas las políticas de seguimiento de destino (que tienen la parte de escalado descendente habilitada) están listas para el escalado descendente. Para obtener más información, consulte Varias políticas de escalado dinámico.

  • Puede deshabilitar la parte de escalado descendente de una política de escalado de seguimiento de destino. Esta característica le brinda la flexibilidad necesaria para escalar el grupo de Auto Scaling mediante un método diferente. Por ejemplo, puede utilizar un tipo de política diferente para el escalado descendente mientras utiliza una política de escalado de seguimiento de destino para el escalado ascendente.

  • No modifique ni elimine las alarmas de CloudWatch que están configuradas para la política de escalado de seguimiento de destino. Las alarmas de CloudWatch que están asociadas a las políticas de escalado de seguimiento de destino se gestionan medianteAWSY se eliminó automáticamente cuando ya no se necesita.

Elección de métricas

En una política de escalado de seguimiento de destino, puede utilizar métricas predefinidas o personalizadas.

Están disponibles las siguientes métricas predefinidas:

  • ASGAverageCPUUtilization: promedio de la CPU del grupo de Auto Scaling.

  • ASGAverageNetworkIn: número promedio de bytes recibidos en todas las interfaces de red por el grupo de Auto Scaling.

  • ASGAverageNetworkOut: número promedio de bytes enviados en todas las interfaces de red por el grupo de Auto Scaling.

  • ALBRequestCountPerTarget: número de solicitudes completadas por el destino en un grupo de destino del Application Load Balancer.

Puede elegir otras métricas de Amazon CloudWatch disponibles o sus propias métricas en CloudWatch mediante la especificación de una métrica personalizada. Debe utilizar elAWS CLIo un SDK para crear una política de seguimiento de destino con una métrica personalizada.

Tenga en cuenta las siguientes consideraciones al elegir una métrica:

  • No todas las métricas de funcionan para el seguimiento de destino. Esto puede ser importante cuando se especifica una métrica personalizada. La métrica debe ser una métrica de utilización válida y describir el nivel de actividad de una instancia. El valor de la métrica debe aumentar o disminuir proporcionalmente al número de instancias del grupo de Auto Scaling. De esta forma, los datos de las métricas se pueden utilizar para ampliar o reducir proporcionalmente el número de instancias. Por ejemplo, la utilización de la CPU de un grupo de Auto Scaling funciona (es decir, la métrica de Amazon EC2CPUUtilizationCon la dimensión de la métricaAutoScalingGroupName), si la carga en el grupo Auto Scaling se distribuye entre las instancias.

  • Las siguientes métricas no sirven para hacer un seguimiento de destino:

    • El número de solicitudes recibidas por el balanceador de carga frente al grupo de Auto Scaling (es decir, la métrica de Elastic Load BalancingRequestCount). El número de solicitudes recibidas por el balanceador de carga no cambia en función de la utilización del grupo de Auto Scaling.

    • Latencia de solicitudes del balanceador de carga (es decir, la métrica Elastic Load BalancingLatency). La latencia de solicitudes puede aumentar si lo hace la utilización, pero el cambio no tiene que hacerse necesariamente de forma proporcional.

    • La métrica de la cola de Amazon SQS de CloudWatchApproximateNumberOfMessagesVisible. El número de mensajes de una cola no tiene por qué cambiar en proporción al tamaño del grupo de Auto Scaling que procesa los mensajes de la cola. Sin embargo, una métrica personalizada que mide el número de mensajes de la cola por instancia EC2 en el grupo de Auto Scaling pueden funcionar. Para obtener más información, consulte Escalado basado en Amazon SQS.

  • Las políticas de escalado de seguimiento de destino no efectúan el escalado descendente del grupo de Auto Scaling cuando la métrica especificada no tiene datos, a menos que use la herramientaALBRequestCountPerTargetMétrica de. Esto funciona porque la métrica ALBRequestCountPerTarget emite ceros para periodos sin datos asociados y la política de seguimiento de destino requiere datos métricos para interpretar una tendencia de baja utilización. Para que su grupo de Auto Scaling alcance en 0 instancias cuando no se enrutan solicitudes al grupo de destino del Application Load Balancer, la capacidad mínima del grupo debe ser de 0.

  • Para utilizar elALBRequestCountPerTarget, debe especificar laResourceLabelPara identificar el grupo de destino del balanceador de carga asociado con la métrica.

Monitorear métricas de Amazon EC2

Para garantizar una respuesta más rápida a los cambios en el valor de la métrica, recomendamos que escale las métricas con una frecuencia de 1 minuto. Realizar el escalado utilizando métricas con una frecuencia de 5 minutos puede generar un tiempo de respuesta más lento y hacer que el escalado se realice con datos de métricas que están obsoletos.

Para obtener este nivel de datos para las métricas de Amazon EC2, debe habilitar específicamente la supervisión detallada. De forma predeterminada, las instancias de Amazon EC2 tienen habilitada la monitorización básica, lo que significa que los datos de las métricas de las instancias están disponibles en frecuencias de 5 minutos. Para obtener más información, consulte Configuración de la supervisión para instancias de Auto Scaling.

Calentamiento de la instancia

Cuando crea una política de escalado de seguimiento de destino, puede especificar el número de segundos que se tarda en preparar una instancia recién lanzada. Hasta que finaliza el tiempo de preparación especificado, la instancia no se tiene en cuenta para las métricas agregadas del grupo de Auto Scaling.

Durante el escalado ascendente, no consideramos las instancias que se están preparando como parte de la capacidad actual del grupo, por lo que no se ven afectadas las métricas por un mayor uso de recursos durante el inicio. Con esto nos aseguramos de no añadir más instancias de las que necesita.

Durante el escalado descendente, consideramos las instancias que están terminando como parte de la capacidad actual del grupo. Por lo tanto, no eliminaremos más instancias del grupo de Auto Scaling que las necesarias.

Una actividad de escalado descendente no se puede iniciar mientras haya una actividad de escalado ascendente en curso.

Crear una política de escalado de seguimiento de destino (consola)

Puede elegir configurar una directiva de escala de seguimiento de destino en un grupo de Auto Scaling a medida que lo crea o después de crear el grupo Auto Scaling.

Para crear un grupo de Auto Scaling con una política de escalado de seguimiento de destino

  1. Abra la consola de Amazon EC2 Auto Scaling enhttps://console.aws.amazon.com/ec2autoscaling/.

  2. Elija Create Auto Scaling group (Crear grupo de Auto Scaling).

  3. En los pasos 1, 2 y 3, elija las opciones que desee y continúe conPaso 4: Configure el tamaño del grupo y las políticas de escalado.

  4. UNDERTamaño del grupo, especifique el rango entre el que desea escalar actualizando la capacidad mínima y la capacidad máxima. Estas dos configuraciones permiten que el grupo Auto Scaling escale dinámicamente. Amazon EC2 Auto Scaling escala su grupo en el rango de valores especificado por la capacidad mínima y la capacidad máxima.

  5. UNDERPolíticas de escalado, elijaPolítica de escalado de seguimiento de destino.

  6. Para definir una política, haga lo siguiente:

    1. Especifique un nombre para la política.

    2. En Tipo de métrica, elija una métrica.

      Si eligióRecuento Application Load Balancer de aplicaciones por destinoEn, elija un grupo de destinoGrupo de destinos.

    3. Especifique un valor de destino para la métrica en Target value.

    4. (Opcional) Especifique un valor de preparación de instancia para Instances need (Instancias necesarias). Esto le permite controlar el tiempo hasta que una instancia recién lanzada pueda contribuir a las métricas de CloudWatch.

    5. (Opcional) Seleccione Disable scale in to create only a scale-out policy (Deshabilitar el escalado descendente para crear solo una política de escalado ascendente). De este modo, si lo desea, puede crear por separado una política de escalado descendente de otro tipo.

  7. Continúe con la creación del grupo de Auto Scaling. La política de escalado se creará después de que se haya creado el grupo Auto Scaling.

Para crear una política de escalado de seguimiento de destino para un grupo de Auto Scaling existente

  1. Abra la consola de Amazon EC2 Auto Scaling enhttps://console.aws.amazon.com/ec2autoscaling/.

  2. Seleccione la casilla de verificación situada junto a su grupo de Auto Scaling.

    Se abre un panel dividido en la parte inferior de la página Auto Scaling groups (Grupos de Auto Scaling) que muestra información sobre el grupo seleccionado.

  3. Compruebe que la capacidad mínima y la capacidad máxima estén establecidas correctamente. Por ejemplo, si el grupo ya tiene el tamaño máximo, especifique un nuevo valor máximo de escalado ascendente. El Auto Scaling de Amazon EC2 no escalará el grupo de por debajo de la capacidad mínima ni por encima de la capacidad máxima. Para actualizar el grupo, en la pestaña Details (Detalles), cambie la configuración actual para la capacidad mínima y máxima.

  4. En la páginaEscalado automático, enPolíticas de escalado, elijaCrear directiva de escalado dinámico.

  5. Para definir una política, haga lo siguiente:

    1. En Policy type (Tipo de política), deje el valor predeterminado de Target tracking scaling (Escalado de seguimiento de destino).

    2. Especifique un nombre para la política.

    3. En Tipo de métrica, elija una métrica. Solo puede elegir un tipo de métrica. Para utilizar más de una métrica, cree varias políticas.

      Si eligióRecuento Application Load Balancer de aplicaciones por destinoEn, elija un grupo de destinoGrupo de destinos.

    4. Especifique un valor de destino para la métrica en Target value.

    5. (Opcional) Especifique un valor de preparación de instancia para Instances need (Instancias necesarias). Esto le permite controlar el tiempo hasta que una instancia recién lanzada pueda contribuir a las métricas de CloudWatch.

    6. (Opcional) Seleccione Disable scale in to create only a scale-out policy (Deshabilitar el escalado descendente para crear solo una política de escalado ascendente). De este modo, si lo desea, puede crear por separado una política de escalado descendente de otro tipo.

  6. Seleccione Create (Crear).

Cree una política de escalado de seguimiento de destino (AWS CLI)

UsarAWS CLItal y como se indica a continuación para configurar políticas de escalado de seguimiento de destino para su grupo de Auto Scaling.

Paso 1: Creación de un grupo de Auto Scaling

Usarcreate-auto-scaling-groupPara crear un grupo de Auto Scaling llamadomy-asgUso de la configuración de lanzamientomy-launch-config. Si no dispone de una configuración de inicio que desee utilizar, puede crear una llamando acreate-launch-configuration.

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-configuration-name my-launch-config \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --max-size 5 --min-size 1

Paso 2: Crear una política de escalado de seguimiento de destino

Tras haber creado el grupo de Auto Scaling, puede crear una política de escalado de seguimiento de destino que indique a Amazon EC2 Auto Scaling que aumente y reduzca el número de instancias EC2 en ejecución en el grupo de manera dinámica cuando cambie la carga de la aplicación.

Ejemplo: Archivo de configuración de seguimiento de destino

A continuación, se incluye un ejemplo de configuración de seguimiento de destino que mantiene la utilización media de la CPU en un 40 por ciento. Guarde esta configuración en un archivo llamado config.json.

{ "TargetValue": 40.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ASGAverageCPUUtilization" } }

Para obtener más información, consultePredefinedMetricSpecificationen laReferencia de la API de Amazon EC2 Auto Scaling.

También puede personalizar la métrica utilizada para el escalado mediante la creación de una especificación de métrica personalizada y la adición de valores para cada parámetro desde CloudWatch. ​A continuación, se muestra un ejemplo de configuración de seguimiento de destino que mantiene la utilización media de la métrica especificada en un 40 por ciento.

{ "TargetValue":40.0, "CustomizedMetricSpecification":{ "MetricName":"MyUtilizationMetric", "Namespace":"MyNamespace", "Dimensions":[ { "Name":"MyOptionalMetricDimensionName", "Value":"MyOptionalMetricDimensionValue" } ], "Statistic":"Average", "Unit":"Percent" } }

Para obtener más información, consulte CustomizedMetricSpecification en la Referencia de la API de Auto Scaling de Amazon EC2.

Ejemplo: cpu40-target-tracking-scaling-policy

Usarput-scaling-policy, junto con el comandoconfig.jsonque creó anteriormente, para crear una política de escalado denominadacpu40-target-tracking-scaling-policyEste proceso mantiene la utilización media de la CPU del grupo de Auto Scaling en un 40 por ciento.

aws autoscaling put-scaling-policy --policy-name cpu40-target-tracking-scaling-policy \ --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \ --target-tracking-configuration file://config.json

Si tiene éxito, este comando devuelve los ARN y los nombres de las dos alarmas de CloudWatch creadas en su nombre.

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:228f02c2-c665-4bfd-aaac-8b04080bea3c:autoScalingGroupName/my-asg:policyName/cpu40-target-tracking-scaling-policy", "Alarms": [ { "AlarmARN": "arn:aws:cloudwatch:region:account-id:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e", "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e" }, { "AlarmARN": "arn:aws:cloudwatch:region:account-id:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2", "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2" } ] }