Balancear um serviço do Amazon ECS entre zonas de disponibilidade - Amazon Elastic Container Service

Balancear um serviço do Amazon ECS entre zonas de disponibilidade

Para ajudar suas aplicações a alcançar alta disponibilidade, recomendamos configurar seus serviços multitarefas para serem executados em várias zonas de disponibilidade. Para serviços que especificam que sua primeira estratégia de colocação seja distribuída por zonas de disponibilidade, a AWS faz o possível para distribuir uniformemente as tarefas de serviço nas zonas de disponibilidade disponíveis. No entanto, pode haver momentos em que o número de tarefas em execução em uma zona de disponibilidade não é o mesmo que em outras zonas de disponibilidade, como após uma interrupção na zona de disponibilidade. Para resolver esse desequilíbrio de tarefas, é possível habilitar o recurso de rebalanceamento de zonas de disponibilidade. Com o rebalanceamento de zonas de disponibilidade, o Amazon ECS monitora continuamente a distribuição de tarefas entre as zonas de disponibilidade para cada um dos seus serviços. Quando o Amazon ECS detecta uma distribuição desigual de tarefas, ele atua automaticamente para reequilibrar a workload entre as zonas de disponibilidade. Isso envolve o lançamento de novas tarefas em zonas de disponibilidade com menos tarefas em execução e o encerramento de tarefas em zonas de disponibilidade sobrecarregadas. Essa redistribuição garante que nenhuma zona de disponibilidade se torne um ponto de falha, ajudando a manter a disponibilidade geral de suas aplicações em contêineres. O processo de rebalanceamento automatizado elimina a necessidade de intervenção manual, acelerando o tempo de recuperação após um evento.

Uma visão geral do processo de rebalanceamento de zonas de disponibilidade é:

  1. O Amazon ECS começa a monitorar um serviço depois que ele atinge o estado estável e analisa o número de tarefas em execução em cada zona de disponibilidade.

  2. O Amazon ECS executa as seguintes operações ao detectar um desequilíbrio no número de tarefas em execução em cada zona de disponibilidade:

    • Envia um evento de serviço indicando que o rebalanceamento de zonas de sisponibilidade está começando.

    • Inicia tarefas em zonas de disponibilidade com o menor número de tarefas em execução

    • Interrompe as tarefas em zonas de disponibilidade com o maior número de tarefas em execução.

    • O agendador espera que as tarefas recém-iniciadas estejam HEALTHY e RUNNING antes de interromper as tarefas na zona de disponibilidade superdimensionada.

    • Envia um evento de serviço com o resultado do rebalanceamento de zonas de disponibilidade.

O rebalanceamento de zonas de disponibilidade oferece suporte aos tipos de execução do Fargate e do EC2. Para o Fargate, o Amazon ECS redistribuirá automaticamente as tarefas nas zonas de disponibilidade disponíveis para manter o equilíbrio. Para o tipo de execução do EC2, o Amazon ECS rebalanceia as tarefas entre as instâncias de contêineres existentes da melhor forma possível, respeitando suas estratégias e restrições de posicionamento definidas. No entanto, o ECS não pode provisionar novas instâncias em zonas de disponibilidade subutilizadas como parte do processo de rebalanceamento, limitando o rebalanceamento às instâncias de contêiner existentes.

O rebalanceamento de zonas de disponibilidade funciona nas seguintes configurações:

  • Serviços que usam a estratégia Replica

  • Os serviços que especificam a zona de disponibilidade se distribuem como a primeira estratégia de posicionamento de tarefas ou não especificam uma estratégia de posicionamento.

Não é possível usar o rebalanceamento de zonas de disponibilidade com serviços que atendem a qualquer um dos seguintes critérios:

  • Usam a estratégia Daemon

  • Usam o tipo de execução EXTERNAL (ECS Anywhere)

  • Usam 100% como valor de maximumPercent

  • Usam um Classic Load Balancer

  • Usa attribute:ecs.availability-zone como uma restrição de posicionamento de tarefas

Estratégias e restrições de posicionamento com rebalanceamento de zonas de disponibilidade

As estratégias de posicionamento determinam como o Amazon ECS seleciona instâncias de contêineres e zonas de disponibilidade para o término da colocação de tarefas. As restrições de posicionamento de tarefas são regras que determinam se uma tarefa pode ser executada em uma instância de contêiner específica. Para o tipo de execução do EC2, é possível usar estratégias e restrições de posicionamento em conjunto com o rebalanceamento de zonas de disponibilidade. No entanto, para que o rebalanceamento de zonas de disponibilidade funcione, a estratégia de posicionamento de distribuição em zonas de disponibilidade deve ser a primeira estratégia especificada. O rebalanceamento de zonas de disponibilidade é compatível com várias combinações de estratégias de posicionamento. Por exemplo, você pode criar uma estratégia que primeiro distribua as tarefas uniformemente entre as zonas de disponibilidade e, em seguida, agrupe as tarefas com base na memória dentro de cada zona de disponibilidade. Nesse caso, o rebalanceamento de zonas de disponibilidade funciona porque a estratégia de distribuição em zonas de disponibilidade é especificada primeiro. É importante observar que o rebalanceamento de zonas de disponibilidade não funcionará se a primeira estratégia na matriz da estratégia de posicionamento não for um componente de distribuição de zona de disponibilidade. Esse requisito garante que o foco principal da distribuição de tarefas seja manter o equilíbrio entre as zonas de disponibilidade, o que é crucial para a alta disponibilidade. Para obter mais informações sobre estratégias e restrições de posicionamento de tarefas, consulte Como o Amazon ECS posiciona tarefas em instâncias de contêineres.

A estratégia a seguir distribui tarefas uniformemente em zonas de disponibilidade e, em seguida, agrupa as tarefas com base na memória em cada zona de disponibilidade. O rebalanceamento de zonas de disponibilidade é compatível com o serviço porque a estratégia spread é a primeira.

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

Ative o rebalanceamento de zonas de disponibilidade

É necessário habilitar o rebalanceamento de zonas de disponibilidade para serviços novos e existentes.

É possível habilitar e desabilitar rebalanceamento de zonas de disponibilidade usando o console, as APIs ou a AWS CLI.