2025年redis 连接哨兵(redis的哨兵)

redis 连接哨兵(redis的哨兵)Redis 是一个高性能的键值存储系统 广泛应用于缓存 消息队列等场景 为了提高系统的可用性和容错能力 Redis 提供了哨兵 Sentinel 机制 哨兵可以监控主节点和从节点的状态 并在主节点失效时自动进行故障转移 本文将详细介绍如何使用 Docker 搭建 Redis 哨兵环境 确保你的 Redis 集群在出现故障时能够自动恢复 已安装 Docker 和 Docker Compose 基本的



Redis 是一个高性能的键值存储系统,广泛应用于缓存、消息队列等场景。为了提高系统的可用性和容错能力,Redis 提供了哨兵(Sentinel)机制。哨兵可以监控主节点和从节点的状态,并在主节点失效时自动进行故障转移。本文将详细介绍如何使用 Docker 搭建 Redis 哨兵环境,确保你的 Redis 集群在出现故障时能够自动恢复。

  • 已安装 Docker 和 Docker Compose。
  • 基本的 Docker 和 Redis 知识。

假设我们在 redis-sentinel 目录下进行操作,目录结构如下:

 
 
 
 
 
  • sentinel-slave1.conf
 
  • sentinel-slave2.conf
 
  • sentinel-slave3.conf
 
 
 

:哨兵在报告主节点和从节点的地址时,会使用主机名而不是 IP 地址。
:哨兵在向其他哨兵或客户端报告自己的地址时,会使用主机名而不是 IP 地址。

 
 

在 redis-sentinel 目录下运行以下命令来启动 Docker Compose:

 
 
 
 

你应该能看到 role:master 和 connected_slaves:2,表示有两个从节点连接。

 

你应该能看到 role:slave 和 master_host:redis-master,表示从节点已成功连接到主节点。

 

你应该能看到主节点和从节点的信息,确认哨兵已经正确监控主从节点。

停止主节点:

 

检查哨兵状态:

 

你应该能看到新的主节点信息,确认哨兵已经成功进行了故障转移。
使用查看哨兵节点的日志信息,也会有如下日志输出:

在这里插入图片描述

  • Failed to resolve hostname
    如果未使用固定IP,而是使用桥接方式的动态IP,可能会出现哨兵节点无法解析主节点服务名的情况,这跟docker的现象如下图:
    在这里插入图片描述
    解决方案
    可以在哨兵节点的配置文件中开启如下配置:
 

docker桥接模式内置了DNS解析服务,它可以使用服务名直接相互访问,不用设置容器的具体ip,这样就避免了每次重新部署容器时ip发生变动造成的配置麻烦。这种方式很方便,但部分版本的redis内部对域名访问的支持并不稳定。

  • Could not rename tmp config file (Device or resource busy)
 

在这里插入图片描述
出现该问题的原因是redis sentinel(哨兵)会更改节点和哨兵的conf文件,这涉及文件权限问题。最简单的一种处理方案:挂载文件时,选择挂载conf文件所在的目录,而不直接挂载conf文件。

  • Next failover delay: I will not start a failover before
    在这里插入图片描述
    原因待定,临时解决方案:去掉各节点配置文件中的密码信息。

通过使用 Docker 搭建 Redis 哨兵环境,我们可以轻松地实现 Redis 集群的高可用性和故障恢复。本文详细介绍了如何在docker中配置主节点、从节点和哨兵节点,并提供了详细的步骤和示例。希望这篇文章对你有所帮助,如果你有任何问题或建议,欢迎留言交流。

    1. WARNING: Sentinel was not able to save the new configuration on disk
    1. 使用docker部署redis哨兵(sentinel)时遇到的问题
编程小号
上一篇 2025-07-14 20:40
下一篇 2025-04-06 21:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/41480.html