用 redis-sentinel 做 redis 集群,如何实现当master挂掉后,不用修改程序中的配置

用 redis-sentinel 做 redis 集群,当 master 挂掉后,会将一个 slave 当做master,这样程序中的配置是不是必须改成新 master 的 ip 才行, 这样好麻烦,redis-sentinel 内置的有没有办法来解决这个问题,是不是必须用keepalive? 还有更好的解决办法么?

阅读 12k
5 个回答

根据 Redis 关于 Sentinel Client 的文档,您的程序通常需要连接到 Sentinel,监听 failover 的事件(switch-master)。当 failover 发生时,您通常需要将你的 Redis 客户端重新连接到新的 master 并验证其身份(ROLE)。具体建议步骤在文档中有相当详细的描述。

另外,您可以选择支持 Sentinel 的 Redis 客户端库来替代现有的连接程序,以避免自己实现上述步骤的麻烦。有一些库已经支持这一功能了,请对应查找您所用的语言。

新手上路,请多包涵

在redis2.8以上版本已经不需要手动切换了,
1,当master挂掉后会随机切换一个slave为新的master。
2,当老的master重新启动后会自动成为slave加入集群。

同问 如果后端程序是php 如何连接呢 找到了 PSRedis

哨兵模式 客户端直接连接的是哨兵节点 不是主节点。哨兵节点连接主节点。所以流程是:
客户端——哨兵节点——主节点。

如果主节点挂了 哨兵节点选择一个从节点为新的主节点。

所以 主节点挂不挂 和客户端没关系 只和哨兵节点有关系。既然和客户端没关系,客户端也就不需要修改主节点。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题