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

Redis 哨兵模式搭建教程(基于 Docker,附完整配置与避坑指南)

引言

Redis 哨兵模式(Sentinel)是实现 Redis 高可用的核心方案,能够自动监控主从节点状态,并在主节点故障时完成自动故障转移。本文基于 Docker 环境,详细讲解如何在两台服务器(IP 分别为172.16.126.21和172.16.126.20)上搭建哨兵模式,包含完整配置、启动命令及常见问题解决,配置可直接复制粘贴使用。

环境准备

  • 服务器: 2 台 Linux 服务器(本文以172.16.126.21作为初始主节点,172.16.126.20作为从节点)。
  • 软件: Docker(已安装并启动)。
  • 端口开放: 确保两台服务器开放6379(Redis 主从通信)和26379(哨兵通信)端口,或临时关闭防火墙(测试环境):
# 临时关闭防火墙(生产环境需按需开放端口)
systemctl stop firewalld
  • 目录规划: 两台服务器创建相同的目录结构(用于挂载配置和数据):
# 在两台服务器上分别执行
mkdir -p /home/mydata/redis/data
mkdir -p /home/mydata/redis/conf
mkdir -p /home/mydata/sentinel/conf

一、主节点配置(172.16.126.21)

主节点负责处理写请求,从节点通过主从复制同步数据。以下是主节点的 Redis 配置和启动步骤。

1. 创建主节点 Redis 配置文件

在172.16.126.21服务器上创建redis.conf:

vi /home/mydata/redis/conf/redis.conf

填入以下内容(密码为Foton@2024kdms,可根据需求修改):

# 主节点Redis配置
port 6379
# 访问密码(必填,确保从节点和哨兵同步配置)
requirepass Foton@2024kdms
# 允许所有IP访问(生产环境可限制为从节点IP)
bind 0.0.0.0
# 关闭保护模式(允许跨IP访问)
protected-mode no
# Docker中禁用后台运行(否则容器会退出)
daemonize no
# 开启AOF持久化(增强数据安全性)
appendonly yes

2. 启动主节点 Redis 容器

docker run -p 6379:6379 -p 26379:26379 \--network host \--name redis-master \--restart=always \-v /home/mydata/redis/data:/data \-v /home/mydata/redis/conf/redis.conf:/etc/redis/redis.conf \-d redis redis-server /etc/redis/redis.conf

关键:redis-server后必须指定配置文件路径/etc/redis/redis.conf,否则自定义配置不生效。

二、从节点配置(172.16.126.20)

从节点通过replicaof配置同步主节点数据,以下是从节点的配置和启动步骤。

1. 创建从节点 Redis 配置文件

在172.16.126.20服务器上创建redis.conf:

vi /home/mydata/redis/conf/redis.conf

填入以下内容(需与主节点密码一致):

# 从节点Redis配置
port 6379
# 从节点可省略密码(客户端通常只连接主节点),若保留需与主节点一致
# requirepass Foton@2024kdms
bind 0.0.0.0
protected-mode no
daemonize no
appendonly yes
# 指向主节点IP和端口(核心配置)
replicaof 172.16.126.21 6379
# 主节点的访问密码(必须与主节点requirepass一致)
masterauth "Foton@2024kdms"

2. 修复配置文件权限(避免启动报错)

从节点启动时可能因权限不足无法读取配置文件,需提前授权:

# 为配置文件添加可读权限
chmod 644 /home/mydata/redis/conf/redis.conf

3. 启动从节点 Redis 容器

docker run -p 6379:6379 -p 26379:26379 \--network host \--name redis-slave \--restart=always \-v /home/mydata/redis/data:/data \-v /home/mydata/redis/conf/redis.conf:/etc/redis/redis.conf \-d redis redis-server /etc/redis/redis.conf

三、哨兵配置(主从节点各部署 1 个)

哨兵节点负责监控主从状态,主节点故障时自动将从节点升级为新主节点。两台服务器均需部署哨兵,配置基本一致。

