![故障转移后,原始 Redis Master 未变为“良好”的从属](https://linux22.com/image/1578721/%E6%95%85%E9%9A%9C%E8%BD%AC%E7%A7%BB%E5%90%8E%EF%BC%8C%E5%8E%9F%E5%A7%8B%20Redis%20Master%20%E6%9C%AA%E5%8F%98%E4%B8%BA%E2%80%9C%E8%89%AF%E5%A5%BD%E2%80%9D%E7%9A%84%E4%BB%8E%E5%B1%9E.png)
我已设置了一个 3 节点 HA redis 集群,每个节点上都有 Sentinel 监视器。我有以下配置:RedisA - 主节点 RedisB - 副本节点 RedisC - 副本节点
有 3 个哨兵监视主服务器。一切正常(我让所有哨兵都处于运行状态,因此不存在法定人数问题):
- 我停止这RedisA进程,并且它故障转移到RedisB 为了掌握。
- 我停下RedisB它将进行故障转移并使RedisC 掌握。 带回RedisA和RedisB, 他们成为副本正如预期的那样。
- 我停下RedisC,RedisB变成掌握。
- 仅需RedisB和RedisA 向上, 我停止 RedisB。 但现在RedisA 不会成为主服务器我的 HA 集群崩溃了。
一切似乎都很好,但问题是RedisA(原版大师)没有成为合格的奴隶。
任何帮助是极大的赞赏!
答案1
我找到了我的问题。我的配置有密码验证。初始配置为两个从服务器设置了 masterauth,但我没有将其添加到主服务器(因为它不需要它)。当它发生故障转移时,主服务器成为从服务器,但由于它没有设置 masterauth 密码,它无法复制,因此 sentinel 明智地拒绝在那之后选择它作为新的主服务器。修复:为我的原始主服务器(RedisA)添加 masterauth 密码。