1

嗨,我已经创建了一个由 3 个 aws 实例组成的哨兵集群 Redis,我已经将哨兵配置为具有 HA Redis 集群并可以工作,但是如果我模拟主服务器崩溃(主实例关闭),哨兵安装在从服务器上,而不是定位master 的哨兵和选举失败。我的哨兵配置是:

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

所有实例都使用相同的文件

4

3 回答 3

1

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

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

这也影响哨兵主选举。

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

于 2018-05-15T14:43:28.510 回答
1

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

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

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

于 2015-10-14T15:11:44.487 回答
0

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

于 2018-06-30T00:34:14.563 回答