redis sentinel启动过程

1、  运行时必须指定配置文件

2、  替换默认端口,新的默认端口为26379

3、  替换为新的可接受的命令集,参照《命令集》部分,创建sentinel.master字典,用来存放监视的master,默认tilt模式为关闭。创建脚本执行队列sentinel.scripts_queue

4、  加载配置文件(支持相对路径,绝对路径)

  1. 除去共有的配置项,还有sentinel专有配置项

  2. sentinel monitor <name> <host> <port> <quorum>

i.              sentinel 创建master实例

  1. sentinel down-after-milliseconds <name> <milliseconds>

i.              设置该master 的主观下线时间,server.down_after_period

  1. sentinel failover-timeout <name> <milliseconds>

  2. sentinel parallel-syncs <name> <milliseconds>

i.              多少个slave可以同时reconfigure

  1. sentinel notification-script <name> <path>

i.              设置该master的通知脚本

  1. sentinel client-reconfig-script <name> <path>

i.              设置该masterreconfig脚本

  1. sentinel auth-pass <name> <password>

i.              设置认证密码

  1. sentinel current-epoch <epoch>

i.              设置sentinel current_epoch

  1. sentinel config-epoch <name> <epoch>

i.              设置master config_epoch

  1. Sentinel leader-epoch <name> <epoch>

i.              设置masterleader_epoch

  1. Sentinel known-slave <name> <ip> <port> [runid]

i.              设置master知道的slave,其中namemaster名,ipportsalve地址

  1. known-sentinel <name> <ip> <port> [runid]

i.              设置master知道的sentinel,其中namemaster名,ipportsentinel地址

  1. Sentinel announce-ip <ip-address>

  2. Sentinel announce-port <port>

5、  初始化服务器,创建侦听,创建时间事件(serverCron,文件事件等。对于时间事件,事件处理函数返回-1表示一次性时间事件,返回其他的值,该值为下一次触发时间间隔。

6、  aeMain 轮询事件

  1. serverCron时间事件中的sentinelTimer有以下处理

i.              检验是否使得sentinel进入tilt模式,当上次检验和这次检验时间差为负值或者大于SENTINEL_TILT_TRIGGER(2000ms)阀值,sentinel进入tilt模式。时间差为负值可能是由于被修改了系统时间,大于SENTINEL_TILT_TRIGGER可能是遇到高负载操作,进入tilt模式,并向给订阅了+tiltclient发送信息

ii.              断开的master,尝试重连,

  1. 创建命令连接,是异步模式

  2. a)         设置连接回调函数

  3. b)         设置断开连接回调函数

  4. c)         发送是auth认证,如果需要的话

  5. d)         设置client名(sentinel+runnid前八位+cmd

  6. e)         异步发送ping消息

  7. 创建pub/sub连接,异步模式

  8. a)         设置连接回调函数

  9. b)         设置端口连接回调函数

  10. c)         发送auth认证,如果需要的话

  11. d)         设置client(sentinel+runnid前八位+pubsub)

  12. e)         订阅master__sentinel__:hello频道

i.              异步处理订阅__sentinel__:hello的函数逻辑

  1. 格式:0=ip,1=port,2=runid,3=current_epoch,4=master_name, 5=master_ip,6=master_port,7=master_config_epoch

  2. 012是该mastersentinel ipportrunnid

  3. 添加该mastersentinel到该sentinel 关注的实例当中

  4. 当参数3大于sentinel.current_epoch, 更新sentinel.current_epoch为参数3的值并发送消息给侦听了+new-epoch消息的客户端

当参数7大于当前masterconfig_epoch,更新为大的,


转载于:https://my.oschina.net/465759695/blog/645647

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值