Этот пост является продолжением статьи Docker на AWS: 1 неделя.

Я провел месяц или около того, возясь с Docker на AWS. Цель
состояла в том, чтобы сократить затраты и повысить
производительность наших изолированных программных сред. Мой вывод заключается в том, что Docker Universal Control Plane
не подходит для нашей организации, и я рекомендую вам также
держаться от него подальше. Вот почему.

Предыдущие эксперименты с Docker Swarm выявили большие задержки во
внутреннем вызове GET /networks API. Это особенно проблематично, если вы
развертываете контейнеры в оверлейной сети (например, вы используете
docker-compose). UCP страдает от той же проблемы. Мы с другом
проследили проблему (начиная с исследования времени ожидания операций ввода-вывода)
до той же проблемы при запуске примерно 25-контейнерного приложения.

Я связался со службой поддержки Docker по этому вопросу и другим. Мы прошлись
по разным местам. Инженер службы поддержки ответил, что команда UCP
хорошо осведомлена об этой проблеме и что для версии 2.x запланировано ее исправление.
Было предложено три обходных пути:

  1. Удалить все контроллеры реплик
  2. Переместите всю инфраструктуру в одну зону доступности
  3. Настройте внутренние параметры хранилища ключей и значений Docker.

Я пробовал вариант 3, но это ничего не изменило. Это означает, что вещи
лучше всего испорчены (или в худшем случае полностью сломаны) из коробки. Это
было для меня тревожным сигналом.

Варианты 1 и 2 неприемлемы для сред с высокой доступностью.
По правде говоря, меня удивило, что это был рекомендуемый рабочий вариант.
Они ответили, что их клиенты не используют несколько зон доступности
, так что обычно это не так. не проблема. Меня это тоже удивило. Это
заставляет задуматься, для чего на самом деле клиентская база использует UCP?

Это связано с тем, что Docker Inc. поставит производственный продукт с
проблемами из коробки в своей эталонной инфраструктуре. Они взимают плату за лицензию для загрузки!

Я рекомендую вам избегать UCP как минимум до версии 2 и до тех пор, пока он
не будет поддерживать функции роя в Docker 1.12. В настоящее время UCP 1.x использует
устаревшую реализацию swarm. Нет смысла внедрять
продукт в его текущем состоянии.

Однако я хотел бы поблагодарить инженеров службы поддержки, которые помогали мне
в отладке и оценке проблем. Также большое спасибо официальной
эталонной реализации AWS за объединение моих PR и принятие
отзывов. Продукт, возможно, не сработал для меня, но теперь есть улучшения, которые могут использовать все.

Удачи там и счастливой доставки.