Redis - 如果主关闭,则将sentinel配置为选择slave

时间:2015-10-12 12:36:46

标签: redis redis-sentinel

您好我已经创建了一个由3个aws实例组成的Sentinel集群Redis,我已将Sentinel配置为具有HA redis集群并正常工作,但如果我模拟主服务器崩溃(关闭主实例),则安装在从服务器上的Sentinel ,没有找到主人的哨兵和选举失败。 我的哨兵配置是:

sentinel monitor master ip-master 6379 2
sentinel down-after-milliseconds master 5000
sentinel failover-timeout master 10000
sentinel parallel-syncs master 1

所有实例的相同文件

3 个答案:

答案 0 :(得分:1)

在与主服务器相同的节点上运行sentinel并尝试触发故障转移时会出现问题。尝试在主服务器上运行Sentinel。最终,这意味着不在与Redis实例相同的节点上运行Sentinel。

在您的情况下,您的死节点模拟显示了您不应该在与Redis相同的节点上运行Sentinel的原因:如果节点死亡,您将失去一个哨兵。从理论上说它应该仍然有效,但正如你和其他人所看到的那样,它确实无法发挥作用。我有一些理论,但我还没有确认它们。

从某种意义上说,Sentinel部分是一个监控系统。无论如何,在被监视的相同节点上运行监视解决方案通常是不可取的,因此无论如何您应该使用节点外的哨兵。由于Sentinel资源效率高,因此您不一定需要专用计算机或大型虚拟机。实际上,如果您有一组静态的应用程序服务器(运行客户端代码),那么您应该在那里运行Sentinel,请记住您需要3个最小值和50%+ 1的法定数量。

答案 1 :(得分:1)

最近的redis版本引入了" protected-mode"选项,默认为是。

将protected-mode设置为yes,没有设置密码的redis实例将不允许远程客户端执行命令。

这也影响了哨兵大师的选举。

尝试设置"保护模式否"在哨兵。这将允许他们互相交谈。

答案 2 :(得分:0)

如果您不想将保护模式设置为no。您最好在redis.conf中设置 masterauth myredis ,并在sentinel.conf

中使用 sentinel auth-pass mymaster myredis