Sentinel的主要功能包括主节点存活检测、主从运行情况检测、自动故障转移(failover)、主从切换。Redis的Sentinel最小配置是一主一从。 Redis的Sentinel系统可以用来管理多个Redis服务器,该系统可以执行以下四个任务:
-
监控
-
Sentinel会不断的检查主服务器和从服务器是否正常运行。
-
-
通知
-
当被监控的某个Redis服务器出现问题,Sentinel通过API脚本向管理员或者其他的应用程序发送通知。
-
-
自动故障转移
-
当主节点不能正常工作时,Sentinel会开始一次自动的故障转移操作,它会将与失效主节点是主从关系的其中一个从节点升级为新的主节点, 并且将其他的从节点指向新的主节点。
-
-
配置提供者
-
在Redis Sentinel模式下,客户端应用在初始化时连接的是Sentinel节点集合,从中获取主节点的信息。
-
2.Redis Sentinel的工作流程
由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求 。如下图:
Sentinel负责监控集群中的所有主、从Redis,当发现主故障时,Sentinel会在所有的从中选一个成为新的主。并且会把其余的从变为新主的从。同时那台有问题的旧主也会变为新主的从,也就是说当旧的主即使恢复时,并不会恢复原来的主身份,而是作为新主的一个从。
在Redis高可用架构中,Sentinel往往不是只有一个,而是有3个或者以上。目的是为了让其更加可靠,毕竟主和从切换角色这个过程还是蛮复杂的。
Redis Sentinel 服务器连接
发现并连接主服务器
Sentinel 通过用户给定的配置文件来发现主服务器。
Sentinel 会与被监视的主服务器创建两个网络连接:
命令连接用于向主服务器发送命令。
订阅连接用于订阅指定的频道,从而发现监视同一主服务器的其他 Sentinel。
发现并连接从服务器
Sentinel 通过向主服务器发送 INFO 命令来自动获得所有从服务器的地址。
跟主服务器一样,Sentinel 会与每个被发现的从服务器创建命令连接和订阅连接。
4.Redis Sentinel 命令操作
命令 | 描述 |
PING | 返回 PONG |
SENTINEL masters | 列出所有被监视的主服务器 |
SENTINEL slaves <master name> | 列出所有被监视的从服务器 |
SENTINEL get-master-addr-by-name <master name> | 返回给定名字的主服务器的 IP 地址和端口号。 |
SENTINEL reset <pattern> | 重置所有名字和给定模式 pattern 相匹配的主服务器 |
SENTINEL failover <master name> | 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下,强制开始一次自动故障迁移。 |
5.Redis Sentinel(哨兵)实现 Redis 的高可用性
1.环境说明
主机名称 | IP地址 | redis版本和角色说明 |
redis-master | 192.168.152.133:6379 | redis 6.0.5(主) |
redis-slave01 | 192.168.152.134:6379 | redis 6.0.5(从) |
redis-slave02 | 192.168.152.135:6379 | redis 6.0.5(从) |
redis-master | 192.168.152.133:26379 | Sentinel01 |
redis-slave01 | 192.168.152.134:26379 | Sentinel02 |
redis-slave02 | 192.168.152.135:26379 | Sentinel03 |
2.安装(所有节点安装)
[root@xingdian-server-23 /]# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
[root@xingdian-server-23 /]# yum -y --enablerepo=remi install redis
3.部署主从(略) 可以看我之前主从的文章