Развертывание AWS WebApp Blue / Green без прерывания сеансов

Мой пример использования: у меня есть веб-приложение, обслуживаемое Elastic Load Balancer, которое находится перед 1 экземпляром EC2. Архитектура нацелена на симуляцию потока развертывания Blue/Green, что означает, что я включу второй экземпляр, когда мне нужно будет обновить код и переключить тот, на который указывает мой ELB.

Давайте предположим, что Instance-A имеет текущую версию моего приложения, мой ELB направляет трафик к этому экземпляру, поскольку он является единственным доступным. Я хочу отправить обновления в мое приложение, поэтому я развернул новую версию своего приложения в Instance-B (включил экземпляр B и развернул новую версию кода). Тем временем любой пользователь, посещающий мое приложение, все равно будет перенаправлен в Instance-A и будет создан сеанс, пока я не выполню переключение.

Как только Instance-B развернут и доступен с более новым кодом, как я могу гарантировать, что ELB будет отправлять новый трафик только на Instance-B, и сохранять старый трафик (предыдущие пользователи и их сеанс) на instanceA, пока я не откажусь от последнего из балансировщик нагрузки?

Надеюсь, что это имеет смысл, я знаю, что этот дизайн архитектуры не является правильной реализацией Blue/Green Deployment. Но из-за размера моего приложения и бюджета я хотел бы ограничить количество используемых экземпляров.

Спасибо за помощь.

1 ответ

Хорошо, если вы используете классический ELB, вам нужно создать политику привязки для ELB, вы можете найти подробные инструкции здесь https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html

Если вы используете ALB или приложение, балансировщики нагрузки практически одинаковы, но в липкой политике находятся над целевой группой https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html

Если вы хотите улучшить свою сине-зеленую стратегию развертывания, было бы лучше использовать Route53, чтобы сделать переход, и стоимость очень низкая

надеюсь, это поможет

Другие вопросы по тегам