安装Consul集群
- - 周立的博客 - 关注Spring Cloud、Docker本文基于Consul 1.5.3,理论适用于Consul 1.6及更低版本. 运行一个consul agent. 将agent加入到consul集群. 列出consul cluster集群中的members. 这里只列出几个常用的命令,consul有将近20个命令,本文不作展开,详见: https://www.consul.io/docs/commands/index.html.
TIPS
- 本文基于Consul 1.5.3,理论适用于Consul 1.6及更低版本。
- 安装单机版Consul详见: 《安装单机版Consul》
命令 | 解释 | 示例 |
---|---|---|
agent | 运行一个consul agent | consul agent -dev |
join | 将agent加入到consul集群 | consul join IP |
members | 列出consul cluster集群中的members | consul members |
leave | 将节点移除所在集群 | consul leave |
这里只列出几个常用的命令,consul有将近20个命令,本文不作展开,详见: https://www.consul.io/docs/commands/index.html
consul agent
命令详解 consul agent
命令的常用选项如下:
Failed to get advertise address: Multiple private IPs found. Please configure one.
的异常 1 | consul agent -data-dir /tmp/node2 -node=node2 -bind=192.168.11.145 -datacenter=dc1 -ui -client=192.168.11.145 |
准备一个配置文件,名称任意,例如consul.json,内容如下:
1 | { |
启动时,让consul读取配置文件:
1 | consul agent -dev -config-file="consul-config/consul.json" |
consul agent
有20来个选项,本文只列出了常用选项,其他选项未作展开,详见: https://www.consul.io/docs/agent/options.html
准备三台CentOS 7的虚拟机,主机规划如下:
主机名称 | IP | 作用 | 是否允许远程访问 |
---|---|---|---|
node0 | 192.168.11.143 | consul server | 是 |
node1 | 192.168.11.144 | consul client | 否 |
node2 | 192.168.11.145 | consul client | 是 |
1 | consul agent -data-dir /tmp/node0 -node=node0 -bind=192.168.11.143 -datacenter=dc1 -ui -client=192.168.11.143 -server -bootstrap-expect 1 |
1 | consul agent -data-dir /tmp/node1 -node=node1 -bind=192.168.11.144 -datacenter=dc1 -ui |
1 | consul agent -data-dir /tmp/node2 -node=node2 -bind=192.168.11.145 -datacenter=dc1 -ui -client=192.168.11.145 |
1 | consul join 192.168.11.143 |
1 | consul join -rpc-addr=192.168.11.145:8400 192.168.11.143 |
1 | consul members -rpc-addr=192.168.11.143:8400 |
结果如下:
1 | Node Address Status Type Build Protocol DC |
说明集群已经搭建成功了。
我们分析一下,为什么第5步和第6步需要加 -rpc-addr
选项,而第4步不需要加任何选项呢?原因是 -client
指定了客户端接口的绑定地址,包括:HTTP、DNS、RPC,而 consul join
、 consul members
都是通过RPC与Consul交互的。
如上,我们三个节点都加了 -ui
参数启动了内建的界面。我们可以通过: http://192.168.11.143:8500/ui/
或者 http://192.168.11.145:8500/ui/
进行访问,也可以在node1机器上通过 http://127.0.0.1:8500/ui/
进行访问,原因是node1没有开启远程访问 ,三种访问方式结果一致。