当前位置: 首页 > news >正文

三台 Centos7.9 中 Docker 部署 Redis 哨兵模式

三台 Centos7.9 中 Docker 部署 Redis 哨兵模式

  • 1. 环境规划
  • 2. 配置 Docker Compose
  • 3. 配置 Redis 密码和持久化
  • 4. 配置哨兵
  • 5. 启动服务
  • 6. 验证 Redis 哨兵模式
  • 7. 注意事项

1. 环境规划

三台服务器的角色分配如下:

IP Address容器端口角色
192.168.15.128redis-master6379主节点
192.168.15.129redis-slave16379从节点
192.168.15.130redis-slave26379从节点
192.168.15.128sentinel126379哨兵节点
192.168.15.129sentinel226379哨兵节点
192.168.15.130sentinel326379哨兵节点

Redis 主节点和哨兵将在同一台服务器上运行。

2. 配置 Docker Compose

在每台服务器上创建自己的 docker-compose.yml 文件。

192.168.15.128 - docker-compose.yml

version: '3.9'
services:redis-master:image: redis:6.0container_name: redis-masterrestart: alwaysports:- "6379:6379"volumes:- ./data:/data- ./redis.conf:/usr/local/etc/redis/redis.confcommand: ["redis-server", "/usr/local/etc/redis/redis.conf"]networks:- redis-networksentinel1:image: redis:6.0container_name: redis-sentinel1restart: alwaysports:- "26379:26379"networks:- redis-networkvolumes:- ./sentinel1.conf:/usr/local/etc/sentinel.confcommand: ["redis-sentinel", "/usr/local/etc/sentinel.conf"]networks:redis-network:driver: bridge

192.168.15.129 - docker-compose.yml

version: '3.9'
services:redis-slave1:image: redis:6.0container_name: redis-slave1restart: alwaysports:- "6379:6379"volumes:- ./data:/data- ./redis.conf:/usr/local/etc/redis/redis.confcommand: ["redis-server", "/usr/local/etc/redis/redis.conf"]networks:- redis-networksentinel2:image: redis:6.0container_name: redis-sentinel2restart: alwaysports:- "26379:26379"networks:- redis-networkvolumes:- ./sentinel2.conf:/usr/local/etc/sentinel.confcommand: ["redis-sentinel", "/usr/local/etc/sentinel.conf"]networks:redis-network:driver: bridge

192.168.15.130 - docker-compose.yml

version: '3.9'
services:redis-slave2:image: redis:6.0container_name: redis-slave2restart: alwaysports:- "6379:6379"volumes:- ./data:/data- ./redis.conf:/usr/local/etc/redis/redis.confcommand: ["redis-server", "/usr/local/etc/redis/redis.conf"]networks:- redis-networksentinel3:image: redis:6.0container_name: redis-sentinel3restart: alwaysports:- "26379:26379"networks:- redis-networkvolumes:- ./sentinel3.conf:/usr/local/etc/sentinel.confcommand: ["redis-sentinel", "/usr/local/etc/sentinel.conf"]networks:redis-network:driver: bridge

3. 配置 Redis 密码和持久化

在每个服务器上创建 redis.conf 文件,内容如下。

redis.conf (适用于主节点)

bind 0.0.0.0
protected-mode yes
port 6379
requirepass your_master_password
masterauth your_master_password
appendonly yes
dir /data

redis.conf (适用于从节点)

bind 0.0.0.0
protected-mode yes
port 6379
requirepass your_slave_password
masterauth your_master_password
replicaof 192.168.15.128 6379
appendonly yes
dir /data

requirepass:设置访问实例的密码。
masterauth:从节点用此密码认证主节点。
appendonly:启用数据持久化。

4. 配置哨兵

更新各台服务器的 sentinelX.conf 文件,确保哨兵与 Redis 实例的密码匹配:

sentinelX.conf

port 26379
sentinel monitor mymaster 192.168.15.128 6379 2
sentinel auth-pass mymaster your_master_password
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1

sentinel auth-pass mymaster your_master_password:为哨兵提供与 Redis 主节点通信时使用的密码。

  • 192.168.15.128: Redis 主节点的 IP 地址。
  • 2: 最少票数要求,3 个哨兵中需要至少 2 个同意切换主节点。

5. 启动服务

在每台服务器的对应目录运行:

docker-compose up -d

验证所有容器是否正常运行:

docker ps

6. 验证 Redis 哨兵模式

检查哨兵状态: 登录任意一个哨兵容器:

docker exec -it redis-sentinel1 redis-cli -p 26379

执行命令:

SENTINEL mastersSENTINEL slaves mymaster

模拟故障转移: 在主节点服务器停止主节点容器:


docker stop redis-master

查看日志确认哨兵是否选出新的主节点。

重新加入原主节点: 启动原主节点并手动设置为从节点:

docker start redis-masterdocker exec -it redis-master redis-clislaveof NEW_MASTER_IP 6379

7. 注意事项

  • 端口防火墙:确保 6379 和 26379 端口在三台服务器之间互通。
  • 哨兵数量:建议使用奇数个哨兵以避免投票僵局。

完成以上步骤后,在 192.168.15.128 - 192.168.15.130 即可完成部署 Redis 哨兵模式。


http://www.mrgr.cn/news/83789.html

相关文章:

  • Python AI教程之十五:监督学习之决策树(6)高级算法C5.0决策树算法介绍
  • GPU算力平台|在GPU算力平台部署智能媒体生成助手LivePortrait的应用教程
  • 【Uniapp-Vue3】Prop校验与prop默认值用法及循环遍历数组对象
  • Netty 入门学习
  • java项目之网上点餐系统源码(springboot+mysql+vue)
  • 1.ProtoBuf的学习与使用
  • [创业之路-249]:《华为流程变革:责权利梳理与流程体系建设》核心内容
  • 期望最大化算法:机器学习中的隐变量与参数估计的艺术
  • ASP.NET Core 系列总结
  • 【SH】Xiaomi9刷Windows10系统研发记录 、手机刷Windows系统教程、小米9重装win10系统
  • 前端笔记----
  • 【小王Java自习】
  • Spring FactoryBean到仿照mybatis @Mapper的实现
  • 笔记本电脑 选购 回收 特权模式使用 指南
  • 【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列
  • 开发人员学习书籍推荐(C#、Python方向)
  • 【Docker】docker compose 安装 Redis Stack
  • 如何在本地部署大模型并实现接口访问( Llama3、Qwen、DeepSeek等)
  • 大疆机场及无人机上云
  • idea快捷键
  • idea 自动导包,并且禁止自动导 *(java.io.*)
  • WINFORM - DevExpress -> gridcontrol拖拽行记录排序
  • WINFORM - DevExpress -> devexpress版--报表(report)
  • WINFORM - DevExpress -> gridcontrol---->主从模式
  • 高等数学学习笔记 ☞ 不定积分与积分公式
  • WINFORM - DevExpress -> gridcontrol ---->控件(ColumnEdit控件)