Equilibrio de un servicio de Amazon ECS entre zonas de disponibilidad - Amazon Elastic Container Service

Equilibrio de un servicio de Amazon ECS entre zonas de disponibilidad

Para ayudar a que sus aplicaciones alcancen una alta disponibilidad, le recomendamos configurar sus servicios multitarea para que se ejecuten en varias zonas de disponibilidad. En el caso de los servicios que especifican que su primera estrategia de ubicación es la distribución por zonas de disponibilidad, AWS hace todo lo posible por distribuir uniformemente las tareas de servicio entre las zonas de disponibilidad disponibles.

Sin embargo, puede haber ocasiones en las que la cantidad de tareas que se ejecutan en una zona de disponibilidad no sea la misma que en otras zonas de disponibilidad, como, por ejemplo, después de una interrupción en una zona de disponibilidad. Para corregir este desequilibrio de tareas, puede habilitar la característica de reequilibrio de las zonas de disponibilidad.

Con el reequilibrio de las zonas de disponibilidad, Amazon ECS supervisa de forma continua la distribución de las tareas entre las zonas de disponibilidad para cada uno de los servicios. Cuando Amazon ECS detecta una distribución desigual de las tareas, toma medidas automáticamente para reequilibrar la carga de trabajo entre las zonas de disponibilidad. Esto implica lanzar nuevas tareas en las zonas de disponibilidad con el menor número de tareas y finalizar las tareas en las zonas de disponibilidad sobrecargadas.

Esta redistribución garantiza que ninguna zona de disponibilidad se convierta en un punto de error, lo que ayuda a mantener la disponibilidad general de las aplicaciones en contenedores. El proceso de reequilibrio automatizado elimina la necesidad de intervención manual, lo que acelera el tiempo de recuperación después de un evento.

A continuación, se muestra el proceso de reequilibrio de zonas de disponibilidad:

  1. Amazon ECS comienza a supervisar un servicio una vez que alcanza el estado estable y analiza el número de tareas que se ejecutan en cada zona de disponibilidad.

  2. Amazon ECS realiza las siguientes operaciones cuando detecta un desequilibrio en el número de tareas que se ejecutan en cada zona de disponibilidad:

    • Envía un evento de servicio que indica que se está iniciando el reequilibrio de las zonas de disponibilidad.

    • Inicia tareas en las zonas de disponibilidad con el menor número de tareas en ejecución.

    • Detiene las tareas en las zonas de disponibilidad con el mayor número de tareas en ejecución.

    • El programador espera a que las tareas recién iniciadas tengan el estado HEALTHY y RUNNING antes de detenerlas en la zona de disponibilidad sobredimensionada.

    • Envía un evento de servicio con el resultado del reequilibrio de la zona de disponibilidad.

Cómo detecta Amazon ECS la distribución desigual de las tareas

Amazon ECS determina un desequilibrio en el número de tareas que se ejecutan en cada zona de disponibilidad dividiendo el recuento de tareas deseado del servicio entre el número de zonas de disponibilidad configuradas. Si el recuento de tareas deseado no se divide de manera uniforme, Amazon ECS distribuye el resto de las tareas de manera uniforme entre las zonas de disponibilidad configuradas. Cada zona de disponibilidad debe tener al menos una tarea.

Por ejemplo, considere un servicio de Amazon ECS con un recuento deseado de dos tareas configurado para dos zonas de disponibilidad. En este escenario, el recuento de tareas deseado se divide de manera uniforme. Una distribución equilibrada sería una tarea por zona de disponibilidad. Si hay dos tareas en la zona de disponibilidad 1 y cero tareas en la zona de disponibilidad 2, Amazon ECS aplicaría el reequilibrio iniciando una tarea en la zona de disponibilidad 2 antes de detener una tarea en la zona de disponibilidad 1.

