游乐游手机版
首页/数据库/文章详情

Redis主从配置与哨兵故障转移高可用完整方案

时间:2026-07-23 20:08
基于三台物理机搭建Redis主从集群,Master配置需开启保护模式关闭并设置主从密码一致,Slave配置指定主节点和只读模式。Sentinel实现监控与自动故障转移,Master宕机后自动选举新主并降级原主为从。需注意密码一致性与网络连通性。

1. 结构图

先来看整体结构设计,三台物理机组成主从集群,图示如下:

Redis主从配置(Sentinel和Failover)

其中 192.168.0.101 作为 Master,其余两台作为 Slave。这个经典的 Redis 主从架构既能有效分担读压力,又能通过 Sentinel 哨兵机制实现高可用故障转移。

2. Master 的 redis.conf 配置

Master 的配置直接贴出来,关键参数已经加了注释,但有几个地方值得单独拎出来强调一下:

# 开启守护模式  
daemonize yes  
# 设置密码
requirepass redis
# 指定数据存储目录  
dir ./
# 每秒一次aof写  
appendfsync everysec  
# 打开aof持久化  
appendonly yes
# 设置Master的密码(如果Master有密码的话)
masterauth redis
# 3.2之后新加特性,在没有配置密码和bind时启用保护机制
protected-mode no
# 注释掉bind
#bind 127.0.0.1

注意这里的 protected-mode no 是必须的,否则从机无法连接。另外 masterauth 必须与 requirepass 保持一致,否则后续主从切换时会引发认证失败。

3. Slave 的 redis.conf 配置

从机配置基本是 Master 的镜像,但多了两个关键项:

# 开启守护模式  
daemonize yes
# 设置密码
requirepass redis
# 指定数据存储目录  
dir ./
# 每秒一次aof写  
appendfsync everysec  
# 打开aof持久化  
appendonly yes
# 指定所属的主机  
slaveof 192.168.0.101 6379
# 设置Master的密码(如果Master有密码的话)
masterauth redis
# 指定从机"只读"  
slave-read-only yes
# 3.2之后新加特性,在没有配置密码和bind时启用保护机制
protected-mode no
# 注释掉bind
#bind 127.0.0.1

slaveof 指定了主节点 IP 和端口,slave-read-only yes 确保从机不会意外写入数据。这两项配合起来,才是一个标准且安全的 Redis 主从复制配置。

4. 启动 Redis

配置完成后,分别启动三台 Redis 实例。启动后可以在 Master 上写入数据,然后到任意一台 Slave 上验证,数据应该已经自动同步过来。如果同步失败,大概率是 protected-modemasterauth 设置不正确,按日志排查即可。

5. Sentinel.conf 配置

Sentinel 是负责监控和自动故障转移的核心组件,它的配置需要特别注意 quorum 和超时时间的设置:

# sentinel通讯端口  
port 26379  
# 3.2之后新加特性,在没有配置密码和bind时启用保护机制
protected-mode no
# sentinel需要监控的master/slave信息,格式为sentinel monitor      
# 其中应该小于集群中slave的个数,当失效的节点数超过了,则认为整个体系结构失效  
sentinel monitor myMaster 192.168.0.101 6379 1  
# sentinel auth-pass  
sentinel auth-pass myMaster redis
# master被当前sentinel实例认定为失效的间隔时间,格式为sentinel down-after-milliseconds    
sentinel down-after-milliseconds myMaster 10000  
# 当新master产生时,同时进行“slaveof”到新master并进行同步复制的slave个数  
# 在slave执行slaveof同步时,将会终止客户端请求。  
# 此值较大,意味着“集群”终止客户端请求的时间总和较大。  
# 此值较小,意味着“集群”在故障转移期间,多个slave向客户端提供服务时仍然使用旧数据。  
sentinel parallel-syncs myMaster 1  
# failover过期时间。当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel将会认为此次failover失败。  
sentinel failover-timeout redisMaster 60000 

