Redis之Sentinel

Sentinel是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进行下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。
在这里插入图片描述
当server1的下线时长超过用户设定的下线时长上限时,Sentinel系统就会对server1执行故障转移操作:
在这里插入图片描述
1、Sentinel系统会挑选server1属下的其中一个从服务器,并将这个被选中的从服务器升级为新的主服务器
2、Sentinel系统会向server1属下的所有从服务器发送新的复制指令,让他们成为新的主服务器的从服务器,当所有从服务器都开始复制新的主服务器时,故障转移操作执行完毕
在这里插入图片描述
3、Sentinel还会继续监视已下线的server1,并在它重新上线时,将他设置为新的主服务器的从服务器
在这里插入图片描述
当一个Sentinel启动时,它需要执行以下步骤:
1、初始化服务器
2、将普通Redis服务器使用的代码替换成Sentinel专用代码
3、初始化Sentinel状态
4、根据给定的配置文件,初始化Sentinel的监视主服务器列表
5、创建连向主服务器的网络连接
初始化服务器
Sentinel本质上只是一个运行在特殊模式下的Redis服务器,所以启动Sentinel的第一步,就是初始化一个不同的Redis服务器
使用Sentinel专用代码
将一部分普通Redis服务器使用的代码替换成Sentinel专用代码
初始化Sentinel状态
在应用了Sentinel的专用代码之后,接下来,服务器会初始化一个sentinelState结构保存服务器中所有和Sentinel功能有关的状态
初始化Sentinel状态的masters属性
Sentinel状态中的masters字典记录了所有被Sentinel监视的主服务器的相关信息,其中:
1、字典的键是被监视主服务器的名字
2、字典的值则是被监视主服务器对应的sentinelRedisInstance结构
每个sentinelRedisInstance结构代表一个被Sentinel监视的Redis服务器实例,这个实例可以是主服务器,从服务器或者另外一个Sentinel
创建连向主服务器的网络连接
初始化Sentinel的最后一个是创建连向给监视主服务器的网络连接,Sentinel将成为主服务器的客户端,它可以向主服务器发送命令,并从命令回复中获取相关信息。
对于每个被Sentinel监视的主服务器来说,Sentinel会创建两个连向主服务器的异步网络连接:
1、命令连接,这个连接专门用于向主服务器发送命令,并接收命令回复
2、订阅连接,这个连接专门用于订阅主服务器的_sentinel_:hello频道
在这里插入图片描述
获取主服务器信息
Sentinel默认会以每十秒一次的频率,通过命令连接向被监视的主服务器发送INFO命令,病痛故宫分析INFO命令的回复来获取主服务器的当前信息。
通过分析主服务器返回的INFO命令回复,Sentinel可以获取以下两方面的信息:
1、一方面是关于主服务器本身的信息,包括run_id域记录的服务器运行ID,以及role域记录的服务器角色
2、另一方面是关于主服务器属下所有从服务器的信息,每个从服务器都由一个slave字符串开头的行记录,每行的ip=域记录了从服务器的IP地址,而port=域则记录了从服务器的端口号。根据这些IP地址和端口号,Sentinel无须用户提供从服务器的地址信息,就可以自动发现从服务器。
在这里插入图片描述
获取从服务器信息
当Sentinel发现主服务器有新的从服务器出现时,Sentinel除了会为这个新的从服务器创建相应的实例结构之外,Sentinel还会创建连接到从服务器的命令连接和订阅连接
在这里插入图片描述
选举领头Sentinel
当一个主服务器被判断为客观下线时,监视这个下线主服务器的各个Sentinel会进行协商,选举出一个领头Sentinel,并由领头Sentinel对下线主服务器执行故障转移操作
在这里插入图片描述
修改从服务器的复制目标
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值