Redis哨兵Sentinel部署

Redis Sentinel(哨兵)是Redis官方提供的高可用方案,它通过监控主从节点并在主节点故障时自动进行故障转移,确保缓存服务持续可用。
如果你正在为单点Redis宕机导致业务中断而烦恼,本文将带你从零完成一套三节点哨兵集群的部署,并验证自动切换效果。

部署前需要准备什么

哨兵集群至少需要三个节点才能构成多数投票机制,推荐使用三台独立服务器或虚拟机。
本文以 一主两从 + 三个哨兵 的经典架构为例,所有节点均运行在Linux环境下(如CentOS 7或Ubuntu 20.04)。

环境规划示例:

  • 主节点:192.168.1.10,Redis端口 6379
  • 从节点1:192.168.1.11,Redis端口 6379
  • 从节点2:192.168.1.12,Redis端口 6379
  • 哨兵端口:三台机器均使用 26379

前提条件:

  • 三台机器已安装Redis(版本建议5.0及以上,本文以Redis 6.2为例)。
  • 确保三台机器时间同步,并且防火墙放行Redis端口和哨兵端口。
  • 关闭SELinux或配置相应策略(临时关闭:setenforce 0)。

安装Redis可以使用包管理器或源码编译。
以CentOS为例:

yum install -y redis

安装后先不要启动,我们统一配置主从关系。

配置Redis主从复制

哨兵依赖主从复制,所以先让两个从节点复制主节点数据。

1. 修改主节点配置
编辑 /etc/redis.conf,确保以下项:

bind 0.0.0.0
protected-mode no
port 6379
daemonize yes

启动主节点:systemctl start redis

2. 修改从节点配置
在两个从节点上编辑 /etc/redis.conf,增加:

replicaof 192.168.1.10 6379
masterauth <主节点密码>  # 如果主节点设置了密码
requirepass <从节点密码> # 建议与主节点一致

启动从节点:systemctl start redis

3. 验证主从状态
在主节点执行:

redis-cli info replication

看到 role:master 且 connected_slaves:2,从节点显示 role:slave 且 master_link_status:up 即表示主从同步正常。

编写哨兵配置文件

哨兵需要单独的配置文件,通常命名为 sentinel.conf。
在三台机器上分别创建 /etc/sentinel.conf,内容如下:

port 26379
daemonize yes
logfile "/var/log/sentinel.log"
sentinel monitor mymaster 192.168.1.10 6379 2
sentinel auth-pass mymaster <主节点密码>
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

关键参数解释:

  • sentinel monitor mymaster ... 2:表示哨兵集群认为主节点客观下线至少需要2个哨兵同意。
  • down-after-milliseconds 5000:5秒内主节点无响应则标记为主观下线。
  • failover-timeout 60000:故障转移超时时间60秒。
  • parallel-syncs 1:故障转移后,同时向新主节点发起同步的从节点数量。

三台机器的配置完全一致,只需修改 sentinel monitor 中的主节点IP。

启动哨兵并验证集群

分别在三台机器上启动哨兵:

redis-sentinel /etc/sentinel.conf

或者使用 redis-server /etc/sentinel.conf --sentinel。

启动后检查日志 /var/log/sentinel.log,应看到类似输出:

+monitor master mymaster 192.168.1.10 6379 quorum 2
+slave slave 192.168.1.11:6379 ...
+slave slave 192.168.1.12:6379 ...

验证哨兵状态:
连接任意哨兵端口:

redis-cli -p 26379
sentinel master mymaster

输出中应包含 num-other-sentinels 为2,flags 为 master。

模拟故障与自动切换测试

这是检验哨兵是否生效的关键步骤。

1. 手动下线主节点
在主节点执行:

redis-cli -p 6379 shutdown

或者直接 kill 掉Redis进程。

2. 观察哨兵日志
稍等几秒,哨兵日志会显示:

+sdown master mymaster 192.168.1.10 6379
+odown master mymaster 192.168.1.10 6379 #quorum 2/2
+try-failover master mymaster 192.168.1.10 6379
+failover-end master mymaster 192.168.1.10 6379
+switch-master mymaster 192.168.1.10 6379 192.168.1.11 6379

这表示哨兵已将主节点切换到 192.168.1.11。

3. 验证新主节点
连接 192.168.1.11 的Redis:

redis-cli -h 192.168.1.11 -p 6379 info replication

显示 role:master,且原主节点恢复后会自动成为新主节点的从节点。

避坑指南与常见问题

哨兵无法发现从节点?
检查主从复制是否正常,以及哨兵配置中的 auth-pass 是否正确。如果主节点有密码,所有哨兵和从节点都必须配置相同的密码。

故障切换后客户端连不上?
客户端需要使用支持哨兵的连接库(如Jedis、Lettuce),并配置哨兵地址列表。不要直接连接旧的主节点IP。

脑裂风险如何避免?
确保 quorum 值设置为多数哨兵节点数(例如3个哨兵则设为2)。同时,在生产环境中建议至少部署3个哨兵节点,且分布在不同物理机或可用区。

版本兼容性提示:
Redis 5.0之前哨兵命令为 sentinel 子命令,5.0之后配置方式基本一致,但建议使用较新稳定版。具体行为请以官方文档为准。

效果验证与日常维护

部署完成后,你可以通过以下命令快速检查集群健康状态:

redis-cli -p 26379 sentinel sentinels mymaster

这会列出所有哨兵节点及其状态。

日常维护建议:

  • 定期查看哨兵日志,关注 +sdown、+odown、+failover 事件。
  • 监控哨兵进程存活,可使用 systemctl 或 supervisor 托管。
  • 在业务低峰期进行故障演练,确保客户端能正确切换。

总结: Redis哨兵Sentinel部署并不复杂,核心在于正确配置主从复制和哨兵监控参数。
通过三节点集群,你的缓存层可以抵御单点故障,实现自动故障转移。
按照本文步骤操作后,建议再结合业务代码测试客户端重连逻辑,才算真正完成缓存高可用方案落地。

分享到:
上一篇
MySQL慢查询日志分析工具,可视化分析SQL
下一篇
Redis大key排查清理,避免缓存卡顿
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意