在碼頭 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