2016-08-22 9 views
2

У меня есть Docker Swarm 12.1, работающий на моих узлах. У меня есть служба 4 задач, чтобы запустить свой сайт на Drupal и одну задачу для базы данных:Docker Swarm Overlay VIP

drupalapp  mastermindg/rpi-apache2php7 
drupaldb  mysql:latest 

теперь я могу достигнуть моего сайта на любом узле, который работает контейнер.

Проблема в том, что я могу установить только один IP-адрес для перенаправления портов на моем маршрутизаторе, и если один узел опустится, то этот IP-адрес больше не будет доступен.

Возможно ли установить виртуальный IP-адрес для балансировки нагрузки через оверлейную сеть?

ответ

4

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

docker network create --driver overlay proxy 
docker network create --driver overlay drupal 
docker service create --name proxy \ 
    -p 80:80 \ 
    -p 443:443 \ 
    -p 8080:8080 \ 
    --network proxy \ 
    -e MODE=swarm \ 
    vfarcic/docker-flow-proxy 
docker service create --name drupalapp \ 
    --network proxy \ 
    --network drupal \ 
    mastermindg/rpi-apache2php7 
docker service create --name drupaldb \ 
    --network drupal \ 
    mysql:latest 

Так вот вам нужно создать две сети: 1 для внутреннего использования между drupaldb и drupalapp (так называемый Друпал) и один для HAproxy использования, чтобы разоблачить свои порты. Ваша служба drupalapp должна быть включена в прокси-оверлейную сеть, а также в сеть drupal.

Зарегистрируйте свой HAproxy сервис:

curl "$masterip:8080/v1/docker-flow-proxy/reconfigure?serviceName=drupalapp&servicePath=/&port=80" 

Теперь ваш сайт Drupal может быть достигнуто на любом узле в вашем роя через:

http://nodeX/index.php 

Преимущество теперь что вы можете порт вперед к любому узлу и он будет правильно исправляться.

+1

Отличный ответ ... отлично работает! – user3063045

Смежные вопросы