深入理解Redis—Sentinel哨兵模式

Sentinel(哨兵)是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求;

启动并初始化:

      启动一个Sentinel的命令:redis-sentinel  /path/to/your/sentinel.conf      或redis-server  /path/to/your/sentinel.conf  --sentinel 两命令效果相同。当一个Sentinel启动时,会执行以下步骤:

  • 初始化服务器 ;
  • 将普通Redis服务器使用的代码替换成Sentinel专用代码;
  • 初始化Sentinel状态;
  • 根据给定的配置文件,初始化Sentinel的监视主服务器列表;
  • 创建连向主服务器的网络连接;

  1. 初始化服务器:
    1. Sentinel的本质是运行在特殊模式下的Redis服务器,但与普通服务器在初始化时会载入RDB/AOF文件不同,Sentinel服务器不使用数据库,所以Sentinel初始化时并不会载入以上文件;
  2. 使用Sentinel专用代码
    1. 普通Redis服务器使用6379作为监听端口号;Sentinel服务器使用26379作为监听端口号;
    2. 根据命令表可知,Sentinel模式下的服务器没有get/set/setnx等命令,所以Sentinel模式下的服务器无法对数据库进行操作;客户端可对Sentinel执行的命令:PING、SENTINEL、INFO、SUNBSRIBE、UNSUBSCRIBE、PSUBSCRIBE、PUNSUBSCRIBE
  3. 初始化Sentinel状态
    1. 服务器会初始化一个sentinel.c/sentinelState结构(简称“Sentinel状态”),该结构保存了服务器中所有和Sentinel功能有关的状态;、
  4. 初始化Sentinel状态的master属性
    1. Sentinel状态中的masters属性是一个字典,该字典中记录了所有被Sentinel监视的主服务器的相关信息:
      • 字典的键:被监视主服务器的名字;
      • 字典的值:被监视主服务器对应的sentinel.c/sentinelRedisInstance结构;
    2. sentinelRedisInstance结构,代表一个被Sentinel监视的Redis服务器实例(简称“实例结构”),该实例既可以是主服务器也可以是从服务器或者其他Sentinel;
    3. 对Sentinel状态的初始化将引发对masters字典的初始化,而masters字典的初始化是根据被载入的Sentinel配置文件来进行的。

     

  5. 创建连向主服务器的网络连接:
    1. 初始化的最后一步是创建连向被监视主服务器的网络连接,Sentinel将成为主服务器的客户端,它可以向主服务器发送命令,并从命
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值