1. 主节点(172.16.126.21)的哨兵配置

创建哨兵配置文件sentinel.conf:

vi /home/mydata/sentinel/conf/sentinel.conf

填入以下内容

# 哨兵端口
port 26379
# Docker中禁用后台运行
daemonize no
# 监控主节点:名称(mymaster)、主节点IP、端口、故障判定阈值(1个哨兵认为故障即可触发转移)
sentinel monitor mymaster 172.16.126.21 6379 1
# 判定主节点主观下线的超时时间(30秒)
sentinel down-after-milliseconds mymaster 30000
# 故障转移时,最多1个从节点同时同步新主节点数据
sentinel parallel-syncs mymaster 1
# 故障转移超时时间(180秒)
sentinel failover-timeout mymaster 180000
# 主节点的访问密码(与主节点requirepass一致,含特殊字符需用引号)
sentinel auth-pass mymaster "Foton@2024kdms"

启动主节点哨兵容器:

docker run -p 26379:26379 \--network host \--name redis-sentinel-21 \--restart=always \-v /home/mydata/sentinel/conf/sentinel.conf:/etc/redis/sentinel.conf \-d redis redis-sentinel /etc/redis/sentinel.conf

2. 从节点(172.16.126.20)的哨兵配置

创建哨兵配置文件sentinel.conf(与主节点哨兵配置一致,仅运行在不同服务器):

vi /home/mydata/sentinel/conf/sentinel.conf

填入以下内容(与主节点哨兵配置相同):

port 26379
daemonize no
sentinel monitor mymaster 172.16.126.21 6379 1
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel auth-pass mymaster "Foton@2024kdms"

启动从节点哨兵容器:

docker run -p 26379:26379 \--network host \--name redis-sentinel-20 \--restart=always \-v /home/mydata/sentinel/conf/sentinel.conf:/etc/redis/sentinel.conf \-d redis redis-sentinel /etc/redis/sentinel.conf

四、验证哨兵模式

1. 检查主从复制状态

  • 主节点(21):
# 进入主节点容器
docker exec -it redis-master redis-cli
# 输入密码认证
auth Foton@2024kdms
# 查看复制状态(应显示1个从节点)
info replication

正常输出应包含:role:master和connected_slaves:1,并显示从节点172.16.126.20的信息。

  • 从节点(20):
# 进入从节点容器
docker exec -it redis-slave redis-cli
# 若从节点未设置密码则无需认证,否则执行:auth Foton@2024kdms
# 查看复制状态(应显示主节点信息)
info replication

正常输出应包含:role:slave、master_host:172.16.126.21和master_link_status:up。

2. 检查哨兵状态

在任意哨兵容器中执行命令,查看监控的主从节点信息:

# 进入21节点哨兵容器(或20节点的redis-sentinel-20)
docker exec -it redis-sentinel-21 redis-cli -p 26379
# 查看当前主节点
sentinel get-master-addr-by-name mymaster
# 查看从节点列表(应显示20节点)
sentinel slaves mymaster
# 查看哨兵集群(应显示2个哨兵)
sentinel sentinels mymaster

五、故障转移测试

手动停止主节点(21),验证哨兵是否自动将从节点(20)升级为新主节点:

1.停止主节点容器:

# 在21节点执行
docker stop redis-master

2.等待 30 秒后(down-after-milliseconds 配置),查看哨兵主节点:

# 进入任意哨兵容器
docker exec -it redis-sentinel-20 redis-cli -p 26379
sentinel get-master-addr-by-name mymaster  # 应返回172.16.126.20 6379

3.恢复原主节点(21):

# 在21节点执行
docker start redis-master

原主节点恢复后会自动成为新主节点(20)的从节点,可通过info replication验证。

六、常见问题及解决

1.从节点启动报错 “Permission denied”:

原因:配置文件权限不足。解决:chmod 644 /home/mydata/redis/conf/redis.conf。

