如果不用虚拟机,一台物理机只能搭建一个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