HaProxy для обнаружения сервисов в связанных контейнерах марафона mesos docker

Пожалуйста, нигде я не спрашивал об этом. Вот что я сделал. Я могу развернуть единичные экземпляры mesos, marathon и docker. Переходя на следующий шаг вперед, я хочу иметь 2 подчиненных устройства mesos (контейнеров докеров), связанных друг с другом. Просто используя докер, то же самое можно сделать с помощью функции ссылки докера. Но при использовании оркестровки (мезо) и планировщика (марафон) кажется, что вам нужно использовать обнаружение служб.

Моя установка проста и выполняется на одном хосте. Таким образом, у меня будет 2 контейнера докеров, в одном из которых будет запущен простой pub / sub, а в другом - rabbitmq. Как я могу использовать HA PRoxy в этой настройке. Я видел некоторые документы, предоставленные мезосферой http://mesosphere.com/docs/getting-started/service-discovery/, но неясно, как это сделать.


person ashishjain    schedule 20.02.2015    source источник


Ответы (4)


Канонический подход к обнаружению сервисов с помощью Mesos + Marathon + Docker в настоящее время описан в документе, на который вы ссылаетесь.

Я предполагаю, что вы уже можете запустить два приложения в Marathon.

Обычно происходит следующее:

1) Настройте определение вашего приложения, чтобы оно включало порты, которые требуются вашему приложению.

2) Вы настраиваете предоставленный сценарий haproxy-marathon-bridge для периодического запуска с помощью такой утилиты, как cron. Этот скрипт очищает API Marathon, чтобы выяснить, на каком хосте и порту работают экземпляры приложения и каков известный «дружественный» порт.

В примере в статье об обнаружении сервисов первое приложение имеет дружественные порты 80 и 443, а второе - дружественный порт 8081.

Затем сценарий создает haproxy.cfg конфигурацию, в которой правила сопоставляют localhost:friendly_port с actual_host:actual_port.

3) Настройте свои приложения так, чтобы они искали друг друга на localhost:friendly_port. HAProxy будет правильно маршрутизировать соединения.

Надеюсь, это поможет вам понять!

person ssk2    schedule 24.02.2015
comment
Есть несколько проблем, с которыми мы сталкиваемся при настройке HaProxy. Поскольку конфигурации для всех приложений, запущенных на Marathon, помещаются в один файл конфигурации haproxy, это приводит к значительной задержке со временем, когда ваши приложения начинают увеличиваться. В настоящее время на Marathon работает около 60 приложений с временем cron, равным 2 минутам. Поскольку перезагрузка HaProxy сейчас требует времени, все приложения сталкиваются с отключением во время перезагрузки. - person akskap; 25.08.2015
comment
Возможно, вам придется использовать сложный подход, который лучше масштабируется - сколько узлов вы используете? - person ssk2; 02.09.2015
comment
В настоящее время запущено семь подчиненных узлов mesos. - person akskap; 02.09.2015

Я создал контейнер докеров для обнаружения службы haproxy, который можно запускать в мезо. Он не готов к производству, но я использую его в своей среде разработки, делая именно то, что вы пытаетесь сделать. Причина, по которой я предпочитаю это тому, что идет с марафоном, заключается в том, что я не нашел хорошего способа выполнять сложные конфигурации haproxy с haproxy-marathon-bridge. С spiderweb вы можете создать шаблон для конфигурации haproxy, который позволяет вам делать такие вещи, как маршрутизация acl и т.д. Посмотреть проект можно здесь, https://github.com/SBRDevelopment/spiderweb.

person bwight    schedule 26.02.2015

Мы объединили Mesos и Marathon с consul и registartor, так что в итоге у вас есть конфигурация haproxy, автоматически сгенерированная с помощью consul-template.

попробуйте https://github.com/eBayClassifiedsGroup/PanteraS Все в одном контейнере.

person SielaQ    schedule 09.04.2015

С помощью Mesos-DNS вы также можете делать следующее:

  1. Настройте mesos-dns, как в этом руководстве: http://programmableinfrastructure.com/guides/service-discovery/mesos-dns-haproxy-marathon/ (вы можете пропустить шаги HAProxy, которые не требуются)
  2. Когда вы запускаете свои док-контейнеры, убедитесь, что у них есть «пространство имен% slave_ip_with_mesos_dns%» (замените строку IP-адресом) в их файлах /etc/resolv.conf.
  3. если, скажем, название приложения - "peek", оно должно быть доступно из других приложений по адресу peek.marathon.mesos
person ivan_a    schedule 30.05.2016