Sentinel配置错误导致的问题
事情的缘由
某个小规模集群中有三个pika节点(pika 是一个可持久化的兼容redis协议的kv数据库),一主两从,使用 redis-sentinel 做监控和主备切换。
部署好以后,客户端使用 redisson 连接pika集群报错
1 |
|
也就是说客户端只发现了一个 sentinel 服务。
排查过程
1 查看其中一个节点的 sentinel 配置,确认sentinel 服务之间没有自动发现彼此
1 |
|
如果发现了其他sentinel服务,配置中应该多出如下信息
1 |
|
2 说明 sentinel 之间通信可能有问题。这里说明下 sentinel 之间互相发现和通信的原理:
sentinel利用了master的发布/订阅机制,去自动发现其它也监控了同一个master的sentinel服务。这个通道名为 __sentinel__:hello
于是进入 pika 查看 __sentinel__:hello
通道中的信息:
1 |
|
发现所有的 sentinel 服务居然用的同一个 myid bc222e81189056294af3e9bc2b2db517464d78a3
真相大白,在部署 sentinel 服务的时候,将带有 myid的 配置文件直接复制到了其他节点,所以其他节点的 sentinel 服务启动的时候使用的同样的 myid, 而 sentinel 之间时通过 myid 来区分彼此的,myid 相同,sentinel 就懵逼了,以为整个集群中只有自己。
解决
将所有 sentinel 配置中的 myid 删除,重新启动,会自动生成一个新的id,问题解决
Sentinel配置错误导致的问题
https://inio.cc/2022/08/12/redis/sentinel配置错误导致的问题/