本文仅供学习交流使用,侵权必删。
不作商业用途,转载请注明出处。
Redis的HA依赖于Redis的Replication功能和Redis Sentinel。Replication回顾之前的学习笔记,这里主要讲一下Redis Sentinel。
Sentinel在HA场景中的作用:
- 监控(Monitoring):Sentinel服务器会主动监控Master服务器的健康状态。
- 自动故障转移(Automatic failover):如果Master宕机,Sentinel会自动将一台Slave提升为新的Master以及会修改其他Slave的配置文件让其跟随新的Master,此外还会修改自身的配置文件中监控Master的IP地址。Client尝试连接失效服务器,Sentinel也会返回一个新的Master地址给Client。
- 提醒(Notification):当被监控的Redis服务器出现问题,Sentinel可以通过api通知运维人员或者其他监控系统。
使用Sentinel时的建议
- 要使一个集群是健壮的、高可用的。至少需要三个Sentinel实例,最好部署奇数台Sentinel服务器。
- Sentinel服务器应该以独立方式部署。例如在不同的Region上执行的不同物理服务器或虚拟机。
Sentinel配置
//sentinel monitor <master-group-name> <ip> <port> <quorum>
//<quorum>是sentinel集群中多少票可以确认master失去连接,只要同意 Sentinel 数量不达标,Automatic failover就不会执行
sentinel monitor mymaster 127.0.0.1 6379 2
//选项指定了 Sentinel 认为服务器已经断线所需的毫秒数
sentinel down-after-milliseconds mymaster 60000
//failover过期时间。当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel将会认为此次failoer失败。
sentinel failover-timeout mymaster 180000
//选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长
sentinel parallel-syncs mymaster 1
sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5
启动Sentinel方式
- 使用redis-sentinel方式:redis-sentinel /path/to/sentinel.conf
- 使用redis-server方式:redis-server /path/to/sentinel.conf --sentinel
SDOWN和ODOWN
Sentinel对于下线有两个概念:
- SDOWN:Subjectively Down主观下线,指的是单个sentinel对服务器做出下线判断。如果一个服务器没有在 master-down-after-milliseconds 选项的时间内, 对向它发送 PING 命令的 Sentinel实例回复一个有效回复(valid reply), 那么 Sentinel 就会将这个服务器标记为SDOWN
- ODOWN:Objectively Down客观下线,指的是多实例对某个服务器做出SDOWN判断,并通过 SENTINEL is-master-down-by-addr 命令互相交流之后,则判断该服务器ODOWN。另外,failover只有ODOWN情况下才能触发
网友评论