最近在学习Ocelot,发现里面集成Consul,所有部署一下多机版集群,后来发现网上都是在一台虚拟机中的Docker部署,而且大同小异,没有真正解释清楚。
然后用copy虚拟机,修改ip地址后,全部启动
这些操作可自行百度
还有多数据中心也是,今天不说。
--net=host
:docker内部对于虚拟机的来说也是localhost-bind
:这是给其他consul server来加入集群的ip-join
:加入集群-client
:使用此配置,Consul的客户端接口将绑定到网桥IP,并可供该网络上的其他容器使用,但不能在主机网络上使用。
Consul还将接受-client=0.0.0.0绑定到所有接口的选项。
-bootstrap-expect
设置服务数量,当达到设定数量启动集群。-bind的这台机器成为leader-ui
管理界面-h
:设置node的名称,集群的服务器不能取同名的node名称CONSUL_BIND_INTERFACE
:ifconfig查看,好像虚拟机的这个名称不一样,我的脚ens33,还有叫eth0的。
Consul
部署docker inspect -f ‘{{.NetworkSettings.IPAddress}}‘ consul1
查看容器内Consul1的ipdocker exec -t consul名称 consul members
查看集群成员ifconfig
查看ip配置/sbin/ifconfig ens33 | sed -n ‘s/.*inet \(addr:\)\?\([0-9.]\{7,15\}\) .*/\2/p‘
docker run -d -p 8500:8500 --name consul1 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -bind=192.168.110.100 -ui -bootstrap-expect=3
?leader 服务docker run -d -p 8500:8500 --name consul2 -h=node1 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.110.100 -ui
?follower
docker run -d -p 8500:8500 --name consul1 -h=node1 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -bind=192.168.110.100 -ui -bootstrap-expect=3
docker run -d -p 8500:8500 --name consul2 -h=node2 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.110.100 -ui
docker run -d -p 8500:8500 --name consul3 -h=node3 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.110.100 -ui
原文:https://www.cnblogs.com/gudanshiyigerendekuanghuan/p/10603516.html