Развертывание нового образа докера с помощью AWS ECS

У меня есть кластер ECS со службой, выполняющей задачу, которую я определил. Это просто простой флэш-сервер, поскольку я учусь использовать ECS. Теперь я пытаюсь понять, как обновить свое приложение и беспрепятственно развернуть его.

  1. Я начинаю с того, что сервер фляги возвращает Hello, World! (rev=1).
  2. Я изменяю свой app.py локально, чтобы сказать Hello, World! (rev=2)
  3. Я перестраиваю образ докера и нажимаю на ECR
  4. Поскольку мой образ по-прежнему называется image_name:latest, я могу просто обновить службу и принудительно выполнить новое развертывание с помощью: aws ecs update-service --force-new-deployment --cluster hello-cluster --service hello-service
  5. Мой минимальный процент установлен на 100, а мой максимальный установлен на 200% (с использованием скользящих обновлений), поэтому я предполагаю, что новый экземпляр EC2 должен быть настроен, пока старый отключается. Я наблюдаю (постоянно обновляя конечную точку ELB HTTP), что rev =? в сообщении чередуется вперед и назад: (rev=1), затем (rev=2) в обязательном порядке (циклический, а не случайный).
  6. Затем через некоторое время (может быть, 30 секунд?) Листание прекращается и появляется новое сообщение: Hello, World! (rev=2)
  7. На протяжении всего этого процесса я заметил, что больше не было запущено ни одного экземпляра EC2. Так что все это должно было происходить в одном и том же случае.

Что здесь происходит? Это правильный способ обновления приложения в ECS?


person lollercoaster    schedule 20.04.2019    source источник
comment
Я полагаю, вы используете Фаргейт?   -  person jogold    schedule 20.04.2019
comment
ах нет, я использую только EC2   -  person lollercoaster    schedule 20.04.2019


Ответы (1)


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

Минимальный процент работоспособности, равный 100%, означает, что в каждый момент должна быть запущена как минимум 1 задача (для службы, которая должна запускать 1 экземпляр вашей задачи). Максимальный процент работоспособности в 200% означает, что вы не разрешаете одновременно запускать более 2 задач (опять же для службы, которая должна запускать 1 экземпляр вашей задачи). Это означает, что во время обновления службы ECS сначала запустит новую задачу (достигнув максимума 200% и избегая снижения ниже 100%), а когда эта новая задача будет признана работоспособной, она удалит старую (обратно к 100%). Это объясняет, почему обе задачи выполняются одновременно в течение короткого периода времени (и с балансировкой нагрузки).

Такая конфигурация обеспечивает максимальную доступность. Если вы хотите избежать этого и допускаете небольшое время простоя, вы можете настроить минимум на 0% и максимум на 100%.

Что касается ваших экземпляров EC2: они представляют ваш «кластер» = оборудование, которое ваша служба использует для запуска задач. Описанный выше процесс происходит на этом «фиксированном» оборудовании.

person jogold    schedule 20.04.2019