O escalonamento automático do Elastic Beanstalk está adicionando nós antes de mover o aplicativo de ondeck para atual

2

Quando as regras de escalonamento automático no meu grupo acionam a implantação de uma nova instância do EC2 ou, por exemplo, eu altero o tamanho da instância para simular o comportamento do nó, mas ele é adicionado ao balanceador de carga antes que o aplicativo esteja pronto. / p>

A implantação é iniciada e os scripts em .ebextensions começam a ser executados. A pasta intitulada current está vazia, pois é a primeira implementação neste nó, portanto, o acesso a este nó exibe um erro 403 Forbidden no navegador.

Eventualmente, a implantação do aplicativo é concluída e a pasta ondeck é movida para a corrente conforme o esperado, ponto no qual o aplicativo funciona e o erro 403 desaparece.

O problema aqui é que o nó é adicionado ao balanceador de carga antes que esse processo seja concluído, de forma que parte do tráfego seja distribuída para nós quebrados.

Existe alguma maneira de impedir que isso aconteça? Estou fazendo algo errado?

    
por Ben Swinburne 26.10.2014 / 17:14

1 resposta

5

O balanceador de carga começará a enviar tráfego para a nova instância do EC2 assim que a instância começar a passar na verificação de integridade do balanceador de carga. Eu estou supondo que seu balanceador de carga está configurado com uma verificação de integridade de ping TCP. Isso significa que, assim que a nova instância começar a responder a pings na porta 80, ela será considerada saudável e pronta para receber solicitações. Como você notou, no entanto, isso acontecerá antes que o aplicativo seja totalmente implantado e realmente forneça boas respostas.

A solução é configurar seu balanceador de carga para executar uma verificação de integridade com solicitações HTTP, para que a nova instância do EC2 não seja considerada em bom estado até que seu aplicativo esteja em execução e respondendo com êxito às solicitações da web. No console da AWS, encontre a seção Balanceadores de carga do painel do EC2 e selecione o balanceador de carga para o seu ambiente do Elastic Beanstalk. Você verá uma guia Verificação de saúde no painel de configuração dos balanceadores de carga, onde é possível editar as configurações de verificação de integridade e alternar para solicitações HTTP como seu método ping.

Se seu aplicativo estiver configurado para manipular somente solicitações enviadas por meio do nome do host de produção, você poderá descobrir que a verificação de integridade de HTTP sempre falha. O balanceador de carga envia solicitações para a URL específica da instância do EC2 e, se o aplicativo responder a essas solicitações com erros ou redirecionamentos 30x, o balanceador de carga considerará insalubre. Nesse caso, você precisará adicionar uma exceção à sua solicitação de filtragem para permitir que a solicitação de verificação de integridade seja bem-sucedida, independentemente do nome do host. Por exemplo, adicione um arquivo estático, vazio elbhealthcheck.html (ou o que você quiser dar nome) ao seu aplicativo e permita solicitações para esse arquivo com qualquer nome de host. Em seguida, configure a verificação de integridade do balanceador de carga para usar esse URL em seu ping HTTP, e você estará pronto.

    
por 17.11.2014 / 21:16