06:redis-sentinel(哨兵)

redis-sentinel(哨兵) 

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

 

Sentinel 的构造:

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

 

功能:

监控(Monitoring):

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

提醒(Notification):

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

自动故障迁移(Automatic failover):

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

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

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

 

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

 

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

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

 

故障转移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 <master name>

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

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

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

 

 

posted @ 2019-10-15 13:46  运维魔法师  阅读(210)  评论(0编辑  收藏  举报