Docker
бегущий консул в докере 1.12 рой
Поиск…
Запуск консула в докер 1.12 рой
Это зависит от официального изображения докеры-консула для запуска консула в кластерном режиме в докеровском рое с новым режимом роя в Docker 1.12. Этот пример основан на http://qnib.org/2016/08/11/consul-service/ . Вкратце идея состоит в том, чтобы использовать две службы докеров, которые говорят друг с другом. Это решает проблему, из-за которой вы не можете знать ips отдельных контейнеров консула спереди и позволяет вам полагаться на dns docker swarm.
Это предполагает, что у вас уже есть рабочий кластер 1.12 с кластерами с минимум тремя узлами.
Вы можете настроить драйвер журнала на своих демонах докеров, чтобы вы могли видеть, что происходит. Я использовал драйвер syslog для этого: установите параметр --log-driver=syslog
на dockerd.
Сначала создайте оверлейную сеть для консула:
docker network create consul-net -d overlay
Теперь загрузите кластер только с одним узлом (по умолчанию --replicas равно 1):
docker service create --name consul-seed \
-p 8301:8300 \
--network consul-net \
-e 'CONSUL_BIND_INTERFACE=eth0' \
consul agent -server -bootstrap-expect=3 -retry-join=consul-seed:8301 -retry-join=consul-cluster:8300
Теперь у вас должен быть кластер из 1 узла. Теперь поднимите вторую службу:
docker service create --name consul-cluster \
-p 8300:8300 \
--network consul-net \
--replicas 3 \
-e 'CONSUL_BIND_INTERFACE=eth0' \
consul agent -server -retry-join=consul-seed:8301 -retry-join=consul-cluster:8300
Теперь у вас должен быть кластер с четырьмя узлами. Вы можете проверить это, запустив любой из контейнеров докеров:
docker exec <containerid> consul members