PS: 上次在搭建哨兵集群遇到的一个问题,分享且记录一下吧。上次搭建的哨兵集群文章链接:Redis的哨兵集群(一主两从三哨兵、部署教程和知识总结)-CSDN博客
一、问题&背景
先搭建了一主两从的Redis后,然后配置在三台机器上配置了哨兵服务,都启动成功后,登录到哨兵服务上查看info信息始终只能查到一个哨兵数量。
哨兵数量和实际启动的数量不一致,哨兵集群搭建未成功。
1. sentinel_masters: 哨兵主节点数量只有一个,这个是没问题的。
2. 但是下面的sentinels:哨兵的总数量始终都是1个,说明这三个哨兵没有成功通信并搭建为哨兵集群。
二、分析问题
1.首先考虑网络通信问题,要保证三台机器的网络可以互相Ping通,其次是Redis的端口和哨兵的端口也可以互相访问到。
2.哨兵的配置文件问题,配置文件中存在错误的配置,导致哨兵集群无法组建成功。
三、解决方案
1、网络问题
1、使用ping和telnet命令来检查机器之间的网络通信是否有问题,比较简单就不多说了。
2、也可以查看防火墙的端口开放等,排除网络通信问题。
2、哨兵配置文件问题。
出现这种问题大概率都是配置文件配置有错误。
推荐大家主要检查以下几个点。
(1)密码问题配置:Redis配置了密码,需要保证主从都进行配置密码,哨兵也需要配置masterauth等相关配置。
(2)protected-mode 参数: 保护模式关闭设置为no即可。
(3)sentinel myid 参数: 检查哨兵sentinel.conf配置文件的sentinel myid参数是否有相同,这个参数是哨兵的唯一标志,要保证每个哨兵的myid参数不一致才可以,可以直接删除这个配置,哨兵启动时会自动重新生成myid。
(4)推荐的配置模板参数:在Redis的6.2版本以后,提供的sentinel.conf模板文件中,有sentinel-announce-ip和sentinel-announce-port两个参数,这两个参数是要配置当前节点哨兵的IP和Port,并不是配置主节点的,这点需要注意。
PS:sentinel-announce-ip和sentinel-announce-port 这个两个参数用于设置 Sentinel 进程向其他 Sentinel 进程或 Redis 服务器报告的 IP 地址和端口的。
四、总结
上面就是我的几个排查思路,我自己是因为当时配置好一个哨兵并且启动成功了,以为哨兵的配置文件都一样就直接复制到其他机器上了,导致myid参数都一致了,查询哨兵信息,怎么都是只有一个哨兵数量。
删除了sentinel myid参数后,重新启动三个哨兵,再次查看Sentinel info 信息就恢复正常了。
其次也可以查看sentinel.conf文件的末尾,哨兵再启动完成后会添加监控的节点信息。
PS:这就是上次的坑了,分享记录一下吧。
也可以学习参考学习交流一下,关注一下后续还会继续分享一些没用的知识。
hhh,一个JAVA开发再学运维知识。