Redis-配置sentinel以在主设备关闭时选择从设备

Redis-配置sentinel以在主设备关闭时选择从设备,redis,redis-sentinel,Redis,Redis Sentinel,您好,我已经创建了一个由3个aws实例组成的sentinel集群Redis,我已经将sentinel配置为拥有一个HA Redis集群并工作,但是如果我模拟了主节点崩溃(主节点实例关闭),sentinel安装在从节点上,没有找到主节点的sentinel,选择失败。 我的sentinel配置是: sentinel monitor master ip-master 6379 2 sentinel down-after-milliseconds master 5000 sentinel failove

您好,我已经创建了一个由3个aws实例组成的sentinel集群Redis,我已经将sentinel配置为拥有一个HA Redis集群并工作,但是如果我模拟了主节点崩溃(主节点实例关闭),sentinel安装在从节点上,没有找到主节点的sentinel,选择失败。 我的sentinel配置是:

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

将同一文件发送给所有Instance

在与主机相同的节点上运行sentinel并尝试触发故障切换时会出现问题。在主机上不运行Sentinel的情况下尝试。最终,这意味着不在与Redis实例相同的节点上运行Sentinel

在您的案例中,死节点模拟显示了为什么不应该在与Redis相同的节点上运行Sentinel:如果节点死了,您将丢失一个Sentinel。从理论上讲,它应该仍然有效,但正如你和其他人所看到的,它不一定有效。我有一些理论,但我还没有证实


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

最近的redis版本引入了“受保护模式”选项,默认为是

如果将“保护模式”设置为“是”,则未设置密码的redis实例将不允许远程客户端执行命令

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


在sentinels中设置“保护模式否”进行尝试。这将允许他们相互交谈。

如果您不想将保护模式设置为否。您最好在redis.conf中设置masterauth myredis,并在sentinel.conf中使用sentinel auth pass mymaster myredis

很清楚您的布局是什么。您是否有:a)3个节点,每个节点上有哨兵,一个节点有主节点,另一个节点有从节点?b) 1个主节点,3个从节点,每个都运行sentinel?c) 还有别的吗?如果您在与主节点相同的节点上运行sentinel,您如何模拟故障-通过停止节点、在主节点上使用调试命令、停止redis进程或其他方式?你检查过Sentinel的日志了吗?他们怎么说?我有1个主节点和2个从节点(总共3台服务器),在每个节点上Sentinel都安装了相同的配置文件。为了模拟故障切换,我尝试了两种方法,a)关闭主机上的redis服务(选择工作)b)物理关闭主机,
halt
命令(选择不工作),但如果在节点外安装sentinel,如何创建sentinel的配置文件?自动发现工作,因为从站的sentinel调用主站,如果sentinel未安装在从站节点上,主站如何知道谁是从站?不,主站通过与sentinel对话知道谁是从站,但通过客户端连接到它并发出同步命令。您可以用完全相同的方式配置Sentinel—将其指向主IP:端口。Sentinel通过询问master来解决其余问题。Ops,对不起……你是对的,那么在其他3台不是redis Instances的机器上安装Sentinel就足够了。确保“老”哨兵消失理想情况下,您希望它们与客户机代码位于同一网络上,因为它测试访问路由。但最终,它们可以位于Redis节点以外的任何位置,只要它们可以连接到Redis实例。无法连接到客户端,因为它们位于自动缩放组中,并且不断被销毁和重新创建。我安装到网络的其他实例。谢谢