这里 quorum 设置为 1,意味着只要有一个 Sentinel 认为 Master 挂了,就触发故障转移(前提是集群中总共部署了 3 个 Sentinel)。实际生产环境建议设为 2,以降低误判风险。

6. 启动 Sentinel

在三台机器上分别启动 Sentinel,启动后控制台会输出同步和监控信息。如果一切正常,能看到 Sentinel 相互发现,并确认 Master 状态。至此,Redis 高可用集群即搭建完成。

7. 注意事项

  1. protected-mode 必须设为 no:默认是 yes,会导致无法连接 Master。这个坑在 3.2 以上版本尤其常见,新手很容易忽略,务必检查。
  2. Slave 宕机时的通知:如果某台 Slave 挂了,Sentinel 会通知其他节点,但不会自动处理,只会持续尝试重连。因此运维人员需要关注监控告警,及时处理异常。
  3. Master 宕机后的自动切换:如果 Master 挂了,Sentinel 会在剩余的 Slave 中投票选举出一台新的 Master,并自动修改各节点的 redis.confsentinel.conf 文件。最有趣的是,原先的 Master 如果重新启动,会被自动降级为 Slave,整个过程完全自动,无需人工干预,真正实现了 Redis 故障转移的自动化运维。

整体来说,这套配置足以应付大多数中小规模场景。如果还遇到问题,多半是网络、防火墙或者密码不一致导致的,按日志排查即可。

来源:https://www.jb51.net/database/367920r4j.htm
上一篇PostgreSQL时区修改为中国时区的详细设置指南 下一篇Redis String类型计数命令与其他操作详解
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
自增主键值从何而来?深入理解原理,告别只会auto_increment
数据库 · 2026-07-25

自增主键值从何而来?深入理解原理,告别只会auto_increment

KingbaseES推荐使用serial、bigserial、显式sequence或identity列实现自增主键。serial创建integer并关联序列,bigserial对应bigint;显式sequence可自定义起始值等参数;identity有generatedbydefault(允许指定值)与always(禁止)两种模式。

Linux下瀚高数据库授权文件过期及替换解决方案
数据库 · 2026-07-25

Linux下瀚高数据库授权文件过期及替换解决方案

在银河麒麟系统下,瀚高数据库hgdb-4 5试用授权20天到期后需替换正式授权文件。正确操作:停止服务,备份旧文件,将授权文件复制到 opt highgo hgdb-4 5 etc lic 并命名为hgdb lic,设置权限600和属主highgo:highgo,再启动服务。禁止直接修改data目录下的license info文件。

Oracle BLOB实时同步的5大技术挑战与难点解析
数据库 · 2026-07-25

Oracle BLOB实时同步的5大技术挑战与难点解析

OracleBLOB实时同步面临分片组装、多列隔离、长事务跨窗口、事务回滚及大对象资源控制等技术挑战,必须在日志中精确还原完整字段值,才能保证源端与目标端数据完全一致,这对同步系统的稳健性提出了高要求。

MySQL禁用redo日志导致全备失败
数据库 · 2026-07-25

MySQL禁用redo日志导致全备失败

MySQL全量备份失败是由于数据定义语言操作触发排序索引构建,禁用重做日志导致XtraBackup无法获取一致性备份。测试验证表明,优化表语句即使无数据也会触发该问题。根本原因在于排序索引构建过程跳过了重做日志记录,破坏了备份的一致性。

Kafka架构图优化与改进的全面详细步骤与实践指南
数据库 · 2026-07-25

Kafka架构图优化与改进的全面详细步骤与实践指南

Kafka作为实时数据流处理的核心中间件,其底层架构虽已相当成熟,但在实际生产环境中,要充分发挥其性能潜力,仍需落实到具体的调优与架构改造上。核心目标可归纳为三点:如何承载更高的吞吐量、如何保障数据不丢失、以及故障发生时如何快速恢复。本文将从这几个关键方向出发,深入探讨如何真正榨干Kafka集群的性