sentinel 是什么?
- sentinel 也是 redis 进程,通常会启动多个 sentinel;
- 这些进程不存储数据,只对 redis 节点进行故障判断,完成 redis 节点的故障转移,在故障迁移完成后通知客户端;
- 客户端从 sentinel 获取 redis 信息;
sentinel 提供的功能
- 故障发现;
- master 挂了自动故障转移,并通知客户端;
- 配置中心,客户端第一次连接是通过 sentinel 完成的;
sentinel 的局限
- 在读写分离的情况下,对 slave 的故障无法完成自动迁移,只能自定义客户端,通过监听 sentinel 发出的三件事完成自定义的 slave 故障迁移逻辑,还是挺麻烦的,建议使用 cluster 的方式;
sentinel 故障转移过程
- 多个 sentinel 发现并确认 master 有问题;
- 选举出一个 sentinel 作为领导;
- 选出一个 slave 作为 master;
- 通知其余 slave 成为新 master 的 slave;
- 通知客户端主从变化;
- 等待老 master 复活成为新 master 的 slave;
注:
- sentinel 可以监控多套 master/slave 集群,每套 master/slave 集群用 master-name 作为标识;