参考地址:庐山真面目之五微服务架构Consul集群、Ocelot网关和Nginx版本实现 - 可均可可 - 博客园 (cnblogs.com)
consul agent:命令头,必须要有。
-server:表示要启动服务器代理(agent)模式。Consul Agent节点的运行模式有两种,Server模式和Client模式。其区别就是Server模式数据可以持久化到本地,而Client模式不可以。
-ui:consul运行后,会提供一个http://127.0.0.1:8500/ui/的网站,里面存储了Consul Agent各个节点以及注册的服务等相关信息,即数据中心的网页形式体现。这个参数代表是否创建这个网站,这个参数与这个数据中心网站有关。
-bind:本机的IP地址,集群内其他代理服务器可以通过这个IP来访问这台电脑的consul代理服务器。
-bootstrap-expect:是集群启动条件,指当服务器端模式(Server模式)的代理达到这个数目后,才开始运行。
-data-dir:是存放数据中心数据的目录,该目录必须是稳定的,系统重启后也继续存在的。
-config-dir:是存放数据中心日志的目录,该目录必须是稳定的,系统重启后也继续存在的。
-datacenter:当前Consul的中心数据的名称,默认是dc1。
-node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名(代表一个机器)。
-client:本地IP地址,这里使用 0.0.0.0 ,就表示这个服务器所有IP都可以,即当这台电脑有俩IP,192.168.1.100和192.168.1.111,那么通过这俩IP都可以访问到这台机器的consul代理服务器。
-join:表示当前的服务器节点或者是客户端节点要加入集群的服务器,后面跟要加入的服务器的具体IP地址。
1.搭建集群的脚本,3个server,2个client
sudo docker run -d --name=node1 --restart=always -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302/udp -p 8302:8302 -p 8400:8400 -p 8500:8500 -p 8600:8600 -h node1 consul agent -server -bind=0.0.0.0 -bootstrap-expect=3 -node=node1 -data-dir=/tmp/data-dir -client 0.0.0.0 -ui sudo docker run -d --name=node2 --restart=always -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -p 9300:8300 -p 9301:8301 -p 9301:8301/udp -p 9302:8302/udp -p 9302:8302 -p 9400:8400 -p 9500:8500 -p 9600:8600 -h node2 consul agent -server -bind=0.0.0.0 -join=192.168.145.130 -node-id=$(uuidgen | awk '{print tolower($0)}') -node=node2 -data-dir=/tmp/data-dir -client 0.0.0.0 -ui sudo docker run -d --name=node3 --restart=always -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -p 10300:8300 -p 10301:8301 -p 10301:8301/udp -p 10302:8302/udp -p 10302:8302 -p 10400:8400 -p 10500:8500 -p 10600:8600 -h node3 consul agent -server -bind=0.0.0.0 -join=192.168.145.130 -node-id=$(uuidgen | awk '{print tolower($0)}') -node=node3 -data-dir=/tmp/data-dir -client 0.0.0.0 -ui sudo docker exec -t node1 consul members sudo docker exec -t node1 consul operator raft list-peers sudo docker run -d --name=node4 --restart=always -e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate":true}' -p 11300:8300 -p 11301:8301 -p 11301:8301/udp -p 11302:8302/udp -p 11302:8302 -p 11400:8400 -p 11500:8500 -p 11600:8600 -h node4 consul agent -bind=0.0.0.0 -retry-join=192.168.145.130 -node-id=$(uuidgen | awk '{print tolower($0)}') -node=node4 -client 0.0.0.0 -ui sudo docker run -d --name=node5 --restart=always -e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate":true}' -p 12300:8300 -p 12301:8301 -p 12301:8301/udp -p 12302:8302/udp -p 12302:8302 -p 12400:8400 -p 12500:8500 -p 12600:8600 -h node5 consul agent -bind=0.0.0.0 -retry-join=192.168.145.130 -node-id=$(uuidgen | awk '{print tolower($0)}') -node=node5 -client 0.0.0.0 -ui