En AWS nos gustaría usar ELB para equilibrar la carga de instancias EC2 que alojan múltiples aplicaciones. Idealmente, nos gustaría tener un chequeo de salud para la aplicación.
Sin embargo, AWS Elastic Load Balancers actualmente solo le permite hacer ping a una ubicación para una comprobación de estado.
¿Cuál sería la mejor manera de implementar una comprobación de estado con ELB que tenga en cuenta el estado de múltiples aplicaciones implementadas en cada instancia de EC2?
amazon-web-services
amazon-elb
healthcheck
Andrei Fierbinteanu
fuente
fuente
Respuestas:
Aquí hay dos formas de resolver esto;
La primera opción es agregar otra comprobación de estado en el host que valida el estado y devuelve HTTP 200s al ELB si la lógica dice que desea mantener el host en línea. La lógica que hay, por supuesto, depende de usted. La desventaja aquí sería que si la aplicación 2 se implementara con éxito en algunos hosts, todos los hosts seguirían siendo "saludables" y recibirían tráfico.
Otra opción es usar un ELB adicional para cada aplicación. Puede apuntar varios ELB a las mismas instancias EC2 de back-end y el costo es bastante menor para hacerlo. De esa manera, puede verificar el estado por aplicación y eliminar hosts con problemas a nivel de aplicación en lugar de un enfoque de todo o nada.
Editar: Tenga en cuenta que esta es una respuesta anterior y es específica para ELB, no para ALB. ALB admite objetivos separados en un host de forma nativa.
fuente
Usar un ELB por aplicación es el camino a seguir aquí.
Primero, puede necesitarlos de todos modos si cada aplicación está en su propio dominio y necesita admitir SSL. Actualmente, los ELB de Amazon solo permiten un certificado SSL para cada dominio, lo que requiere ELB por separado para cada dominio habilitado para SSL. (Las certificaciones SSL comodín son una excepción).
El desafío aquí es que las comprobaciones de estado de ELB no se pueden dirigir actualmente a un dominio virtual particular alojado en una instancia EC2. (No se envía el encabezado "Host:"). Los pings de estado de ELB siempre van al dominio predeterminado, como si hubiera cargado la dirección IP para la instancia EC2 en su navegador. Por lo tanto, se requiere un poco de pegamento para recibir las comprobaciones de estado en el dominio predeterminado y luego responder con el estado de estado de una aplicación en particular.
Aquí hay un ejemplo de configuración de trabajo que podría agregarse a una
server
directiva Nginx . Se instalaría en cada una de las instancias EC2 con carga equilibrada.En la configuración "Comprobación de estado" del ELB para "first-application.com", debe seleccionar "HTTP" y el Puerto 80 e ingresar una ruta como:
/health-check/first-application.com
Con la configuración de Nginx anterior ejecutándose en el host, la solicitud se recibiría en el dominio predeterminado y representaría la respuesta de la configuración de Nginx en el mismo host para https://first-application.com/api/v1/status
Con este enfoque, no hay configuración por aplicación en Nginx. Siempre que cada aplicación tenga un nombre de dominio único, solo debe asegurarse de configurar un ELB para cada aplicación de manera adecuada.
fuente
El 11 de agosto de 2016, Amazon presentó Balanceadores de carga de aplicaciones . Estos le permiten especificar múltiples grupos objetivo, cada uno con su propio tipo de comprobación de estado. ¡Esto ahora es posible usando un solo balanceador de carga!
fuente