06:redis-sentinel(哨兵)

redis-sentinel(哨兵) 

Redis-SentinelRedis官方推荐的高可用性(HA)解决方案,当用RedisMaster-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。

 

Sentinel 的构造:

Sentinel 是一个监视器,它可以根据被监视实例的身份和状态来判断应该执行何种动作。

 06:redis-sentinel(哨兵)_第1张图片

功能:

监控(Monitoring):

Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。

提醒(Notification):

当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。

自动故障迁移(Automatic failover):

当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。

Sentinel 通过用户给定的配置文件来发现主服务器。

Sentinel 通过向主服务器发送 INFO 命令来自动获得所有从服务器的地址。

 06:redis-sentinel(哨兵)_第2张图片

Sentinel 会通过命令连接向被监视的主从服务器发送 “HELLO” 信息,该消息包含 Sentinel IP、端口号、ID 等内容,以此来向其他 Sentinel 宣告自己的存在。与此同时Sentinel 会通过订阅连接接收其他 Sentinel 的“HELLO” 信息,以此来发现监视同一个主服务器的其他 Sentinel

 06:redis-sentinel(哨兵)_第3张图片

sentinel1 通过发送HELLO 信息来让sentinel2 sentinel3发现自己,其他两个sentinel 也会进行类似的操作。

Sentinel 之间只会互相创建命令连接,用于进行通信。因为已经有主从服务器作为发送和接收 HELLO 信息的中介,所以 Sentinel之间不会创建订阅连接。

 06:redis-sentinel(哨兵)_第4张图片

故障转移FAILOVER:

一次故障转移操作由以下步骤组成:

发现主服务器已经进入客观下线状态。

基于Raft leader election 协议 , 进行投票选举

如果当选失败,那么在设定的故障迁移超时时间的两倍之后,重新尝试当选。 如果当选成功, 那么执行以下步骤。

选出一个从服务器,并将它升级为主服务器。

向被选中的从服务器发送 SLAVEOF NO ONE 命令,让它转变为主服务器。

通过发布与订阅功能, 将更新后的配置传播给所有其他 Sentinel ,其他 Sentinel 对它们自己的配置进行更新。

向已下线主服务器的从服务器发送 SLAVEOF 命令,让它们去复制新的主服务器。

当所有从服务器都已经开始复制新的主服务器时, leader Sentinel 终止这次故障迁移操作。

 

sentinel搭建过程:

这里只是演示,所以只搭建一个sentinel , 多个sentinel 安装步骤一样。

1、监控

2、自动选主,切换(6381 slaveof no one

32号从库(6382)指向新主库(6381

步骤:

mkdir /nosql/26380

cd /nosql/26380

 

vim sentinel.conf

port 26380

dir "/nosql/26380"

sentinel monitor mymaster 192.168.6.182 6382 1

sentinel down-after-milliseconds mymaster 5000

 

启动:

redis-sentinel /nosql/26380/sentinel.conf &

停主库测试:

[root@db01 ~]# redis-cli -p 6380

shutdown

 

[root@db01 ~]# redis-cli -p 6381

info replication

启动源主库(6380),看状态。

 

Sentinel管理命令:

redis-cli -p 26380

PING :返回 PONG

SENTINEL masters :列出所有被监视的主服务器

SENTINEL slaves

SENTINEL get-master-addr-by-name : 返回给定名字的主服务器的 IP 地址和端口号。

SENTINEL reset : 重置所有名字和给定模式 pattern 相匹配的主服务器。

SENTINEL failover : 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移。

 

 

你可能感兴趣的:(06:redis-sentinel(哨兵))