|
|
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
- 定义要监控的主节点
- 参数表示需要多少个Sentinel同意才能判定主节点下线
- sentinel down-after-milliseconds
- 指定Sentinel认为节点不可达的毫秒数
- sentinel parallel-syncs
- 故障转移时,新主节点能同时接收多少个从节点的同步请求
- sentinel failover-timeout
- 故障转移超时时间
四、验证配置
- 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集群的高可用性,确保在主节点故障时能够快速自动切换,保障服务的连续性。 |
|