0072-redis哨兵模式下客户端感知主节点切换

1. 现状

redis使用了哨兵模式以后,可以保持良好的健壮性,主节点宕机以后,哨兵可以做故障转移,使集群继续工作,故障转移后新的主节点需要通知客户端(客户系统),否者客户端就没法感知主节点,不能写入数据。

2. 原理

哨兵相当于一台只提供了订阅功能的redis服务器,客户端只需要订阅哨兵的指定频道,当发生故障转移后,该频道就可以收到新的主节点信息。

3. 订阅哨兵的频道

哨兵主节点信息会发布到这个频道中:+switch-master

3.1 开启客户端订阅频道
D:\redis3.2.1>redis-cli.exe -h centos0020 -p 26379
centos0020:26379> SUBSCRIBE +switch-master
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "+switch-master"
3) (integer) 1
3.2 变更主节点

服务器是一主两从的哨兵模式(centos0010, centos0020, centos0030)当前主机是centos0010

[rongyao@centos0010 redis-5.0.0]$ src/redis-cli -h centos0010 -p 6379
centos0010:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.247.130,port=6379,state=online,offset=16455314,lag=1
slave1:ip=192.168.247.131,port=6379,state=online,offset=16455314,lag=1
master_replid:fe2bc9ebfa61505235f3aae2b50223bc42b92833
master_replid2:042cd8d87329c8eae60b34c899299c2e12e076d3
master_repl_offset:16455328
second_repl_offset:15188174
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:15406753
repl_backlog_histlen:1048576

关闭centos0010的主节点,观察客户端的订阅消息
centos0010

[rongyao@centos0010 redis-5.0.0]$ ps -ef|grep redis
rongyao    9185      1  0 Mar17 ?        00:07:37 src/redis-server centos0010:26379 [sentinel]
rongyao   21606      1  0 14:19 ?        00:00:29 src/redis-server 192.168.247.129:6379
rongyao   22928  22833  0 15:57 pts/1    00:00:00 grep --color=auto redis
[rongyao@centos0010 redis-5.0.0]$ kill -9 21606

客户端

D:\redis3.2.1>redis-cli.exe -h centos0020 -p 26379
centos0020:26379> SUBSCRIBE +switch-master
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "+switch-master"
3) (integer) 1
1) "message"
2) "+switch-master"
3) "mymaster 192.168.247.129 6379 192.168.247.131 6379"

最下面一行就是主机下线以后哨兵推送的信息,表示mymaster从192.168.247.129 6379 变更为了192.168.247.131 6379

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值