Как автоматизировать перекатывание обновлений для linux ec2 за эластичным балансиром нагрузки и/или нагрузки?

Хотелось бы запросить рекомендации по готовым автоматическим решениям или шаблонам для обновления экземпляров ec2 на AWS, требующих перезагрузки с помощью ELB/ALB. В частности, требуется выполнить обновление обслуживания для ядра на сотнях Linux-машин.

Для каждого этапа ELB/ALB:

  1. Отключить экземпляр ec2 от ELB/ALB дожидаться отсоединения соединения.
  2. Обновление ядра и перезагрузка (не часть автоматизации, например, запуск внешнего ./upgrade.sh)
  3. Подождите, пока вы будете в сети, подключитесь к ELB/ALB, дождитесь статуса проверки работоспособности
  4. Перейдите к следующему экземпляру в балансировщике нагрузки

Примечание: не требуется переход к решению, аналогичному реализации Netflix Spinnaker или неизменной реализации стратегии развертывания, но для общего и простого инструмента обслуживания по требованию.

5
Спасибо @MrDuk за это предложение, это то, что было упомянуто как «непреложное развертывание», которое потребует в настоящее время большего количества ресурсов и координации для развертывания десятков различных приложений на сотнях серверов с различными конфигурациями, в идеале это было бы возможно благодаря лучшей автоматизации развертывания, но в настоящее время это не так
добавлено автор Ralph Willgoss, источник
@MrDuk согласился, aws-cli или aws-sdk - это то, что имеет смысл использовать, задаваясь вопросом, есть ли готовые решения, помимо пользовательского обновления, последовательное/параллельное перемещение сбалансированных экземпляров, похоже на очень обычную задачу, прежде чем мы перейдем к написанию нашей собственной, достойной проверка с помощью сообщества
добавлено автор Ralph Willgoss, источник
@PrestonM Я согласен с вами обоими :), но сейчас нет возможности перестроить стратегию развертывания, особенно для устаревших приложений, и тем не менее нам нужны ядра для производства последних патчей
добавлено автор Ralph Willgoss, источник
уточненный шаг 2, да, он уже автоматизирован
добавлено автор Ralph Willgoss, источник
Возможно ли развертывание +1 для вас? Итак, вместо удаления экземпляра из ALB вы добавили уже обновленный экземпляр? Это позволит сэкономить кучу времени из двух состояний waiting , которые вы указали.
добавлено автор MrDuk, источник
Если каждый узел отличается, с индивидуальными изменениями для каждого, я не знаю, что существует инструмент, который может помочь вам в этом. Тем не менее, вы можете довольно легко выполнить сценарий с помощью aws-cli, наиболее сложной частью которой является обновление/перезагрузка/обнаружение
добавлено автор MrDuk, источник
@rombob Я должен согласиться с MrDuk. Если ваши экземпляры имеют возможность запускать разные версии параллельно, вы должны иметь возможность использовать неизменную стратегию развертывания без каких-либо усилий, чем предлагаемые вами шаги.
добавлено автор PrestonM, источник
Является ли этап 2 (включая запуск приложения, когда он перезагружается) уже автоматизирован?
добавлено автор MrDuk, источник
Это может быть (несколько) легко достигнуто путем: 1) обновления AMI для получения обновлений ядра, 2) обновления конфигурации запуска ASG, чтобы указать на новый AMI, и 3) прекратить экземпляр экземпляра и позволить ASG заменить его новым AMI. Это то, что мы делаем для служб без гражданства. Для служб с сохранением состояния мы добавляем снимок тома/восстанавливаем или монтируем тома данных в новые экземпляры.
добавлено автор SaxDaddy, источник

2 ответы

AWS have a specific service to deal with this type of use case, EC2 Systems Manager

Это позволяет создавать базовые пакеты патчей, а затем проверять их применимость к целевым системам.

"Патч-менеджер - это полностью управляемый сервис (без дополнительных   стоимость), которая поможет вам упростить процесс исправления операционной системы,   включая определение патчей, которые вы хотите одобрить для развертывания,   метод развертывания исправлений, время для развертывания патчей и   определение статуса соответствия патчам по всему вашему флоту   экземпляров. Он чрезвычайно настраивается с некоторыми разумными значениями по умолчанию и   поможет вам легко справиться с исправлением гетерогенных кластеров ».

-- "Amazon EC2 Systems Manager Patch Manager now supports Linux"

Вам нужно будет установить SSM-агент для каждой системы и добавить роль, но это не должно быть ненавязчивым

2
добавлено
выглядит хорошо, но это решение не включает ELB/ALB отключение/соединение оркестровки при применении патчей
добавлено автор Ralph Willgoss, источник
Решение AWS для вашей проблемы заключается в использовании непреложного решения: постройте AMI с новым ядром, а затем используйте ASG для их выключения из ALB, но я знаю, что вы этого не хотите!
добавлено автор Vorsprung, источник
Если бы мне пришлось решить эту проблему, я бы меньше беспокоился о ее ротации перед обновлением. Помимо увеличения IO обновление ядра не будет иметь эффекта до перезагрузки. У вас может быть сценарий init.d (или upstart или systemd или любой другой), чтобы сделать контролируемый выход из группы ALB при контролируемой перезагрузке
добавлено автор Vorsprung, источник

Как говорят люди в комментариях, вы можете сделать это с помощью aws-cli в bash или в библиотеке boto3 python.

Как насчет правды? Он имеет возможность видеть ваши экземпляры ec2 и может обрабатывать автоматизацию задач обслуживания. Если вы не используете возможности, я настоятельно рекомендую вам добавить этот инструмент в свой набор инструментов DevOps.

Вот как вы могли бы структурировать playbook , чтобы сделать что вы хотите.

1
добавлено
Linux Help
Linux Help
2 686 участник(ов)

Правила: https://telegra.ph/Pravila-Linux-Help-10-15

Linux Security
Linux Security
652 участник(ов)

Данная группа принципиально про безопасность и в частности про безопасность Linux. Прочие темы просим обсуждать в профильных чатах.

Linux Gaming RUS
Linux Gaming RUS
28 участник(ов)

Русскоязычный чатик, посвящённый играм на различных дистрибутивах Linux, а также wine, proton Arch Linux RU @ArchLinuxChatRU Gnome RU @gnome_ru