如果不用虛擬機,一臺物理機只能搭建一個server或者client,利用docker,可以快速搭建一個consul集羣。
1.docker拉羣consul的鏡像
#docker pull consul
2.用一個文件夾用來後面映射到docker中
#mkdir -p /data/consul
3.使用docker來搭建server
#docker run -d -p 8500:8500 -v /data/consul:/consul/data -e CONSUL_BIND_INTERFACE='eth0' --name=consul1 consul agent -server -bootstrap -ui -client='0.0.0.0'
#CONSUL_BIND_INTERFACE='eth0'其實相當於--bind='{{ GetInterfaceIP "eth0" }}'
#agent 代表啓動agent進程
#server 代表它是server
#bootstrap 代表這個節點是server-leader
#ui啓動web ui
-client='0.0.0.0' 代表所有的ip地址都可以訪問這個節點
4.一般第一個容器的ip地址是 172.17.0.2,可以通過下面的命令查詢容器ip:
#docker inspect --format '{{ .NetworkSettings.IPAddress }}' consul1
5.加入新節點
再啓動一個server
#docker run -d --name=consul2 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --client=0.0.0.0 --join 172.17.0.2;
再啓動一個client
#docker run -d --name=consul3 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=fasle --client=0.0.0.0 --join 172.17.0.2;
6.上述只搭建了dc1,下面開始搭建dc2,並將dc1和dc2關聯起來
#docker run -d --name=consul4 -e CONSUL_BIND_INTERFACE='eth0' consul agent -server -bootstrap-expect 3 -datacenter=dc2
#docker run -d --name=consul5 -e CONSUL_BIND_INTERFACE=eth0 consul agent --datacenter=dc2 --server=true --client=0.0.0.0 --join 172.17.0.6;
7.關聯dc1和dc2
docker exec -it consul6 consul join -wan 172.17.0.2