Arksentinel实现原理及类似产品对比

2020-06-11  本文已影响0人  斜不靠谱

Arksentinel简介

Arksentinel 是极数云舟科技有限公司开发的分布式哨兵(一般推荐部署3或者5个哨兵节点),通过读取配置信息,获取当前运行实例的信息,并且每个哨兵针对每个实例都会创建对应的监控协程, 如果发现实例出现故障,则从配置库中获取备份实例信息,并进行切换,并根据用户设置调用对应脚本进行订制化操作。

image.png

Arksentinel工作流程

  1. 每个哨兵节点对监控实例发送心跳
  2. 如果哨兵节点A发现实例 instance1 连续3次(可配置)心跳返回结果异常则主观上认为该实例down掉,标记为Subject Down(SDown)
  3. 哨兵A之后会通过RPC调用,询问其他节点该实例状态
  4. 如果全部哨兵节点认为该实例SDown,则标记该实例为Object Down(ODown)
  5. 如果有部分节点认为该实例正常,则等待一个超时时间,如果超时后超过半数哨兵节点认为该实例SDown就会标记此实例为ODown
  6. 标记实例ODown后,会发起一轮Raft的选主投票,选举操作节点
  7. 选举为leader后,尝试将旧master节点设置为read_only,如果失败则在3s内不断尝试,超时后继续后续步骤
  8. 根据数据一致性(如果监测到数据最新的节点还是存在复制延迟则会等待追上数据之后再做切换),用户设置的优先级选择最优的替换节点
  9. 设置新master的read_only为off,将其他节点change master到新master上
  10. 调用外部脚本,执行VIP,Domain或者其他的切换操作

Arksentinel软件架构

采用代理模式,将监测切换逻辑抽象出如下方法

Ping   
SwitchOver
FailOver
ChangeMaster
ChangeReadOnly

只需实现上述接口方法,即可对一种新架构或者进程进行监控,实现成本很低,基本上两天时间即可实现对新产品的高可用支持。此外还实现了实例或主机挂掉等场景的自动化测试脚本,确保产品稳定性。

类似产品对比

上一篇 下一篇

猜你喜欢

热点阅读