Ahora, considere un servicio de Amazon ECS con un recuento deseado de tres tareas configurado para dos zonas de disponibilidad. En este escenario, el recuento de tareas deseado no se divide de manera uniforme. Una distribución equilibrada sería una tarea en la zona de disponibilidad 1 y dos tareas en la zona de disponibilidad 2, ya que cada zona de disponibilidad tiene al menos una tarea y la tarea restante se coloca en la zona de disponibilidad 2.

Considere un servicio de Amazon ECS que tenga un recuento deseado de cinco tareas configuradas para tres zonas de disponibilidad. En este escenario, el recuento de tareas deseado no se divide de manera uniforme. Una distribución equilibrada sería una tarea en la zona de disponibilidad 1 y dos tareas en cada una de las zonas de disponibilidad 2 y 3. Después de asignar una tarea a cada zona de disponibilidad, las dos tareas restantes se distribuyen de manera uniforme entre las zonas de disponibilidad.

Consideraciones para configurar el reequilibrio de zonas de disponibilidad

Tenga en cuenta lo siguiente cuando desee configurar el reequilibrio de zonas de disponibilidad:

  • El reequilibrio de la zona de disponibilidad es compatible con los tipos de lanzamiento de Fargate y EC2. En el caso de Fargate, Amazon ECS redistribuirá automáticamente las tareas entre las zonas de disponibilidad disponibles para mantener el equilibrio. Para el tipo de lanzamiento de EC2, Amazon ECS reequilibra las tareas entre las instancias de contenedores existentes en la medida en que sea posible, y respeta las estrategias y restricciones de ubicación definidas. Sin embargo, Amazon ECS no puede lanzar nuevas instancias en zonas de disponibilidad infrautilizadas como parte del proceso de reequilibrio, lo que limita el reequilibrio a las instancias de contenedor existentes.

  • El reequilibrio de las zonas de disponibilidad funciona en las siguientes configuraciones:

    • Servicios que utilizan la estrategia Replica

    • Los servicios que especifican la zona de disponibilidad se distribuyen como primera estrategia de ubicación de tareas o no especifican una estrategia de ubicación.

  • No puede utilizar el reequilibrio de zonas de disponibilidad con servicios que cumplan alguno de los siguientes criterios:

    • Utiliza la estrategia Daemon

    • Utiliza el tipo de lanzamiento EXTERNAL (ECS Anywhere)

    • Utiliza el 100 % para el valor de maximumPercent

    • Utiliza un equilibrador de carga clásico

    • Utiliza attribute:ecs.availability-zone como restricción de ubicación de tareas

Estrategias y restricciones de ubicación con el reequilibrio de las zonas de disponibilidad

Las estrategias de ubicación determinan la forma en que Amazon ECS selecciona las instancias de contenedor y las zonas de disponibilidad para finalizar la ubicación de tareas. Las restricciones de ubicación de las tareas son reglas que determinan si una tarea puede ejecutarse en una instancia de contenedor específica.

Para el tipo de lanzamiento de EC2, puede usar estrategias de ubicación y restricciones de ubicación junto con el reequilibrio de la zona de disponibilidad. Sin embargo, para que el reequilibrio de las zonas de disponibilidad funcione, la estrategia de distribución de las zonas de disponibilidad debe ser la primera estrategia especificada.

El reequilibrio de la zona de disponibilidad es compatible con varias combinaciones de estrategias de ubicación. Por ejemplo, puede crear una estrategia que primero distribuye las tareas de forma uniforme en las zonas de disponibilidad y, a continuación, agrupa las tareas en contenedores en función de la memoria de cada zona de disponibilidad. En este caso, el reequilibrio de las zonas de disponibilidad funciona porque primero se especifica la estrategia de distribución de las zonas de disponibilidad.

Es importante tener en cuenta que el reequilibrio de las zonas de disponibilidad no funcionará si la primera estrategia de la matriz de estrategias de ubicación no es un componente de distribución de las zonas de disponibilidad. Este requisito garantiza que el objetivo principal de la distribución de tareas sea mantener el equilibrio entre las zonas de disponibilidad, lo cual es crucial para una alta disponibilidad.

