
Mi equipo y yo estamos tratando de encontrar la mejor manera de implementar azul/verde para AWS ECS, pero parece que no podemos responder definitivamente una pregunta sobre los balanceadores de carga de aplicaciones.
Hasta ahora, el método que parece cumplir mejor con nuestros objetivos es implementar un servicio azul y un servicio verde en grupos objetivo separados y actualizar el oyente en nuestro balanceador de carga de aplicaciones. Sin embargo, tenemos algunas transacciones de mayor duración y, según este artículo:
https://aws.amazon.com/blogs/compute/bluegreen-deployments-with-amazon-ecs/
Este método de azul/verde no drena correctamente las conexiones. Sin embargo, leí una publicación recientemente de otro ingeniero de AWS que contradice eso y afirma que modificar el oyente solo afecta las nuevas conexiones entrantes y, por lo tanto, se drena sin problemas.
¿Alguien puede aclarar qué sucede realmente cuando modifico el oyente para un ELB?
Respuesta1
Deberíatener ELB como parte de su pila, es decir, un ELB paraazulpila y un ELB paraverdepila.
De esa manera, puede ejecutar una serie completa de pruebas de aceptación contra el nuevo ELB y, una vez satisfecho,reemplazar el nombre de ELB en DNS. Eso no afectará sus sesiones de larga duración, ya que conservarán sus conexiones al antiguo ELB incluso si cambia el DNS.
Espero que ayude :)
Respuesta2
Documentación de AWS sobre balanceadores de carga de aplicacionesafirma que cuando se cancela el registro de un objetivo, sus conexiones se agotan. Lo que podría hacer es cancelar el registro de objetivos dentro de su grupo objetivo para drenar las conexiones de manera elegante. Por supuesto, esto no es tan ideal como seleccionar entre varios grupos objetivo.
Recuerde que tampoco puede tener varios oyentes dentro del mismo ELB con el mismo protocolo de puerto.
Como indicó otro usuario en su respuesta, debe tener ELB separados en su implementación y simplemente alternar entre ellos en Route53. De esta manera, puede utilizar fácilmente las políticas de enrutamiento para enviar solo una parte del tráfico al ELB/grupo objetivo apropiado (digamos, 80 % al azul, 20 % al verde).