Назад | Перейти на главную страницу

Контейнер сервисов браузера в режиме Docker Swarm

Я создал 3 виртуальных машины с помощью докер-машины:

docker-machine create -d virtualbox manager1
docker-machine create -d virtualbox worker1
docker-machine create -d virtualbox worker2

это их ip:

docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
manager   -        virtualbox   Running tcp://192.168.99.102:2376                                   v1.12.6
worker1   -        virtualbox   Running   tcp://192.168.99.100:2376           v1.13.0-rc5  
worker2   -        virtualbox   Running   tcp://192.168.99.101:2376           v1.13.0-rc5   

затем docker-machine ssh manager1

и:

docker swarm init --advertise-addr 192.168.99.102:2377

затем к рою присоединяются worker1 и worker2.

Теперь я создал оверлейную сеть как:

docker network создать -d оверлей skynet

и развернул сервис в глобальном режиме (1 задача для узла):

docker service create --name http --network skynet --mode global -p 8200:80 katacoda/docker-http-serveр

И фактически существует 1 контейнер (задача) для узла.

Теперь я хотел бы получить доступ непосредственно к моему виртуальному хосту ... или, по крайней мере, я хотел бы просматривать непосредственно контейнер моей службы, потому что я хотел бы разработать балансировщик нагрузки моей службы с помощью nginx. Для этого в моем файле конфигурации nginx я хотел бы указать на конкретный контейнер службы (т.е. теперь у меня есть 3 узла (1 менеджер и 2 рабочих) в глобальном режиме, поэтому у меня запущено 3 задачи -> i хочу выбрать один из этих 3-х контейнеров). Как я могу это сделать?

[править]: я могу указать на мои узлы роя, просто просматривая:, то есть:

192.168.99.102:8200

но есть еще внутренняя балансировка нагрузки. Я думал, что если я укажу на конкретный узел роя, я буду использовать контейнер внутри этого конкретного узла. Но пока ничего.

Если вы можете докер-сервис в HOST + GLOBAL в режиме можно использовать внешний балансировщик нагрузки. Потому что через службу ГЛОБАЛЬНЫЙ В этом режиме на каждой виртуальной машине, входящей в рой, есть только одна служебная задача (то есть контейнер). Из-за ВЕДУЩИЙ В этом режиме порт служебной задачи отображается на «хост» (в данном случае виртуальный хост: виртуальная машина). Таким образом, внешний балансировщик нагрузки (например, nginx) может перенаправлять входящие запросы на IP_VM: MAPPED_PORT. Надеюсь, все было ясно :)

В Docker есть балансировка входящей нагрузки. Это балансировщик нагрузки по умолчанию. вы можете использовать команду --endpoint-mode dnsrr для балансировки нагрузки DNS.

Если вы хотите использовать внешнюю балансировку нагрузки, например nginx. Сначала вы должны запустить контейнер Nginx, скопировать файл конфигурации в работающий контейнер и заменить старый. затем он укажет на опубликованный контейнер порт и хост.