在码头 1.12 群中运行领事
这依赖于官方的 consul docker 镜像,在 Docker 1.12 中使用新的 swarm 模式在 docker swarm 中以群集模式运行 consul。此示例基于 http://qnib.org/2016/08/11/consul-service/ 。简单地说,这个想法是使用两个相互通信的 docker swarm 服务。这解决了你无法预先了解各个领事容器的 ips 并允许你依赖 docker swarm 的 dns 的问题。
这假设你已经有一个运行的 docker 1.12 swarm 集群,其中至少有三个节点。
你可能希望在 docker 守护程序上配置日志驱动程序,以便可以查看发生的情况。我使用了 syslog 驱动程序:在 dockerd 上设置 --log-driver=syslog
选项。
首先为领事创建一个覆盖网络:
docker network create consul-net -d overlay
现在只用 1 个节点引导集群(默认 –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
你现在应该有一个节点集群。现在提出第二项服务:
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
你现在应该有一个四节点的 consul 集群。你可以通过在任何 docker 容器上运行来验证这一点:
docker exec <containerid> consul members