Я хочу развернуть веб-приложение Play на AWS ECS. Я создал кластер из двух экземпляров EC2, на которых запущен веб-сервис. Каждый экземпляр запускает одну задачу. Кластер имеет балансировку нагрузки с помощью AWB ELB.Роллинг развертывания Play Framework webapp на AWS ECS
После нажатия нового изображения докеров в репозиторий создайте новую ревизию определения моей задачи, которая включает новое изображение с тегами latest
. Когда я обновляю службу для использования определения новой задачи, все экземпляры EC2 немедленно обновляют свою задачу. Несмотря на то, что у меня есть 2 экземпляра EC2, я испытываю простои, потому что AWS обновляет все экземпляры одновременно, вместо того, чтобы обновлять один экземпляр после другого в режиме развертывания.
Я попытался запустить несколько задач для каждого экземпляра EC2, но это, очевидно, невозможно, поскольку для каждой задачи требуется порт по умолчанию 9000, и я получаю сообщение об ошибке «порт уже используется» на вкладке событий службы ,
я могу думать о двух возможных решений:
- Каждый экземпляр задачи использует динамический порт вместо порта по умолчанию. (Как настроить балансировщик нагрузки для «поиска» для динамических портов?)
- Создайте два отдельных кластера ECR, разделите их как в одной целевой группе балансировки нагрузки, так и вручную измените определение задачи второго кластера после первого закончил обновление. (Как это может быть автоматизировано - или это может быть автоматизировано вообще?)
Является ли одним из этих решений способ выхода или есть ли какие-либо другие решения или лучшие практики для этого сценария?