暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

1主3从3哨兵的Redis高可用配置(详细版)

原创 毛何远 2025-07-28
146


1主3从3哨兵的Redis高可用配置(详细版)
一、拓扑结构

主节点(Master):1个,负责写操作,IP假设为192.168.1.100,端口6379。
从节点(Slave):3个,复制主节点数据,IP分别为192.168.1.101(端口6380)、192.168.1.102(端口6381)、192.168.1.103(端口6382)。
哨兵节点(Sentinel):3个,监控主从节点状态,IP与从节点共用(或独立部署),端口26379、26380、26381。

二、配置文件(基于Linux环境)
1. 主节点配置(redis-master.conf)
iniini复制ini复制# 基础配置
port 6379
daemonize yes
logfile "/var/log/redis/redis-master.log"
dbfilename "dump-master.rdb"
dir "/var/lib/redis/master"
protected-mode no # 允许远程访问(生产环境需谨慎)
requirepass "yourpassword" # 主节点密码(从节点需配置相同)
appendonly yes
appendfilename "appendonly-master.aof"
2. 从节点配置(redis-slaveX.conf,X=1,2,3)
以redis-slave1.conf为例:
iniini复制ini复制# 基础配置
port 6380
daemonize yes
logfile "/var/log/redis/redis-slave1.log"
dbfilename "dump-slave1.rdb"
dir "/var/lib/redis/slave1"
protected-mode no
requirepass "yourpassword" # 必须与主节点密码一致

# 主从复制配置
slaveof 192.168.1.100 6379 # 指向主节点IP和端口
masterauth "yourpassword" # 主节点密码
replica-read-only yes # 从节点只读(可选)
注:redis-slave2.conf和redis-slave3.conf仅需修改port和dir路径,其余配置与slave1一致。
3. 哨兵节点配置(sentinelX.conf,X=1,2,3)
以sentinel1.conf为例:
iniini复制ini复制# 哨兵基础配置
port 26379
daemonize yes
logfile "/var/log/redis/sentinel1.log"
pidfile "/var/run/redis-sentinel1.pid"

# 核心监控配置
sentinel monitor mymaster 192.168.1.100 6379 2 # 监控主节点,2表示至少2个哨兵同意才触发故障转移
sentinel down-after-milliseconds mymaster 5000 # 主节点5秒无响应判定为故障
sentinel failover-timeout mymaster 10000 # 故障转移超时时间(毫秒)
sentinel parallel-syncs mymaster 1 # 故障转移时,同时同步数据的从节点数(建议1-2,避免主节点压力过大)

# 高级配置(可选)
sentinel auth-pass mymaster "yourpassword" # 若主节点有密码,需配置此参数
sentinel notification-script mymaster "/path/to/failover.sh" # 故障转移时执行的脚本(如通知管理员)
注:sentinel2.conf和sentinel3.conf需修改port,其余配置与sentinel1一致。
三、启动命令


启动主从节点(在对应服务器上执行):
bashbash复制bash复制# 主节点
redis-server /path/to/redis-master.conf

# 从节点(分别在不同服务器执行)
redis-server /path/to/redis-slave1.conf
redis-server /path/to/redis-slave2.conf
redis-server /path/to/redis-slave3.conf


启动哨兵节点(在对应服务器上执行):
bashbash复制bash复制# 哨兵1
redis-sentinel /path/to/sentinel1.conf

# 哨兵2
redis-sentinel /path/to/sentinel2.conf

# 哨兵3
redis-sentinel /path/to/sentinel3.conf


四、验证配置


查看主从状态:
在主节点或从节点执行:
bashbash复制bash复制redis-cli -h 192.168.1.100 -p 6379 -a "yourpassword" info replication
输出应显示role:master,且connected_slaves:3(表示有3个从节点)。


查看哨兵状态:
在任意哨兵节点执行:
bashbash复制bash复制redis-cli -p 26379 -a "yourpassword" info sentinel
输出应包含主节点信息、从节点列表,以及哨兵的quorum(法定人数,应为2,因为3个哨兵中至少2个同意才触发故障转移)。


五、关键注意事项

密码配置:若主节点设置了密码(requirepass),从节点和哨兵必须通过masterauth配置相同密码,否则无法同步数据。
端口冲突:确保主从节点的端口(6379-6382)和哨兵端口(26379-26381)未被其他服务占用。
持久化:建议同时启用RDB和AOF,避免数据丢失(参考之前的备份配置)。
网络隔离:生产环境中,主从节点和哨兵建议部署在不同服务器,避免单点故障。

六、故障转移测试

手动停止主节点(redis-cli -h 192.168.1.100 -p 6379 shutdown)。
观察哨兵日志,确认故障检测和转移过程(约10秒内完成)。
再次查看主从状态,验证新主节点是否已切换(原从节点中优先级最高者会成为新主节点)。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论