Estou usando uma plataforma de infraestrutura que consiste em contêineres docker em execução em um host CentOS.
- Dimensionando vários contêineres por meio do Docker Compose.
- Cônsul para descoberta de serviços.
- Registrador de registro de serviço
- HAProxy como balanceador de carga
- Consul-template para gerar configuração haproxy cada vez que o container é adicionado/removido.
Cada vez que atualizamos nossa compilação, novos contêineres são gerados e os antigos são removidos. O problema é que os contêineres são removidos instantaneamente sem considerar as solicitações existentes atendidas pelos contêineres. Idealmente, eu deveria ter um sinal para marcar os contêineres em modo de manutenção ou drenagem para que as conexões existentes possam ser atendidas e depois removidas graciosamente do haproxy primeiro e depois fisicamente.
Alguém já enfrentou esse problema antes ou fez o fluxo de trabalho de escalonamento automático semelhante por meio de contêineres.
Pelo que entendi do que você está perguntando, você tem controle sobre todas as etapas desse processo e deseja criar novas versões de um aplicativo em contêiner que fica atrás do HAProxy sem interromper as conexões do cliente com os aplicativos antigos, mas impedindo novas conexões.
Este parece ser um bom uso do comando HAProxy disable server .
Você deve ser capaz de desabilitar seus servidores obsoletos, marcando-os como inativos para manutenção no HAProxy, o que deve permitir que os clientes concluam seus negócios;