Честно говоря, на самом деле нет действительно хорошего способа сделать это. Лучший способ, который я нашел, - это указать версию в имени ASG. Каждый раз, когда я обновляю AMI, я создаю новую конфигурацию запуска ASG + с новой версией, чтобы она не конфликтовала с другой группой. Затем я завершаю все экземпляры в старой группе.
Если требуется более отказоустойчивое развертывание, я рекомендую добавить еще один шаг, включая создание нового балансировщика нагрузки. Это позволяет изолировать обе ASG друг от друга. Это также позволяет вам иметь «промежуточную» область для проверки ваших изменений в последний раз перед обновлением. Тогда, когда ты
Я хотел бы предложить "AWS-HA-Release" для этого - как работает AWS-HA-Release:
В этом случае вы можете отправить новый код или новые версии AMI без простоев и преимущества полностью новых экземпляров. Инструмент AWS-HA-Release доступен по адресу https://github.com/colinbjohnson/aws-missing-tools .
Also have a look at the Netflix Asgard tool that is now open source. Not only can it set up Auto Scaling Groups, it can also perform rolling releases of new AMI images for a group of instances.
способ, которым я управляю этим сценарием, заключается в использовании Функция UpdatePolicy объекта AWS :: AutoScaling :: AutoScalingGroup в формировании облака. когда стек формирования облаков обновляется, он будет управлять циклическим циклом экземпляров
, некоторые ссылки. http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide /aws-attribute-updatepolicy.html
Более простой способ - увеличить количество минимальных экземпляров в группе автоматического масштабирования (ASG) до удвоения текущего количества, дождаться, когда все они будут запущены, а затем изменить это минимальное количество экземпляров. вплоть до того, что это было. ELB уничтожит старые экземпляры и оставит новые экземпляры с кодом. Чтобы добиться этого, для политики завершения необходимо установить значение « OldestInstance », чтобы она работала должным образом. Политика завершения по умолчанию может иметь нежелательные побочные эффекты.
Параметры и примеры интерфейса командной строки AWS можно посмотреть здесь: http://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html
Как я писал здесь (аналогичный вопрос, только с Terraform), он никоим образом не встроен в ASG, кроме случаев, когда вы используете облачную информацию. Я тоже боролся с этим, поэтому в итоге написал "ролик", который следит за несколькими ASG, проверяет их состояние и обновления. Всегда рады вашим отзывам. http://github.com/deitch/aws-asg-roller
По состоянию на 16.06.2020 EC2 AutoScaling поддерживает обновление экземпляра — один вызов API для безопасной и автономной замены каждого экземпляра в ASG.
Чтобы использовать его, обновите ASG, задайте Конфигурацию запуска или Шаблон запуска, содержащий нужный AMI, а затем вызовите StartInstanceRefresh.
https://aws.amazon.com/blogs/compute/introduction-instance-refresh-for-ec2-auto-scaling/