Redis哨兵Sentinel高可用部署

Redis哨兵Sentinel高可用部署的核心目标是:当主节点宕机时,哨兵能自动将一个从节点提升为新主节点,并让其他从节点同步新主,应用端无需人工干预即可恢复缓存读写。
下面从环境准备到故障验证,一步步带你完成整套配置。

部署前的环境与软件准备

开始之前,你需要至少三台Linux服务器(或虚拟机),推荐配置为1核2G以上,操作系统以CentOS 7或Ubuntu 20.04为例。
三台机器分别规划为:

  • 192.168.1.101:Redis主节点 + 哨兵1
  • 192.168.1.102:Redis从节点 + 哨兵2
  • 192.168.1.103:Redis从节点 + 哨兵3

哨兵本身也需要奇数个节点来选举,所以三台机器各启动一个哨兵进程,既节省资源又满足多数派要求。

安装Redis建议使用官方稳定版本,例如Redis 6.2或7.0。
在每台机器上执行:

# Ubuntu/Debian
sudo apt update
sudo apt install redis-server -y

# CentOS/RHEL
sudo yum install epel-release -y
sudo yum install redis -y

安装完成后,先不要急着启动默认服务,因为我们需要自定义配置文件。

配置Redis主从复制

先配置主节点(192.168.1.101)。
编辑/etc/redis/redis.conf,确保以下关键项:

bind 0.0.0.0
protected-mode no
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile /var/log/redis/redis_6379.log
dir /var/lib/redis

保存后启动主节点:

redis-server /etc/redis/redis.conf

接着配置两个从节点(192.168.1.102和192.168.1.103)。
同样编辑/etc/redis/redis.conf,除了上述基础配置外,增加一行:

replicaof 192.168.1.101 6379

注意:Redis 5.0之前使用slaveof,5.0及以上推荐用replicaof。
启动两个从节点:

redis-server /etc/redis/redis.conf

验证主从状态:在主节点执行redis-cli info replication,应看到role:master和两个slave的state=online。
在从节点执行redis-cli info replication,应看到role:slave和master_link_status:up。

部署哨兵Sentinel集群

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

port 26379
daemonize yes
logfile "/var/log/redis/sentinel.log"
dir /tmp
sentinel monitor mymaster 192.168.1.101 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

关键参数解释:

  • sentinel monitor mymaster ... 2:监控名为mymaster的主节点,最后一个数字2表示至少需要2个哨兵同意才能判定主节点客观下线。
  • down-after-milliseconds 5000:5秒内主节点无响应则标记为主观下线。
  • failover-timeout 60000:故障转移超时时间60秒。
  • parallel-syncs 1:故障转移后,每次只允许一个从节点同步新主,避免所有从节点同时同步造成阻塞。

注意:三台机器的sentinel.conf中sentinel monitor行必须完全一致,但port和logfile可以相同。
启动哨兵:

redis-sentinel /etc/redis/sentinel.conf

启动后,
用redis-cli -p 26379 info sentinel检查,
应看到master0:
name=mymaster,status=ok,address=192.168.1.101:
6379,slaves=2,sentinels=3
。

模拟故障与自动切换验证

现在验证哨兵是否能自动切换。
登录主节点101,直接杀掉Redis进程:

redis-cli -p 6379 shutdown nosave

等待约10-15秒,
观察哨兵日志/var/log/redis/sentinel.log,
会看到类似+switch-master mymaster 192.168.1.101 6379 192.168.1.102 6379的记录,
表示主节点已切换到102。

然后在任意节点执行:

redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

应返回新的主节点IP和端口。
同时,在102上执行redis-cli info replication,应看到role:master。
在103上执行redis-cli info replication,应看到master_host:192.168.1.102。

重点结论:哨兵切换成功后,应用端如果使用哨兵地址连接,会自动获取新主节点,无需重启应用。
但需确保客户端支持哨兵模式。

常见避坑与配置建议

  • 哨兵节点数量必须为奇数:至少3个,否则无法形成多数派选举。
  • 防火墙与安全组:确保所有节点之间6379和26379端口互通,否则哨兵无法通信。
  • 配置文件权限:哨兵启动后可能会重写配置文件,建议将sentinel.conf放在可写目录,并确保Redis进程有权限。
  • 不要混用不同版本的Redis和哨兵:尽量保持版本一致,避免协议兼容问题。
  • 生产环境建议:为Redis设置密码,并在哨兵配置中增加sentinel auth-pass mymaster yourpassword。

切换后应用如何连接

应用端不应直接连接固定的主节点IP,而应连接哨兵集群地址。
以Java Jedis为例:

Set sentinels = new HashSet<>();
sentinels.add("192.168.1.101:26379");
sentinels.add("192.168.1.102:26379");
sentinels.add("192.168.1.103:26379");
JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels);

这样当主节点切换后,客户端会自动从哨兵获取最新主节点地址。

验证清单与日常维护

部署完成后,建议按以下清单逐项检查:

  • 三台机器redis-cli info replication角色正确;
  • 三台哨兵info sentinel均显示status=ok;
  • 手动杀掉主节点后,20秒内完成切换;
  • 应用端读写正常,无报错;
  • 原主节点恢复后,自动变为从节点并同步新主。

日常维护中,定期查看哨兵日志和Redis慢查询日志,确保没有异常切换。
如果发现频繁切换,检查网络延迟或主节点负载。

常见疑问

哨兵和集群模式有什么区别?
哨兵主要解决主从架构的高可用,数据全量存储在每个节点;Redis Cluster则解决分片和水平扩展,数据分散在多个主节点。如果数据量不大,哨兵足够;数据量大且需要分片,选Cluster。

最少需要几个哨兵?
官方建议至少3个哨兵,且为奇数。2个哨兵无法形成多数派,1个哨兵存在单点故障。

主节点恢复后会自动加入吗?
会。哨兵会将其配置为从节点,并同步新主的数据。但需注意,如果原主节点有未同步的数据,可能会丢失。

哨兵切换期间应用会报错吗?
切换瞬间可能出现短暂连接失败,通常几秒内恢复。建议应用端增加重试机制。

按照以上步骤,你已成功部署Redis哨兵高可用环境,并验证了缓存故障自动切换。
如果遇到切换失败,优先检查哨兵日志和网络连通性。

分享到:
上一篇
MCMS对接支付接口,企业官网实现在线付款
下一篇
Docker容器资源限制,限制CPU内存防止抢占资源
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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意