一、配置样例

Sentinel节点中的配置如下,注意里面的注释。

port 26379

daemonize yes
protected-mode no

dir /opt/redis
logfile "26379.log"

sentinel monitor mymaster 10.10.11.146 6388 2  

# 判定节点不可达的时间,单位是毫秒。
sentinel down-after-milliseconds mymaster 5000  

# 主节点的密码配置
sentinel auth-pass mymaster jxlzsh

# 故障转移后,每次向新的主节点发起复制的从节点的个数。
sentinel parallel-syncs mymaster 1  

# 故障转移的超时时间
sentinel failover-timeout mymaster 50000  

# Generated by CONFIG REWRITE Sentinel 以下的配置都是动态写进去的配置
dir "/opt/redis/redis-sentinel-config"

# 配置密码
sentinel auth-pass mymaster jxlzsh
sentinel config-epoch mymaster 3
sentinel leader-epoch mymaster 0

# 发现了两个slave节点
sentinel known-replica mymaster 10.10.11.145 6388
sentinel known-replica mymaster 10.10.11.146 6388

# 发现了两个Sentinel节点
sentinel known-sentinel mymaster 10.10.11.147 26379 879a83a9b3f135b8ef7d6a265c0262c75af18fbf
sentinel known-sentinel mymaster 10.10.11.145 26379 7a7ad7033662ff66bf1f0f4a8c63c1e5b5c0d88b

sentinel current-epoch 3

二、parallel-syncs的意义

在这里插入图片描述

三、monitor命令

让Sentinel监控主节点的配置,也可通过命令执行:

sentinel monitor mymaster ip port quorum

mymaster:主节点的别名。

quorum:

  • 判断主节点失败,至少要达到的票数。一般设置为Sentinel节点的一半加1。
  • quorum还与Sentinel节点的领导者选举有关,至少要有max(quorum,num(sentinels/2 + 1))个Sentinel节点参与选举,选举出领导者Sentinel,从而完成故障转移。例如有5个Sentinel,quorum为4,那么需要4个在线Sentinel节点参与选举。

四、两个脚本的配置

故障转移期间,当一些警告级别的Sentinel事件发生,触发的脚本配置:

sentinel notification-script mymaster /opt/redis/scripts/notification.sh

故障转移结束后,会触发的脚本配置如下,将故障转移结果传递出来:

sentinel client-reconfig-script mymaster /opt/redis/scripts/notification.sh

注意:

  • 脚本必须要有执行权限。
  • 而且脚本必须包含shell脚本头。
  • 脚本的最大执行时间不能超过60秒,否则脚本将被kill掉。
  • 如果运维的Sentinel节点比较多,不建议脚本的形式,会给使部署比较麻烦。

五、动态配置

Sentinel节点也支持动态的设置参数:

sentinel set mymaster param value

支持的参数有:

  • quorum
  • down-after-milliseconds
  • failover-timeout
  • parallel-syncs
  • notification-script
  • client-reconfig-script
  • auth-pass

sentinel set命令只对当前Sentinel节点有效。

sentinel set如果执行成功会立即刷新配置文件,不需要像Redis的配置文件那样,需要config rewrite来写盘。

六、部署建议

  • Sentinel节点不应该部署在一台物理机器上。
  • 部署至少三个且奇数个的Sentinel节点。
  • 如果Sentinel节点集合监控的是同一个业务的多个主节点集合,可以使用一套Sentinel,否则部署多套Sentinel比较合适。
GitHub 加速计划 / sentine / Sentinel
22.24 K
7.98 K
下载
alibaba/Sentinel: Sentinel 是阿里巴巴开源的一款面向分布式服务架构的流量控制、熔断降级组件,提供实时监控、限流、降级和系统保护功能,适用于微服务治理场景。
最近提交(Master分支:2 个月前 )
195150bc * fix issue 2485 which occur oom when using async servlet request. * optimize imports * 1. fix the same issue in the webmvc-v6x 2. improve based on review comments 2 个月前
b78b09d3 2 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