0

我们有三个 redis 服务器设置如下:

Node1: Default Redis Master & Running Redis Sentinel Software
Node2: Redis Slave & Running Redis Sentinel Software
Node3: Redis Slave & Running Redis Sentinel Software

如果我去node1并发出命令停止redis-server(service redis-server stop),哨兵很快检测到Master上的redis已经宕机并提升Node2或Node3成为Master(正是我们想要的/预计)。

现在假设我回到节点一并重新启动它(服务 redis-server 启动)。如果我发出“redis-cli info | grep ^role”,我看到的是几秒钟(10-15 秒)Node1 仍然认为它是 Master。

因此,我们最终在短时间内获得了双硕士学位。最终,几秒钟后,哨兵解决了情况,Node1 被降级为奴隶。但是,我认为拥有双硕士(即使是几秒钟)可能会导致数据完整性问题。

在恢复期间发送到 Node1 的数据仍然认为它是主节点,然后降级为从节点时会发生什么情况。发送给它的数据会丢失吗?

我们有什么办法可以避免这种情况吗?在哨兵告诉它天气它是从/主之前,redis-server 是否有设置不接受连接?我们还能如何处理这个问题?

谢谢布拉德

4

1 回答 1

0

对于任何好奇我们如何解决这个问题的人。请参阅github上的以下讨论:https ://github.com/antirez/redis/issues/1813

基本上,我们设置了一个 xinetd http 服务,该服务由一个 bash shell 脚本组成,该脚本查询哨兵并将状态报告回负载均衡器。

于 2014-06-16T13:42:38.263 回答