防止自己忘了,做个笔记。

环境为两台主机,ip分别为:  192.168.2.9192.168.2.7

首先在  192.168.2.9 上执行一下命令:

docker run -d --name consul1  --net=host -e CONSUL_BIND_INTERFACE=enp5s0 consul agent -server=true -client=0.0.0.0 -bind=192.168.2.9 -ui -bootstrap-expect=2  -node=node1 

然后在 192.168.2.7上执行命令:

docker run -d --name consul2  --net=host -e CONSUL_BIND_INTERFACE=enp2s0 consul agent -server=true -client=0.0.0.0 -join=192.168.2.9  -node=node2

参数说明:

  • --net=host:容器启动最好是host,因为如果用Bridge,Consul 自带的DNS功能不起作用。

  • -e CONSUL_BIND_INTERFACE=enp5s0enp5s0是主机的网卡名称,每台主机可能不一样,使用命令ip a 可以查看网卡信息,找到内网Ip对应的名称就是该参数的值

  • -server:此标志用于控制代理是否处于服务器模式

  • -client=0.0.0.0:consul服务侦听地址,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1所以不对外提供服务,如果你要对外提供服务改成0.0.0.0

  • -bind=192.168.2.9:应为内部集群通信绑定的地址。这是集群中所有其他节点都应该可以访问的IP地址。默认情况下,这是“0.0.0.0”,这意味着Consul将绑定到本地计算机上的所有地址,并将 第一个可用的私有IPv4地址通告给群集的其余部分。这里我绑定了主机的内网地址, 让内网其他consul加入集群。

  • -ui:表示启动 Web UI 管理器,默认开放端口 8500

  • -bootstrap-expect=2:此标志提供数据中心中预期服务器的数量,Consul会等待指定数量的服务器可用,然后引导群集。

  • -node=node1:此节点在集群中的名称,这在集群内必须是唯一的。默认情况下,这是机器的主机名。

  • -join=192.168.2.9:启动时加入的另一位代理的地址。这可以指定多次以指定多个代理加入。如果Consul无法加入任何指定的地址,代理启动将失败。默认情况下,代理在启动时不会加入任何节点。请注意,retry_join在自动执行Consul集群部署时,使用 可能更适合帮助缓解节点启动竞争条件。

在浏览器输入地址http://192.168.2.9:8500即可访问

看到如图所示显示的 2 instances ,集群就启动成功了。