一个Consul集群可以有多个数据中心,每个数据中心运行一个Consul Server集群,server数目一般在3-5个,因为Consul是强一致性的,server的数目太多在同步数据的时候会产生性能问题。client的数目没有限制,可以成千上万个。
(2)将解压后的consul文件移动到/usr/local/bin目录下绝缓,执行consul命令查看安装情况
(3)修改环境数闭变量使consul安装永久生效
(4)启动集群
准备3台节点服务器:
192.168.203.130 consul1
192.168.203.131 consul2
192.168.203.132 consul3
启动consul1
启动另外两个节点(192.168.203.131,192.168.203.132):
分别将consul2,consul3加入到集并毕模群中
至此整个集群搭建完成,执行consul operator raft list-peers
命令查看集群状态,如下图
遇到的坑:
在执行consul join 192.168.203.130时会遇到如下错误:
Failed to join 192.168.203.130:dial tcp 192.168.203.130:8301:connect:no route to host
解决办法:
分别将8301,8300,8500端口加入防火墙就好了
(5)web页面查看
两者可以组合使用。该客户端提供一知档个服务,比如api或者mysql,另外一个客户端就可以去发现指定服搭源乱务的服务提供者。通过DNS或者HTTP应用程序可以容易找到所依赖的服务。2,健康检查consul可以提供健康检查服务。这个信息可以监视集群的健康。可以用来避免将流量发送到不健康的主机。3,存储。应用程序可以使用consul的层级的储存。比如动态配裂世置,,协调服务。直接可以用HTTPAPI来 *** 作。
公司服务器突然断电宕机,通电开机后Consul集群自启动完成,但是无法注册握冲核服务,界面可以打开,但是无法一直在Loading状态,无法查看Nodes,无法查看Key/Value。
查看服务日志后发现是Master没有被选举出来,一直在报错 No cluster leader 。初步诊断为Consul集群数据不同步或Docker重启后IP变动和之前注册在raft中的不一致。
执行命令 consul operator raft list-peers 后提示500错误,无法正确展示。
排查段掘后定位问题为 Docker重判尘启后IP变动和之前注册在raft中的不一致 导致Consul集群无法自行选举出Master,这种问题需要手动恢复才能解决。
官方对于该问题的解决方案
这个问题解决需要用到 data/raft/peers.json 来进行手动选举与节点同步
PS:这里需要注意, peers.json 有两种格式,具体写描述可以查看 data/raft/peers.info 其中有详细的描述
如果直接按照官方的方式去做,还是会起不来的,因为各个节点之间互相不通信,每个节点都会投自己一票,结果永远会是同票数,同票数就意味着需要重新进行投票选举,就会一直陷入死循环,所以要让其他节点主动放弃自己的投票权,只保留一个节点进行投票,这样才能选举出Master。将 non_voter 设置为true就不会参与选举了。
我的是 Raft Protocol Version 3使用如下JSON。
参数解释
PS:这个文件只要放在任意一个节点上面就行了,无需所有节点都放
重启Consul,集群恢复。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)