Redis 哨兵模式配置教程
目录
1. 什么是 Redis 哨兵模式?
2. 环境准备
3. 配置主从节点
4. 配置哨兵
4.1 哨兵配置文件
4.2 启动哨兵
4.3 验证哨兵运行状态
5. 哨兵自动故障转移
5.1 测试自动故障转移
6. 高可用集群架构
7. 总结
1. 什么是 Redis 哨兵模式?
哨兵模式的功能主要有以下几方面:
- 监控:不断检查主节点和从节点是否正常工作。
- 自动故障转移:当主节点发生故障时,会自动将从节点提升为新的主节点,并通知其他从节点重新同步新的主节点。
- 通知:哨兵会通知客户端,告知新的主节点地址。
- 配置提供者:哨兵可以作为客户端与 Redis 的中介,提供主节点信息。
2. 环境准备
我们假设以下集群架构:
- 主节点:
192.168.1.100:6379
- 从节点1:
192.168.1.101:6379
- 从节点2:
192.168.1.102:6379
- 哨兵节点:同样运行在以上三台服务器上
3. 配置主从节点
确保主从节点已经正确配置,并且主从复制已经生效。具体配置方法可以参考之前的 Redis 主从复制教程。
- 主节点 IP:
192.168.1.100
- 从节点1 IP:
192.168.1.101
- 从节点2 IP:
192.168.1.102
4. 配置哨兵
4.1 哨兵配置文件
哨兵的配置文件通常命名为 sentinel.conf
。我们需要在每台哨兵服务器上创建这个配置文件。以下是一个基本的哨兵配置文件模板:
# 指定监控的主节点及其端口,后面的2表示至少需要2个哨兵节点同意,才会判定主节点宕机
sentinel monitor mymaster 192.168.1.100 6379 2
# 主节点失败时允许多少个从节点自动提升为主节点
sentinel down-after-milliseconds mymaster 5000
# 故障转移超时时间
sentinel failover-timeout mymaster 15000
# 哨兵允许自动重启并重新连接失效的 Redis 主节点
sentinel parallel-syncs mymaster 1
将以上配置文件保存为 /usr/local/bin/sentinel.conf
。
4.2 启动哨兵
使用 Redis 自带的哨兵启动命令,启动每个节点的哨兵:
redis-sentinel /usr/local/bin/sentinel.conf
也可以使用 Redis server 命令加上 --sentinel
参数:
redis-server /usr/local/bin/sentinel.conf --sentinel
4.3 验证哨兵运行状态
在启动哨兵后,可以使用以下命令连接到哨兵并检查状态:
redis-cli -p 26379
然后运行以下命令查看监控状态:
SENTINEL masters
此命令将显示哨兵监控的所有主节点及其状态信息。
5. 哨兵自动故障转移
当主节点发生故障时,哨兵将执行以下操作:
- 哨兵将会监控到主节点不可达,确认主节点失效。
- 在满足配置的条件下(如2个哨兵节点一致认为主节点失效),哨兵会选择一个从节点作为新的主节点。
- 哨兵通知其他从节点同步新的主节点数据。
- 哨兵更新主节点的信息,并通知客户端新的主节点地址。
5.1 测试自动故障转移
为了测试哨兵的故障转移功能,可以手动停止主节点 Redis 服务:
redis-cli -h 192.168.1.100 -p 6379 shutdown
在哨兵日志中,你可以观察到哨兵探测到主节点的故障,并选举新的主节点(通常从现有的从节点中选举)。
客户端再次连接时,哨兵会将新的主节点地址提供给客户端。
6. 高可用集群架构
为了达到 Redis 的高可用性,通常会部署至少三个哨兵节点,分布在不同的机器上以防止单点故障。如下是一个典型的集群架构:
- 3个 Redis 实例:1个主节点,2个从节点。
- 3个哨兵节点,分别部署在主节点和从节点的服务器上。
通过这样的架构,即使主节点故障,也能通过哨兵实现快速故障转移,保证服务持续可用。
7. 总结
Redis 哨兵模式通过提供自动监控和故障转移机制,实现了 Redis 集群的高可用性。通过部署多个哨兵节点和主从复制,系统能够有效应对主节点的故障并自动恢复,减少人工干预。