<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p></p>
讯享网
Redis 是一个高性能的键值存储系统,广泛应用于缓存、消息队列等场景。为了提高系统的可用性和容错能力,Redis 提供了哨兵(Sentinel)机制。哨兵可以监控主节点和从节点的状态,并在主节点失效时自动进行故障转移。本文将详细介绍如何使用 Docker 搭建 Redis 哨兵环境,确保你的 Redis 集群在出现故障时能够自动恢复。
- 已安装 Docker 和 Docker Compose。
- 基本的 Docker 和 Redis 知识。
假设我们在 redis-sentinel 目录下进行操作,目录结构如下:
讯享网
- sentinel-slave1.conf
讯享网
- sentinel-slave2.conf
- sentinel-slave3.conf
讯享网
讯享网
在 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中配置主节点、从节点和哨兵节点,并提供了详细的步骤和示例。希望这篇文章对你有所帮助,如果你有任何问题或建议,欢迎留言交流。
-
- WARNING: Sentinel was not able to save the new configuration on disk
-
- 使用docker部署redis哨兵(sentinel)时遇到的问题



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/147093.html