Na AWS, gostaríamos de usar ELBs para equilibrar as instâncias do EC2 que hospedam vários aplicativos. Idealmente, gostaríamos de ter uma verificação de saúde para aplicação.
No entanto, atualmente, o AWS Elastic Load Balancers permite executar ping apenas em um local para uma verificação de integridade.
Qual seria a melhor maneira de implementar uma verificação de integridade com o ELB que leve em consideração o estado de vários aplicativos implantados em cada instância do EC2?
amazon-web-services
amazon-elb
healthcheck
Andrei Fierbinteanu
fonte
fonte
Respostas:
Aqui estão duas maneiras de resolver isso;
A primeira opção é adicionar outra verificação de saúde no host que valide a saúde e retorne HTTP 200s para o ELB se a lógica indicar que você deseja manter o host online. A lógica que depende, é claro, de você. A desvantagem aqui seria que, se o App 2 fosse implantado com êxito em alguns hosts, todos os hosts ainda ficariam "íntegros" e receberiam tráfego.
Outra opção é usar um ELB adicional para cada aplicativo. Você pode apontar vários ELBs para as mesmas instâncias de back-end do EC2 e o custo é bem pequeno para isso. Dessa forma, você pode verificar a integridade por aplicativo e eliminar hosts com problemas no nível por aplicativo, em vez de uma abordagem do tipo tudo ou nada.
Edit: Observe que esta é uma resposta mais antiga e é específica para ELB e não para ALB. O ALB suporta destinos separados em um host nativamente.
fonte
Usar um ELB por aplicativo é o caminho a seguir aqui.
Primeiro, você pode precisar deles de qualquer maneira, se cada aplicativo estiver em seu próprio domínio e precisar oferecer suporte a SSL. Atualmente, os Amazon ELBs permitem apenas um certificado SSL para cada domínio, exigindo ELBs separados para cada domínio ativado para SSL. (Certificações SSL curinga sendo uma exceção).
O desafio aqui é que atualmente as verificações de integridade do ELB não podem ser direcionadas para um domínio virtual específico hospedado em uma instância do EC2. (Nenhum cabeçalho "Host:" é enviado). Os pings de integridade do ELB sempre vão para o domínio padrão, como se você tivesse carregado o endereço IP da instância do EC2 no seu navegador. Portanto, é necessária alguma cola para receber as verificações de integridade no domínio padrão e, em seguida, responder com o status de integridade de um aplicativo específico.
Aqui está um exemplo de configuração de trabalho que pode ser adicionado a uma
server
diretiva Nginx . Ele seria instalado em cada uma das instâncias do EC2 com balanceamento de carga.Na configuração "Verificação de integridade" do ELB para "first-application.com", você selecionaria "HTTP" e a porta 80 e insira um caminho como:
/health-check/first-application.com
Com a configuração do Nginx acima em execução no host, a solicitação seria recebida no domínio padrão e forneceria proxy da resposta da configuração do Nginx no mesmo host para https://first-application.com/api/v1/status
Com essa abordagem, não há configuração por aplicativo no Nginx. Desde que cada aplicativo tenha um nome de domínio exclusivo, você precisa apenas configurar um ELB para cada aplicativo adequadamente.
fonte
Em 11 de agosto de 2016, a Amazon lançou os Application Load Balancers . Isso permite que você especifique vários grupos de destino, cada um com seu próprio tipo de verificação de saúde. Agora isso é possível usando um único balanceador de carga!
fonte