自建IDC后面简称own、阿里云机房ali、腾讯云机房tx
own机房:内网10.10.10.0/24,边界节点,10.10.10.100/101.xxx.80.xxx
ali机房:内网10.10.10.0/24,边界节点,10.10.10.100/xxx.43.xxx.50
tx机房:内网10.10.10.0/24,边界节点,10.10.10.100/xxx.159.xxx.35
1、server、client节点部署
所有节点的consul服务均由supervisord守护管理。
idc机房配置3个server模式的节点,其它的均是client模式的节点,server和client配置各举例一个
server模式:(边界server节点的配置稍有不同,后面详细介绍):
1 | [program:consul_server] |
client模式:
1 | [program:consul_client] |
ali、tx机房的server、client节点配置类似,有区别的参数就是-dc、-bind、-node即所属的数据中心、用于集群通信的监听ip、节点名称。
每次添加一个新的节点后,consul join加入到本地集群已有的任意一个节点即可加入这个集群(这个动作可以做到批量装机里面)。
2、集群之间的通信设置
每个集群选取一个处于server模式的节点作为边界节点,配置与集群内的其它server模式的节点稍有差异:
1 | [program:consul_server] |
相比于其它server模式节点,需要指定-advertise-wan参数。如果不指定该参数,consul join -wan加入一个集群的时候,默认使用的是内外ip(节点环境是有内外网两个以上ip),造成集群之间通信失败(如果集群之间的内网没有互通)。
每个边界节点将-advertise-wan设置成公网ip,用于集群之间的通信。
如果边界节点开启了防火墙,需要将对方的ip地址加入白名单,或者将TCP/UDP的8302端口加入彼此的白名单。
最后任意一个边界节均可以查看到各个边界节点状态信息:
1 | $ consul members -wan |
3、集群UI管理界面设置
将官方提供的ui界面文件部署在任意一个边界节点上,可以访问到任何一个集群的节点状态。客户端(http、dns、rpc)默认监听地址是127.0.0.1,访问ui的端口是http的8500端口,如果不设置客户端监听ip,需要一个代理(nginx)将本地的8500端口转发到外网,也可以直接指定client的监听ip:
1 | [program:consul_server] |
参数-client用来指定client监听ip,处于安全考虑可以监听在内网10.10.10.100,但是consul命令默认访问的是127.0.0.1端口,故监听0.0.0.0。配置成功后可以看到各个集群之间的状态: