Temos ambientes Docker de dimensionamento automático nos quais usamos o Consul para descoberta de serviços. Esses ambientes podem adicionar ou remover uma instância a cada poucos minutos.
Nosso teste inicial do Consul mostrou que era muito fácil para o Consul perder seu quorum. Talvez ingenuamente, nossa primeira experiência foi uma configuração na qual iniciaríamos um servidor Consul em todas as instâncias e fazer com que esse servidor Consul ingressasse no cluster. Essa parte estava funcionando bem.
No entanto, o Consul não colhe nós inacessíveis rapidamente (leva cerca de 72 horas?) Em ambientes muito escaláveis, o que significa que a lista de servidores Consul continua crescendo e, com o tempo, a maioria deles é "inacessível" e, nesse ponto, o cluster perde seu quorum.
Vimos a resposta de armon de quase dois anos atrás sobre esta questão no GitHub: https://github.com/hashicorp/consul/issues/454#issuecomment-125767550
A maioria desses problemas é causada por nosso comportamento padrão de tentar uma licença normal. Nosso modelo mental é que os servidores têm vida longa e não desligam por qualquer motivo que não seja a perda inesperada de energia ou uma manutenção normal, caso em que você precisa sair do cluster. Em retrospecto, isso foi um padrão ruim. Quase tudo isso pode ser evitado matando -9 o servidor Consul, afetando a simulação de perda de energia.
Estávamos tentando evitar a execução de nós dedicados e duradouros. Lembre-se de que, em nenhum momento, removemos instâncias N / 2 + 1 de um grupo de dimensionamento automático. O cluster EC2 pode, a qualquer momento, alcançar a maioria dos nós e deve poder votar se um nó deve ser removido do cluster Consul (ou outra ferramenta).
fonte
Respostas:
Eu definiria a
leave_on_terminate
opção como true. Conforme a documentaçãoO que acontece quando um nó é encerrado normalmente é enviar o SIGTERM a todos os processos antes do encerramento, com essa configuração no agente consul deixando o cluster para que não seja considerado um nó que pode ser reiniciado e voltar ao cluster em um algumas horas (que é o que sua cotação diz que faz por padrão).
fonte
shutdown -h now
, nó mortos ainda mostra-se ...