2017-01-31 18 views
0

Я хочу развернуть веб-приложение Play на AWS ECS. Я создал кластер из двух экземпляров EC2, на которых запущен веб-сервис. Каждый экземпляр запускает одну задачу. Кластер имеет балансировку нагрузки с помощью AWB ELB.Роллинг развертывания Play Framework webapp на AWS ECS

После нажатия нового изображения докеров в репозиторий создайте новую ревизию определения моей задачи, которая включает новое изображение с тегами latest. Когда я обновляю службу для использования определения новой задачи, все экземпляры EC2 немедленно обновляют свою задачу. Несмотря на то, что у меня есть 2 экземпляра EC2, я испытываю простои, потому что AWS обновляет все экземпляры одновременно, вместо того, чтобы обновлять один экземпляр после другого в режиме развертывания.

Я попытался запустить несколько задач для каждого экземпляра EC2, но это, очевидно, невозможно, поскольку для каждой задачи требуется порт по умолчанию 9000, и я получаю сообщение об ошибке «порт уже используется» на вкладке событий службы ,

я могу думать о двух возможных решений:

  • Каждый экземпляр задачи использует динамический порт вместо порта по умолчанию. (Как настроить балансировщик нагрузки для «поиска» для динамических портов?)
  • Создайте два отдельных кластера ECR, разделите их как в одной целевой группе балансировки нагрузки, так и вручную измените определение задачи второго кластера после первого закончил обновление. (Как это может быть автоматизировано - или это может быть автоматизировано вообще?)

Является ли одним из этих решений способ выхода или есть ли какие-либо другие решения или лучшие практики для этого сценария?

ответ

0

Хорошо, я нашел источники проблемы. Прежде всего, я немного перепутал терминологию. Документы для AWS Elastic Beanstalk объясняют difference between a rolling update and a rolling deployment. Я пытался добиться скользящего развертывания, а не скользящего обновления - я отредактирую свой вопрос соответствующим образом.

Кроме того, я заметил, что я изменил «Минимальный здоровый процент» экземпляров и непреднамеренно сохранил настройки на 0%. Поэтому ECS правильно взяла на себя смелость и перераспределила более одного экземпляра EC2 одновременно, не оставив никаких здоровых экземпляров в моем кластере. Я нашел очень полезное видео here, где автор проходит процесс обновления кластера ECS и затем снова переопределяет его. Сейчас все работает так, как ожидалось.

 Смежные вопросы

  • Нет связанных вопросов^_^