Escalado dinámico para Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling

Escalado dinámico para Amazon EC2 Auto Scaling

Al configurar el escalado dinámico, se define cómo escalar la capacidad del grupo de Auto Scaling en respuesta al cambio de demanda.

Por ejemplo, supongamos que tiene una aplicación web que actualmente se ejecuta en dos instancias y desea que la utilización de CPU del grupo de Auto Scaling permanezca en torno al 50 % cuando cambia la carga en la aplicación. De este modo dispone de capacidad adicional para manejar picos de tráfico sin mantener una cantidad excesiva de recursos inactivos.

Puede configurar su grupo de Auto Scaling para que escale dinámicamente a fin de satisfacer esta necesidad mediante la creación de una política de seguimiento de destino, paso o escalado simple. Amazon EC2 Auto Scaling puede escalar horizontalmente el grupo (agregar más instancias) para hacer frente a la alta demanda en las horas punta, y reducir horizontalmente el grupo (ejecutar menos instancias) para reducir los costes durante los periodos de baja utilización.

Funcionamiento de las políticas de escalado dinámico

Una política de escalado dinámico indica a Amazon EC2 Auto Scaling que debe realizar un seguimiento de una métrica CloudWatch específica y define qué acción debe llevarse a cabo cuando la alarma de CloudWatch asociada está en ALARMA. Las métricas que se utilizan para desencadenar una alarma son una agregación de métricas procedentes de todas las instancias del grupo de Auto Scaling. (Por ejemplo, supongamos que tiene un grupo de Auto Scaling con dos instancias, donde una instancia tiene un 60 % de CPU y la otra tiene un 40 % de CPU. Tienen el 50 por ciento de promedio de CPU). Cuando la política está en vigor, Amazon EC2 Auto Scaling ajusta la capacidad deseada del grupo hacia arriba o hacia abajo cuando se activa la alarma.

Cuando se invoca una política de escalado, si el cálculo de capacidad produce un número fuera del rango entre el tamaño mínimo y máximo del grupo, Amazon EC2 Auto Scaling garantiza que la nueva capacidad nunca se salga de los límites de tamaño mínimo y máximo. La capacidad se mide de una de estas dos maneras: utilizando las mismas unidades que eligió al definir la capacidad deseada en términos de instancias o utilizando unidades de capacidad (si se aplica la ponderación de instancia).

  • Ejemplo 1: un grupo de Auto Scaling tiene una capacidad máxima de 3, una capacidad actual de 2 y una política de escalado dinámico que agrega 3 instancias. Al invocar esta política, Amazon EC2 Auto Scaling solo agrega 1 instancia al grupo para evitar que este supere su tamaño máximo.

  • Ejemplo 2: un grupo de Auto Scaling tiene una capacidad mínima de 2, una capacidad actual de 3 y una política de escalado dinámico que elimina 2 instancias. Al invocar esta política, Amazon EC2 Auto Scaling solo quita 1 instancia del grupo para evitar que este sea menor que su tamaño mínimo.

Cuando la capacidad deseada alcanza el límite de tamaño máximo, el escalado ascendente se detiene. Si la demanda cae y la capacidad disminuye, Amazon EC2 Auto Scaling puede volver a escalar horizontalmente.

La excepción es cuando se utiliza la ponderación de instancias. En este caso, Amazon EC2 Auto Scaling puede escalar horizontalmente por encima del límite de tamaño máximo, pero solo por hasta la ponderación máxima de instancia. Su intención es acercarse lo más posible a la nueva capacidad deseada, pero aún así respetar las estrategias de asignación que se han especificado para el grupo. Las estrategias de asignación determinan los tipos de instancia que se van a lanzar. Los pesos determinan cuántas unidades de capacidad aporta cada instancia a la capacidad deseada del grupo en función de su tipo de instancia.

  • Ejemplo 3: un grupo de Auto Scaling tiene una capacidad máxima de 12, una capacidad actual de 10 y una política de escalado dinámico que agrega 5 unidades de capacidad. Los tipos de instancia tienen una de las tres ponderaciones asignadas: 1, 4 o 6. Al invocar la política, Amazon EC2 Auto Scaling elige lanzar un tipo de instancias con una ponderación de 6 en función de la estrategia de asignación. El resultado de este evento de escalado ascendente es un grupo con una capacidad deseada de 12 y una capacidad actual de 16.

Tipos de políticas de escalado dinámico

