Связывание контейнеров в службе контейнеров Azure с помощью Mesos & Marathon

Я пытаюсь развернуть простой пример WordPress (WordPress и MySQL DB) на Microsoft new Служба контейнеров Azure с Mesos & Marathon в качестве базовой платформы оркестровки. Я уже запускал это на сервисах, предлагаемых Google (Kubernetes) и Amazon (ECS), и подумал, что это будет легкая задача и для ACS.

У меня развернут кластер Mesos, и все работает. Развертывание контейнера MySQL тоже не проблема, но когда я развертываю свой контейнер WordPress, я не могу получить соединение с моим контейнером MySQL. Я думаю, это может быть связано с тем, что MySQL работает с другим агентом Mesos?

Что я пробовал до сих пор:

  1. Использование Mesos DNS для доступа к MySQL хост контейнера (сейчас мне все равно, какой контейнер я получу). Я установил переменную среды WORDPRESS_DB_HOST на mysql.marathon.mesos и указал хост контейнера MySQL, как было предложено здесь.

  2. Я создал новое правило для балансировщика нагрузки агента и зонда для порта 3306 в самом Azure, это сработало, но кажется очень сложным способом добиться чего-то столь простого. В Kubernetes и ECS ссылки можно просто определить, используя имя контейнера в качестве имени хоста.

Другой возникший вопрос: в чем разница в Marathon между настройкой порта в разделе сопоставлений портов и в разделе дополнительных настроек. (См. Приложенный скриншот)

Обновление: если я подключу ssh к главному узлу, чем я могу копать, используя mysql.marathon.mesos, как бы то ни было, я не могу получить соединение для работы из другого контейнера (в моем случае wordpress контейнер).

Отображение портов в марафоне


person Kevin Goedecke    schedule 03.04.2016    source источник


Ответы (1)


По сути, здесь есть два вопроса: один касается сервисов с отслеживанием состояния на Marathon, другой - управления портами. Позвольте мне сначала пояснить, что ни один из них не должен ничего делать с Azure или ACS, они оба связаны с марафоном.

Q1: службы с отслеживанием состояния

В зависимости от ваших требований (разработка / тестирование или продукт) вы можете использовать постоянные тома Marathon (простой, но без автоматического переключения / HA для данных) или, поскольку вы работаете в Azure, надежное решение, как я показал здесь (по сути, монтирование общей папки).

Q2: порты

Сопоставление портов, которое вы видите на снимке экрана пользовательского интерфейса Marathon, актуально только в том случае, если вы запускаете образ Docker и хотите явно сопоставить порты контейнера с портами хоста в режиме BRIDGE, см. docs для получения дополнительной информации.

person Michael Hausenblas    schedule 06.04.2016
comment
Рассматривая мой пример WordPress, как это на самом деле будет работать в моем случае, я не понимаю, как я могу использовать постоянные тома в этом сценарии? О портах: Да, именно так я ожидал, что это сработает, однако я не могу связаться с моим хостом MySQL из моего контейнера WordPress, хотя я включил отображение портов, что бы я вообще использовал в качестве имени хоста? - person Kevin Goedecke; 06.04.2016
comment
Один из способов - закрепить оба контейнера (WP и MySQL) на одном узле с помощью ограничений (см. mesosphere.github.io/marathon/docs/constraints.html для получения дополнительной информации), а затем иметь постоянный том. Это вместе с постоянными томами защищает от сбоев контейнеров, но для сбоев узлов вам понадобится вариант монтирования общего файлового ресурса. - person Michael Hausenblas; 06.04.2016
comment
Кстати, поскольку есть несколько вопросов, и это превращается в обсуждение: не могли бы вы присоединиться к chat.mesosphere.com и обсудить Slack, и как только мы закончим, я обновлю его здесь? - person Michael Hausenblas; 06.04.2016