Para obtener más información sobre las estrategias y restricciones de ubicación de tareas, consulte Cómo coloca Amazon ECS las tareas en las instancias de contenedor.

No se admiten estrategias ni restricciones de ubicación de tareas para tareas que utilizan el tipo de lanzamiento de Fargate. Fargate hará todo lo posible para distribuir las tareas entre las zonas de disponibilidad accesibles. Si el proveedor de capacidad incluye Fargate y Fargate Spot, el comportamiento de distribución es independiente para cada proveedor de capacidad.

La estrategia de ejemplo siguiente distribuye las tareas de forma uniforme en las zonas de disponibilidad y, a continuación, agrupa las tareas en contenedores en función de la memoria de cada zona de disponibilidad. El reequilibrio de la zona de disponibilidad es compatible con el servicio porque la estrategia de spread es lo primero.

"placementStrategy": [ { "field": "attribute:ecs.availability-zone", "type": "spread" }, { "field": "memory", "type": "binpack" } ]

Activación del reequilibrio de la zona de disponibilidad

Debe habilitar el reequilibrio de la zona de disponibilidad para los servicios nuevos y existentes.

Puede habilitar y deshabilitar el reequilibrio de zonas de disponibilidad mediante la consola, las API o la AWS CLI.

En el siguiente ejemplo se muestra cómo habilitar el reequilibrio de servicios al crear un nuevo servicio:

aws ecs create-service \ --cluster my-cluster \ --service-name my-service \ --task-definition my-task-definition:1 \ --desired-count 6 \ --availability-zone-rebalancing ENABLED

Solución de problemas de reequilibrio de servicios

Si tiene problemas con el reequilibrio de los servicios, tenga en cuenta los siguientes pasos de solución de problemas:

El reequilibrio no se inicia

Verifique lo siguiente:

Errores en la ubicación de las tareas durante el reequilibrio

Si ve eventos SERVICE_TASK_PLACEMENT_FAILURE:

  • Para el tipo de lanzamiento de EC2: compruebe si tiene instancias de contenedor disponibles en la zona de disponibilidad de destino

  • Para el tipo de lanzamiento de Fargate: compruebe si hay restricciones de recursos o cuotas de servicio que limiten la ubicación de las tareas

  • Revise las restricciones de ubicación de tareas para asegurarse de que no impidan una distribución adecuada de estas

El reequilibrio se detiene inesperadamente

Si ve eventos SERVICE_REBALANCING_STOPPED:

  • Compruebe si hay alguna protección de tareas que pueda estar bloqueando la operación

  • Búsqueda de implementaciones de servicios simultáneas que puedan interrumpir el reequilibrio

  • Revise los eventos de servicio para obtener información adicional sobre por qué se detuvo el reequilibrio

Prácticas recomendadas para el reequilibrio de servicios

Siga estas prácticas recomendadas para sacar el máximo provecho del reequilibrio de servicio:

  • Monitoree las operaciones de reequilibrio: configure las alarmas de CloudWatch para monitorear los eventos de servicio relacionados con el reequilibrio e identificar rápidamente cualquier problema.

  • Tenga en cuenta el impacto en el rendimiento: tenga en cuenta que las operaciones de reequilibrio pueden aumentar temporalmente el uso de los recursos, ya que se inician nuevas tareas antes de que se detengan las antiguas.

  • Utilice la protección de tareas de forma estratégica: si tiene tareas críticas que no deberían finalizarse durante el reequilibrio, considere la posibilidad de utilizar la protección de tareas.

  • Planifique la capacidad de EC2: para el tipo de lanzamiento de EC2, asegúrese de tener suficientes instancias de contenedor en todas las zonas de disponibilidad para permitir un reequilibrio efectivo.

  • Compruebe el comportamiento de reequilibrio: antes de confiar en el reequilibrio en producción, compruebe cómo se comportan sus servicios durante las operaciones de reequilibrio en un entorno que no sea de producción.