Consul集群搭建

Consul集群搭建,第1张

整体架构如下:

一个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,集群恢复。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12322211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存