06:redis-sentinel(哨兵)

redis-sentinel(哨兵) redis

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

 

Sentinel 的构造:vim

Sentinel 是一个监视器,它能够根据被监视实例的身份和状态来判断应该执行何种动做。服务器

 

功能:nosql

监控(Monitoring): 测试

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

提醒(Notification):blog

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

自动故障迁移(Automatic failover):get

当一个主服务器不能正常工做时, 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 意见的状况下, 强制开始一次自动故障迁移。

相关文章
相关标签/搜索