Redis哨兵模式搭建与高可用配置
Redis哨兵模式搭建与高可用配置Redis哨兵(Sentinel)模式是Redis官方提供的高可用解决方案,通过监控主节点和自动故障转移实现高可用性。
一、哨兵模式核心组件
[*]Redis主从节点:提供数据存储和复制
[*]Sentinel节点:监控Redis节点,执行故障检测和自动故障转移
二、搭建步骤
1. 准备Redis主从架构
# 主节点配置 (redis-master.conf)
port 6379
bind 0.0.0.0
requirepass yourpassword
# 从节点1配置 (redis-slave1.conf)
port 6380
bind 0.0.0.0
replicaof 127.0.0.1 6379# 或 slaveof
masterauth yourpassword
requirepass yourpassword
# 从节点2配置类似...
2. 配置Sentinel节点
创建sentinel配置文件(sentinel.conf):
# 监控主节点
# sentinel monitor <master-name> <ip> <port> <quorum>
sentinel monitor mymaster 127.0.0.1 6379 2
# 认证配置
sentinel auth-pass mymaster yourpassword
# 其他配置
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
3. 启动Redis节点和Sentinel
# 启动主节点
redis-server /path/to/redis-master.conf
# 启动从节点
redis-server /path/to/redis-slave1.conf
# 启动Sentinel节点(建议至少3个Sentinel节点)
redis-sentinel /path/to/sentinel.conf
# 或
redis-server /path/to/sentinel.conf --sentinel
三、关键配置说明
[*]sentinel monitor
[*]定义要监控的主节点
[*]quorum参数表示需要多少个Sentinel同意才能判定主节点下线
[*]sentinel down-after-milliseconds
[*]指定Sentinel认为节点不可达的毫秒数
[*]sentinel parallel-syncs
[*]故障转移时,新主节点能同时接收多少个从节点的同步请求
[*]sentinel failover-timeout
[*]故障转移超时时间
四、验证配置
[*]查看Sentinel监控状态
redis-cli -p 26379(sentinel端口) info sentinel
[*]查看主从状态
redis-cli -h 主节点IP -p 6379 info replication
[*]模拟故障转移测试
[*]停止主节点服务
[*]观察Sentinel是否自动选举新的主节点
[*]检查应用是否自动切换到新主节点
五、客户端配置
客户端需要配置Sentinel地址而不是直接连接Redis主节点:
// Java示例(Jedis)
Set<String> sentinels = new HashSet<>();
sentinels.add("sentinel1:26379");
sentinels.add("sentinel2:26379");
sentinels.add("sentinel3:26379");
JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels,
new JedisPoolConfig(), "yourpassword");
六、最佳实践
[*]部署建议
[*]至少3个Sentinel节点,分布在不同物理机/虚拟机上
[*]Sentinel节点应与Redis数据节点分开部署
[*]监控
[*]监控Sentinel节点状态
[*]监控故障转移事件
[*]安全
[*]使用密码认证
[*]限制访问IP
[*]考虑使用SSL/TLS加密通信
[*]维护
[*]定期检查Sentinel日志
[*]测试故障转移流程
[*]文档记录所有Sentinel节点信息
七、常见问题排查
[*]Sentinel无法发现主节点
[*]检查网络连通性
[*]验证认证配置
[*]检查防火墙设置
[*]故障转移未触发
[*]检查quorum值是否合理
[*]验证down-after-milliseconds设置
[*]检查Sentinel节点间通信
通过合理配置Redis哨兵模式,可以实现Redis集群的高可用性,确保在主节点故障时能够快速自动切换,保障服务的连续性。
页:
[1]