嗨,我创建了一个由3个AWS实例组成的哨兵组成的集群Redis,我已配置哨兵以具有HA Redis集群并工作,但是如果我模拟了主节点崩溃(关闭主实例),则哨点安装在从属节点上,而不是定位主人的哨兵和选举失败。
我的哨兵配置是:
sentinel monitor master ip-master 6379 2
sentinel down-after-milliseconds master 5000
sentinel failover-timeout master 10000
sentinel parallel-syncs master 1
同一文件到所有实例
最佳答案
在与主节点相同的节点上运行哨兵并尝试触发故障转移时会出现问题。无需在主服务器上运行Sentinel即可尝试。最终,这意味着不要在与Redis实例相同的节点上运行Sentinel。
在您的情况下,死节点模拟显示了为什么不应该在与Redis相同的节点上运行Sentinel:如果该节点死亡,则会丢失其中一个前哨。从理论上讲,它仍然应该起作用,但是正如您和其他人所看到的那样,它并不确定起作用。我有一些理论为什么,但我尚未证实。
从某种意义上说,Sentinel在某种程度上是一个监视系统。通常不建议在与要监视的节点相同的节点上运行监视解决方案,因此无论如何都应使用节点外的哨兵。由于Sentinel具有资源效率,因此您不一定需要专用的计算机或大型VM。的确,如果您有一组静态的应用程序服务器(在其中运行客户端代码),则应在此处运行Sentinel,请记住,您需要最少3个,法定数量为50%+ 1。