Redis - 如果主服务器关闭,则将哨兵配置为选择从服务器

Redis - configure sentinel to elect slave if master shutdown

您好,我已经创建了一个由 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

同一个文件到所有实例

运行在与主节点相同的节点上设置哨兵并尝试触发故障转移时会出现问题。试试吧w/o 运行ning Sentinel on master。最终这意味着不 运行ning Sentinel 在与 Redis 实例相同的节点上。

在您的情况下,您的死节点模拟显示了为什么您不应该 运行 哨兵与 Redis 在同一节点上:如果节点死亡,您将失去一个哨兵。理论上它应该仍然有效,但正如您和其他人所见,它不一定有效。我有一些理论,但我还没有证实它们。

从某种意义上说,Sentinel 在一定程度上是一个监控系统。 运行 无论如何,通常不建议在与被监视相同的节点上使用监视解决方案,因此无论如何您都应该使用节点外哨兵。由于 Sentinel 具有资源效率,因此您不一定需要专用机器或大型 VM。事实上,如果你有一组静态的应用程序服务器(你的客户端代码 运行s),你应该在那里 运行 Sentinel,记住你需要最少 3 个和 50%+1 的法定人数。

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

将保护模式设置为 yes,没有设置密码的 redis 实例将不允许远程客户端执行命令。

这也会影响 sentinel master 的选举。

尝试在哨兵中设置 "protected-mode no"。这将使他们能够相互交谈。

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