У меня есть настройка веб-приложения с балансировщиком нагрузки и группой автоматического масштабирования для управления масштабированием. Исходный код находится в репозитории git, поэтому мне не нужно обновлять изображения при изменении кода, но иногда меняется среда, поэтому мы создаем новый образ. Затем это изображение необходимо включить в группу автоматического масштабирования.
Есть ли способ автоматической циклической смены изображений? Прямо сейчас я планирую масштабирование действия, которое избавляет от старых экземпляров.
amazon-ec2
amazon-web-services
autoscaling
платформы
источник
источник
as-set-instance-health
), так что автоматическое масштабирование просто заменяет его новым экземпляром.Ответы:
Я хотел бы предложить "AWS-HA-Release" для этого - способ, которым работает AWS-HA-Release:
В этом случае вы можете отправлять новый код или новые версии AMI без простоя и пользоваться преимуществами совершенно новых экземпляров. Инструмент AWS-HA-Release доступен по адресу https://github.com/colinbjohnson/aws-missing-tools .
источник
Более простой способ - увеличить количество минимальных экземпляров в Auto-Scaling Group (ASG) до удвоенного значения текущего счетчика, подождать, когда все они будут запущены, и затем изменить это минимальное количество экземпляров до того, что было. ELB уничтожит старые экземпляры и оставит новые экземпляры с кодом. Для достижения этой политики прекращения необходимо установить « OldestInstance », чтобы работать как задумано. Политика завершения по умолчанию может иметь нежелательные побочные эффекты.
Вы можете посмотреть параметры и примеры интерфейса командной строки AWS здесь: http://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html.
источник
способ управления этим сценарием заключается в использовании функции 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
источник
Также взгляните на инструмент Netflix Asgard с открытым исходным кодом. Он не только может настроить группы автоматического масштабирования, но также может выполнять непрерывные выпуски новых образов AMI для группы экземпляров.
источник
На самом деле, не очень хороший способ сделать это, если честно. Лучший способ, который я нашел, - это поместить версию в название ASG. Каждый раз, когда я обновляю AMI, я создаю новую конфигурацию запуска ASG + с новой версией, чтобы она не конфликтовала с другой группой. Затем я прекращаю все экземпляры в старой группе.
Если требуется более отказоустойчивое развертывание, я рекомендую добавить еще один шаг, включая создание нового распределителя нагрузки. Это позволяет вам изолировать обе ASG друг от друга. Это также позволяет вам иметь «промежуточную» область для проверки изменений в последний раз перед обновлением. Затем, когда вы будете готовы к переключению, вы обновите записи DNS и завершите работу всех экземпляров в старой группе.
источник
Как я писал здесь (аналогичный вопрос, только с Terraform), он никак не встроен в ASG, кроме случаев использования облачной информации. Я тоже с этим боролся, поэтому в итоге написал «ролик», который следит за несколькими ASG, проверяет их состояние и обновления. Всегда рад принять обратную связь. http://github.com/deitch/aws-asg-roller
источник