
Моя команда и я пытаемся найти наилучший способ внедрения сине-зеленой модели для AWS ECS, но мы не можем однозначно ответить на один вопрос о балансировщиках нагрузки приложений.
Пока что метод, который, кажется, больше всего соответствует нашим целям, заключается в развертывании синей и зеленой служб в отдельных целевых группах и обновлении слушателя на нашем балансировщике нагрузки приложения. Однако у нас есть несколько более длительных транзакций, и согласно этой статье:
https://aws.amazon.com/blogs/compute/bluegreen-deployments-with-amazon-ecs/
Этот метод синего/зеленого не позволяет изящно сбрасывать соединения. Однако я недавно прочитал пост другого инженера AWS, который противоречит этому и утверждает, что изменение прослушивателя влияет только на новые входящие соединения и, следовательно, сбрасывает изящно.
Может ли кто-нибудь прояснить, что на самом деле происходит, когда я изменяю прослушиватель для ELB?
решение1
Вам следуетиметь ELB как часть вашего стека, т.е. один ELB длясинийстек и один ELB длязеленыйкуча.
Таким образом, вы можете провести полный комплекс приемочных испытаний нового ELB и, как только будете удовлетворены,заменить имя ELB в DNS. Это не повлияет на ваши длительные сеансы, поскольку они сохранят свои соединения со старым ELB даже при изменении DNS.
Надеюсь, это поможет :)
решение2
Документация AWS по балансировщикам нагрузки приложенийутверждает, что когда вы отменяете регистрацию цели, ее соединения сбрасываются. Что вы можете сделать, так это отменить регистрацию целей в вашей целевой группе, чтобы изящно сбросить соединения. Конечно, это не так идеально, как выбор между несколькими целевыми группами.
Помните, что в одном ELB не может быть нескольких прослушивателей с одним и тем же протоколом порта.
Как другой пользователь указал в своем ответе, вам следует иметь отдельные ELB в вашем развертывании и просто переключаться между ними в Route53. Таким образом, вы можете легко использовать политики маршрутизации, чтобы отправлять только часть трафика в соответствующую ELB/Target Group (например, 80% в синий, 20% в зеленый).