Redis之哨兵模式

Redis之哨兵模式

1.哨兵介绍

哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的aster并将所有slave连接到新的master。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yDIlZWmP-1656665781972)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701160545617.png)]

2.哨兵作用

1.监控
不断的检查master和slave是否正常运行。
master存活检测、master与slave运行情况检测
2.通知(提醒)
当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。
3.自动故障转移
断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址
注意:
哨兵也是一台redis服务器,只是不提供数据服务
通常哨兵配置数量为单数(一般最少三个起)

3.哨兵相关配置

注:一般情况下rdb文件、aof文件、”哨兵的一些工作信息“都存在一个目录下面,即使不同的端口的也给存到一个目录下;
sentinel.conf与redis-conf文件也存放在一个目录下,即使不同端口的sentinel.conf与redis-conf文件也给存到一个目录下

1.port 26379:
哨兵通常默认端口是26379
2.dir “/var/lib/redis”:
存储哨兵的一些工作信息
3.sentinel monitor :
让 sentinel 去监控一个地址为 ip:port 的主服务器,这里的 master-name 可以自定义; 是一个数字,表示当有多少个 sentinel 认为主服务器宕机时,它才算真正的宕机掉,通常数量为半数或半数以上才会认为主机已经宕机, 需要根据 sentinel 的数量设置。
4.sentinel monitor mymaster 127.0.0.1 6379 2:
监控的主机,mymaster这个单词可以更改,可以自定义名字
2是指2个哨兵认定主机挂那么才会认为主机挂,相当于是一个标准,通常设定为哨兵数量的一半加1,这就是为什么我们的哨兵数量通常设为单数(比如设置3个哨兵的时候,有2个哨兵认为主机挂了,才认为主机是挂了)(3个哨兵配置2)(5个哨兵配置3)(7个哨兵配置4)
5.sentinel down-after-milliseconds :
在指定的毫秒数内,若主节点没有应答哨兵的 PING 命令,此时哨兵认为服务器主观下线,默认时间为 30 秒。 与mymaster需要一一对应,是毫秒单位
6.sentinel parallel-syncs :
指定可以有多少个 Redis 服务同步新的主机,即可以有多少个redis同时开始同步数据,一般而言,这个数字越小同步时间越长,而越大,则对网络资源要求就越高。
7.# sentinel auth-pass mymaster MySUPER–secret-0123passw0rd:
sentinel auth-pass <服务器名称><密码>
若主服务器设置了密码,则哨兵必须也配置密码,否则哨兵无法对主从服务器进行监控。该密码与主服务器密码相同。
8.# sentinel failover-timeout :
指定故障转移允许的毫秒数,若超过这个时间,就认为故障转移执行失败,默认为 3 分钟。

4.配置哨兵

1)配置一拖二的主从结构
2)配置三个哨兵(配置相同,端口不同)
3)参看sentinel.conf
注:启动顺序是,先启动主机,再启动从机再启动哨兵
启动哨兵命令如下:

redis-sentinel sentinel-端口号.conf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VHpftmPR-1656665781973)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701161621170.png)]

5.演示(配置哨兵)

创建了3个哨兵,一个master,2个slave。
“哨兵1”、“哨兵2“、”哨兵3“窗口用于看日志;

可以看到有一个 sentinel.conf配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YoqnEZqB-1656665781974)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701161653920.png)]

复制sentinel.conf配置文件,并进行修改成sentinel-26379.conf、sentinel-26380.conf、sentinel-26381.conf:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ojinpvGt-1656665781974)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162232749.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aT5SBEFd-1656665781975)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162246139.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zif9yi0G-1656665781975)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162252929.png)]

查看redis-6379.conf、redis-6380.conf配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8wrvDK8s-1656665781976)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162429879.png)]

创建redis-6381.conf配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1L162aa4-1656665781976)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162455852.png)]

启动6379master主机、6380slave从机、6381salve从机、:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t1wqvdC0-1656665781977)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162555747.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kPEU0DeO-1656665781977)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162603987.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K24buOuP-1656665781978)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162610228.png)]

启动26379哨兵

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Lfsm0PA-1656665781978)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162815038.png)]

可以进入哨兵26379客户端进行查看key即get操作,不过不允许进行set操作;
还可以info查看信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fktuv9wR-1656665781978)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162843707.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q2UY14kB-1656665781979)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162852757.png)]

再次查看26379配置文件,发现里面新增添了许多信息,即一旦启动哨兵,它的配置文件信息就要变化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YzJytuVl-1656665781979)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162910628.png)]

启动26380哨兵:
从最后一行可以看到哪个id就是26379哨兵的id了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wu3FlwrD-1656665781980)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162939149.png)]

再次查看26379哨兵日志,发现也多了一行,是26380哨兵的id,即说明哨兵之间是可以互相通信的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PIfgvURo-1656665781980)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162958908.png)]

再次查看26379配置文件,发现里面信息又发生了一次变化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jx7V1EOc-1656665781981)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163017227.png)]

启动26381哨兵

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PffR9O08-1656665781981)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163039989.png)]

再次查看26379配置文件,发现里面信息又发生了一次变化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XR9z3UOQ-1656665781982)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163052800.png)]

ctrl+c停掉6379master主机

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I3fnvKA2-1656665781982)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163111289.png)]

30秒以后,26379哨兵开始打印大量日志
进行选举投票,让6381当主机,让6379、6380当从机,这就是主从切换,但是6379仍然是掉线的,即再sdown 6379

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GKGn41rS-1656665781983)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163150958.png)]

6.主从切换过程

哨兵在进行主从切换过程中经历三个阶段
1.监控:
同步信息
2.通知:
保持联通
3.故障转移:
1)发现问题
2)竞选负责人
3)优选新master
4)新master上任,其他slave切换master,原master作为slave故障回复后连接

7.阶段一监控阶段

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3y3FNCw4-1656665781983)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163320039.png)]

为了哨兵与master更好的进行信息交互,建立一个cmd连接(相当于通道)
master也会生成一个“SentinelRedisInstance”信息,与""SentinelState“几乎一模一样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oye2JN4t-1656665781984)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163843356.png)]

第二个sentinel来之后,会发现“SentinelRedisInstance”信息,这样的话也就知道其他哨兵的信息了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NTRmwgAE-1656665781984)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701164133165.png)]

此时第一个sentinel只有一个哨兵的信息,但是sentinel有两个哨兵的信息,为了保证哨兵之间同步,建立起”发布订阅通道“,这样的话就可以相互对称信息了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qmxhr7Xz-1656665781984)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701164313686.png)]

为了保证第一个哨兵与第二个哨兵之间可以长期对称,它们之间需要ping命令来维持

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DRsHiPBv-1656665781985)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701164935125.png)]

8.阶段二通知阶段

第一次可能是sentinel1发送hello给master与slave,收到回复后再转发给其他哨兵,第二次可能就是sentinel2发送hello给master与slave,收到回复后再转发给其他哨兵

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yx6O2h3s-1656665781985)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701165004024.png)]

9.阶段三故障转移阶段

1.服务器列表中挑选备选master
1)不在线的
2)响应慢的
3)与原master断开时间久的
4)优先原则
4.1)优先级
4.2)offset
4.3)runid
2.发送指令( sentinel )
1)向新的master发送slaveof no one
2)向其他slave发送slaveof 新masterIP端口

一个sentinel标记主机挂了是sdown,超过半数sentinel标记主机下线是odown

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VzWgL98s-1656665781985)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701165511443.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Q8ZtX7Z-1656665781986)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701165544555.png)]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值