Развертывание нового образа докера с помощью AWS ECS - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть кластер 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 должен быть настроен, пока старый отключается. Что я наблюдаю (постоянно обновляя конечную точку HTTP ELB), так это то, что rev =? в сообщении чередуются взад и вперед: (rev=1), затем (rev=2) в обязательном порядке (циклический перебор, не случайно).
  6. Затем через некоторое время (может быть, 30 секунд?) Переворачивание прекращается, и появляется новое сообщение: Hello, World! (rev=2)
  7. В течение всего этого процесса я заметил, что больше не было запущено ни одного экземпляра EC2. Так что все это должно было происходить в одном и том же случае.

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

1 Ответ

1 голос
/ 20 апреля 2019

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

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

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

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

...