Какие инструменты оркестровки контейнеров могут развертывать контейнеры с маршрутизируемыми IP-адресами?

docker consul orchestration docker-networking

142 просмотра

1 ответ

1588 Репутация автора

Я пытаюсь развернуть контейнеры в распределенной системе из нескольких узлов, с конечной целью, чтобы каждый контейнер был привязан к своему определенному маршрутизируемому IP-адресу. Это связано с тем, что я хочу использовать аппаратные балансировщики нагрузки для моих док-контейнеров, которым требуются отдельные IP-адреса.

Я могу получить контейнеры с маршрутизируемыми IP-адресами, используя инструмент командной строки docker для запуска контейнеров, работающих на серверах с несколькими сетевыми интерфейсами (eth0: 0. Eth0: 1, eth0: 2, eth1, eth2, eth3, ect ...) каждый из которых имеют свои собственные маршрутизируемые IP-адреса. Каждый контейнер может затем присоединиться к доступному IP-адресу одного из интерфейсов с помощью определенной -pопции.

Например , если бы я имел ИС 1.2.3.4на eth0:2том , что я хотел , чтобы прикрепить контейнер Nginx , чтобы я мог прикрепить его с помощью следующей команды:

docker run -d -p 1.2.3.4:80:80 nginx

Ограничение этого заключается в том, что для каждого экземпляра, работающего в Docker, существует определенный пул маршрутизируемых IP-адресов. Мой инструмент оркестровки должен иметь возможность использовать только IP-адреса из этого пула и использовать каждый IP-адрес только один раз. (Не беспокойтесь о проблемах масштабирования этого, всегда можно добавить больше IP-адресов с узла управления openstack).

До сих пор я пытался добиться этого с помощью Docker Swarm 1.12, используя Docker Services, но совершенно ясно, что это не тот случай использования, который предназначен для этого инструмента оркестровки.

Поэтому я ищу новый инструмент оркестровки, который позволит мне сделать следующее:

  1. Привязать контейнеры Docker на нескольких серверах к определенным IP-адресам, определенным при создании контейнера Docker.
  2. Знайте, что у каждого сервера есть определенный пул IP-адресов, из которых он может выбирать, и знайте, что пул будет отличаться на каждом узле.
  3. Не переопределит себя и не попытается привязать два запущенных контейнера к одному IP-адресу.

Он также должен предоставить некоторые из наиболее распространенных аспектов инструментов управления контейнером, таких как:

  1. Обеспечить автоматическое перепланирование контейнера в случае сбоя узла.
  2. Обеспечьте самовосстановление, когда создаются новые контейнеры для замены старых контейнеров, которые умерли.
  3. Обеспечить простую систему для развертывания контейнеров.

Я должен также отметить, что каждый из моих серверов также является частью консул кластера. Для меня, исходя из моих очень специфических сетевых требований, кажется, что наилучшее решение - это управление всей системой с помощью комбинации часов консула, проверок состояния консула и значений ключей консула (с возможным использованием более старой контейнерной версии докера swarm), которые запускают лично написанные сценарии на каждом экземпляре, на котором запущен Docker, чтобы определить правильный курс действий, которые должен выполнить любой сервер.

Однако я предпочел бы использовать общий инструмент оркестровки контейнера для моих целей. Итак, я хотел бы знать, позволяют ли какие-либо другие инструменты оркестровки контейнеров (такие как mesos, kubernetes, nomad, ect) этот уровень настройки сопоставления портов докера? Или мне лучше просто использовать специальные проверки здоровья и часы консула?

Также обратите внимание, что я использую свою систему в частном облаке openstack на серверах ubuntu 14.04 (поэтому использование флота невозможно).

Автор: Alex Cohen Источник Размещён: 18.07.2016 07:25

Ответы (1)


0 плюса

20 Репутация автора

Проверьте Docker Swarm :

https://docs.docker.com/swarm/

или Кубернетес

http://kubernetes.io/docs/

Автор: Mohamed Labouardy Размещён: 18.07.2016 08:13
Вопросы из категории :
32x32