Amazon EC2 Auto Scaling admite los siguientes tipos de política de escalado dinámico:

  • Escalado de seguimiento de destino: permite aumentar o reducir la capacidad actual del grupo en función de un valor objetivo para una métrica específica. Funciona de forma similar a los termostatos, que mantienen la temperatura del hogar: selecciona una temperatura y el termostato hace el resto.

  • Escalado por pasos: permite aumentar o reducir la capacidad actual del grupo en función de una serie de ajustes de escalado, denominados ajustes por pasos, que variarán en función del tamaño de la interrupción de alarma.

  • Escalado sencillo: permite aumentar o reducir la capacidad actual del grupo en función de un único ajuste de escalado.

Si realiza el escalado en función de una métrica de utilización que aumenta o disminuye en proporción al número de instancias de un grupo de Auto Scaling, le recomendamos que utilice políticas de escalado de seguimiento de destino. De lo contrario, le recomendamos que utilice políticas de escalado por pasos.

Varias políticas de escalado dinámico

En la mayoría de los casos, una política de escalado de seguimiento de destino es suficiente para configurar el grupo de Auto Scaling para que se escale y reduzca horizontalmente de forma automática. Una política de escalado de seguimiento de destino le permite seleccionar un resultado deseado y hacer que el grupo de Auto Scaling agregue y quite instancias según sea necesario para lograr ese resultado.

Para una configuración de escalado avanzada, el grupo de Auto Scaling puede tener más de una política de escalado. Por ejemplo, puede definir una o más políticas de escalado de seguimiento de destino, una o más políticas de escalado por pasos o ambos tipos. Esto proporciona una mayor flexibilidad para abordar diferentes situaciones.

Para ilustrar cómo se combinan varias políticas de escalado dinámico, considere una aplicación que utiliza un grupo de Auto Scaling y una cola de Amazon SQS para enviar solicitudes a una sola instancia EC2. Para garantizar que la aplicación funciona en niveles óptimos, existen dos políticas que controlan cuándo debe escalarse horizontalmente el grupo de Auto Scaling. Una es una política de seguimiento de destino que utiliza una métrica personalizada para añadir y eliminar capacidad en función del número de mensajes SQS en la cola. La otra es una política de escalado por pasos que utiliza la métrica CPUUtilization de Amazon CloudWatch para agregar capacidad cuando la instancia supera el 90 % de utilización durante un periodo de tiempo específico.

Cuando hay varias políticas en vigor a la vez, existe la posibilidad de que cada una de ellas pueda indicar al grupo de Auto Scaling que escale (o reduzca) horizontalmente al mismo tiempo. Por ejemplo, es posible que la métrica CPUUtilization presente un pico y desencadene la alarma de CloudWatch al mismo tiempo que la métrica personalizada de SQS presente otro pico y desencadene la alarma de la métrica personalizada.

Cuando se producen estas situaciones, Amazon EC2 Auto Scaling elige la política que proporciona la mayor capacidad tanto para el escalado como para la reducción horizontal. Por ejemplo, suponga que la política CPUUtilization lanza una instancia, mientras que la política de la cola de SQS lanza dos instancias. Si se cumple el criterio de escalado horizontal de ambas políticas al mismo tiempo, Amazon EC2 Auto Scaling da prioridad a la política de la cola de SQS. Por consiguiente, el grupo de Auto Scaling lanzará dos instancias.

El enfoque de dar prioridad a la política que proporciona la mayor capacidad se aplica incluso cuando las políticas utilizan criterios diferentes para el escalado descendente. Por ejemplo, si una política termina tres instancias, otra política disminuye el número de instancias en un 25 % y el grupo tiene ocho instancias en el momento de reducir horizontalmente, Amazon EC2 Auto Scaling prioriza la política que proporciona el mayor número de instancias para el grupo. Esto da lugar a que el grupo de Auto Scaling termine dos instancias (25 por ciento de 8 = 2). La intención es evitar que Amazon EC2 Auto Scaling elimine demasiadas instancias.

Sin embargo, recomendamos precaución al utilizar políticas de escalado de seguimiento de destino con políticas de escalado por pasos, ya que los conflictos entre estas políticas pueden provocar un comportamiento no deseado. Por ejemplo, si la política de escalado por pasos inicia una actividad de escalado antes de que la política de seguimiento de destino esté lista para escalar, la actividad de escalado no se bloqueará. Una vez completada la actividad de escalado, la política de seguimiento de destino podría indicar al grupo que vuelva a escalar.