2.主从复制失败(从节点 role 仍为 master):

原因:启动命令未指定配置文件,replicaof未生效。解决:启动命令末尾添加/etc/redis/redis.conf。

3.哨兵无法识别从节点(slaves 返回空):

原因:主从复制未生效,或哨兵未配置auth-pass。解决:确保主从正常连接,哨兵配置中添加sentinal auth-pass。

4.Java 项目在主节点故障后无法访问:

原因:客户端未通过哨兵获取新主节点,硬编码了原主节点地址。解决:客户端配置哨兵模式(示例 Spring Boot 配置):

spring:redis:sentinel:master: mymasternodes: 172.16.126.21:26379,172.16.126.20:26379password: Foton@2024kdms

总结

通过本文步骤,可在两台服务器上快速搭建 Redis 哨兵模式,实现主节点故障自动转移。核心注意事项:

  • 启动 Redis 容器时必须指定配置文件路径。
  • 密码含特殊字符需用引号包裹,且主从、哨兵密码保持一致。
  • 客户端需通过哨兵获取主节点地址,而非硬编码。

按此配置,哨兵模式可有效保障 Redis 服务的高可用性,适合中小规模生产环境使用。

http://www.hskmm.com/?act=detail&tid=35802

相关文章:

  • 程序内存模型
  • 如何从0到1制作一个免费的二维可视化项大屏
  • 2025 年集成电路封装厂家最新推荐榜:甄选技术领先实力厂家,涵盖制造检测测试领域权威名录
  • 电商app测试常见问题
  • 实用指南:logbuffer 概念及题目
  • 2025年磨粉机厂家权威推荐榜:雷蒙磨粉机/环辊磨粉机/摆式磨粉机/矿石磨粉机/超细磨粉机/高压磨粉机,专业实力与高效生产之选
  • 2025年深度解析推荐:SENO尼古丁口含膜合规版图与全球准入风险全景
  • C# Web开发教程(七)切面编程
  • 2025陶瓷过滤机实力厂家推荐,铜陵杰达机械专注固液分离设备制造
  • 我的第一份开源贡献:小米工程师程赛的社区之旅
  • 2025信息流代运营公司推荐:线尚网络专注效果营销与品牌增长
  • 2025冷链解冻设备厂家推荐广东科恩,专业定制高湿静电解冻方案
  • 基础
  • yorg 到此一游
  • Vue技术之Vxe-Table的虚拟滚动
  • 实用指南:一次借助ChatGPT抵御恶意攻击的经历,为个人服务器添加自动防御系统Fail2ban
  • EasyCVR视频汇聚平台GB28181级联异常排查:上级订阅信息无响应的根源解析
  • SecureCRT 批量创建会话-cnblog
  • 2025干燥设备厂家权威推荐:常州亿干专业定制实验室喷雾与真空耙式干燥机
  • 草稿
  • 2025机电安装厂家推荐:太仓华芃专注工业设备安装,实力厂家可靠之选
  • Docker补充
  • 【QNX】Socket ServerClient 源代码
  • arp 断网小实验
  • 2025 年箱变压器厂家最新推荐榜单:涵盖非晶合金铁心、三相、矿用等多类型设备,助力采购方精准筛选优质合作企业
  • 从“人防”到“智防”:EasyCVR+煤矿AI智能分析一体机重塑矿山安全监管模式
  • 从Java工程师到AI工程师,我花了6个月的转型经验分享
  • 2025 年最新推荐配电柜源头厂家口碑排行榜:聚焦高压智能防爆等多类型产品,精选实力品牌助企业采购高压/智能/抽屉式/照明/防爆配电柜厂家推荐
  • 2025南京鑫铭机械厂家推荐:精密钣金加工与天文台圆顶定制专家
  • 2025年氢氧化镁厂家推荐排行榜,矿石氢氧化镁,水镁石氢氧化镁,阻燃剂氢氧化镁,改性氢氧化镁源头企业实力解析