Redis 哨兵(Sentinel)模式用于提供高可用性解决方案,可以自动监控 Redis 主从复制结构,进行故障检测和自动故障转移,从而确保系统的高可用性。
哨兵的主要功能
- 监控(Monitoring):哨兵不断检查主服务器和从服务器是否正常工作。
- 通知(Notification):当发现某个 Redis 服务器出现问题时,哨兵可以通过 API 通知系统管理员或其他应用程序。
- 自动故障转移(Automatic failover):当主服务器不可用时,哨兵会自动将一个从服务器提升为新的主服务器,并将其他从服务器重新配置为复制新的主服务器。
- 配置提供者(Configuration provider):客户端可以连接到哨兵来获得当前的主服务器地址,而不是直接连接到 Redis 服务器。
哨兵配置(这里默认 已经 配置好主从复制)
主服务器配置
- 主服务器的配置通常保持默认设置,无需特别的哨兵配置。
从服务器配置
- 从服务器的配置文件应包括指向主服务器的配置。
哨兵配置
- 哨兵服务器的配置文件
sentinel.conf
需要配置监控的主服务器和其他参数。
# 哨兵运行的端口
port 26379
# 哨兵监控的主服务器
sentinel monitor mymaster 192.168.1.100 6379 2
# 主服务器不可用时,多少个哨兵认为主服务器失效,才会进行故障转移
sentinel down-after-milliseconds mymaster 5000
# 故障转移最大尝试时间
sentinel failover-timeout mymaster 180000
# 提升为主服务器的从服务器需要达到的优先级
sentinel parallel-syncs mymaster 1
# 主服务器的密码,如果有设置的话
# sentinel auth-pass mymaster mypassword
启动哨兵
在多个服务器上启动哨兵实例,确保高可用性。
假设有三台服务器 192.168.1.101
,192.168.1.102
和 192.168.1.103
,分别启动哨兵:
redis-sentinel /path/to/sentinel.conf
监控和故障转移
哨兵监控
哨兵通过 PING 命令监控主服务器和从服务器。如果主服务器在指定时间内没有响应,哨兵会认为主服务器不可用,并开始故障转移。
故障转移过程
- 发现故障:哨兵检测到主服务器故障后,会与其他哨兵进行协商(通过 Quorum 机制),确认主服务器确实不可用。
- 选举领导哨兵:多个哨兵之间会选举出一个领导哨兵来负责故障转移。
- 选择新的主服务器:领导哨兵会从现有的从服务器中选择一个提升为新的主服务器。
- 重新配置从服务器:其他从服务器会重新配置为复制新的主服务器。
- 通知客户端:哨兵将新的主服务器地址通知给客户端,以便客户端重新连接。
注意:如果前一个主机恢复了,也只能做新主机的从机