Skip to content

集群监控

lishanglin edited this page Aug 24, 2020 · 2 revisions

集群监控

XPipe由Console组件完成对XPipe单向同步集群的健康检查工作,包括哨兵的检查,复制延迟的监控打点,Redis节点健康状态判断等

下面对这三类监控的原理及扩展能力做介绍

哨兵检查

XPipe主机房的高可用依赖于Redis原生的哨兵模式,而Console会检查主机房内哨兵的监控是否与元信息一致,当出现不一致时对哨兵监控做出调整,以保证哨兵的监控名与哨兵监控的集群成员与元信息保持一致。

1 - 原理

Console实例定时从备机房Redis监听哨兵消息__sentinel__:hello,从而获取正在监听集群的哨兵列表,与元信息比较,删除多余哨兵,补充缺失哨兵。同时会从哨兵获取正在监控的Redis实例列表,当有发现未知Redis时会reset哨兵并通过邮件告警(需实现EmailService接口)。

2 - 扩展配置

以下配置添加到Console包解压目录下xpipe.properties配置文件后生效

配置名称 类型 释意 默认值
console.health.sentinel.interval Int 哨兵检查时间间隔,单位毫秒 300000
console.sentinel.quorum Object 哨兵配置,total为一组哨兵总数,quorum为哨兵quorum数量 {"total":5,"quorum":3}
console.sentinel.rate.limit.open Boolean 哨兵调整限流开关 false
console.sentinel.rate.limit.size Int 哨兵每分钟允许调整数,需要先打开哨兵限流开关 3
console.health.sentinel.monitor.redundant.sensitive Boolean 是否对哨兵上的未知监控敏感,若为true会自动删除哨兵上的未知监控 false

延迟监控

Console会监控集群数据复制的延迟情况,将延迟数据打点上报(需实现MetricProxy接口),并在延迟持续过高或节点持续ping不通时将实例标记为Down。当多个Console实例皆将Redis节点标记为Down后,会通过邮件告警(需实现EmailService接口),并通知相关应用(需实现OuterClientService接口)。

1 - 原理

延迟监控基于Redis原生的pub/sub机制,通过在pub上附加时间信息,并在sub时与当前时间相减,计算出整条复制链路的复制延迟。

2 - 扩展配置

以下配置添加到Console包解压目录下xpipe.properties配置文件后生效

配置名称 类型 释意 默认值
redis.replication.health.check.interval Int 延迟检测时间间隔,单位毫秒 2000
console.healthy.delay Int 允许的最大延迟,超过该值认为复制异常,单位毫秒 2000
console.down.after.checknums Int 连续多少次延迟检测异常将Redis实例标记为Down 5
console.quorum Int Console集群标记Redis实例ODown需要的Console实例个数 1
console.ping.down.after.milli Int 允许的Redis实例ping失败的最大时长,超过这个时间将Redis标记为Down,单位毫秒 12000