Arksentinel简介
Arksentinel 是极数云舟科技有限公司开发的分布式哨兵(一般推荐部署3或者5个哨兵节点),通过读取配置信息,获取当前运行实例的信息,并且每个哨兵针对每个实例都会创建对应的监控协程, 如果发现实例出现故障,则从配置库中获取备份实例信息,并进行切换,并根据用户设置调用对应脚本进行订制化操作。
![](https://img.haomeiwen.com/i7744406/d7d8f8d97f915d89.png)
Arksentinel工作流程
- 每个哨兵节点对监控实例发送心跳
- 如果哨兵节点A发现实例 instance1 连续3次(可配置)心跳返回结果异常则主观上认为该实例down掉,标记为Subject Down(SDown)
- 哨兵A之后会通过RPC调用,询问其他节点该实例状态
- 如果全部哨兵节点认为该实例SDown,则标记该实例为Object Down(ODown)
- 如果有部分节点认为该实例正常,则等待一个超时时间,如果超时后超过半数哨兵节点认为该实例SDown就会标记此实例为ODown
- 标记实例ODown后,会发起一轮Raft的选主投票,选举操作节点
- 选举为leader后,尝试将旧master节点设置为read_only,如果失败则在3s内不断尝试,超时后继续后续步骤
- 根据数据一致性(如果监测到数据最新的节点还是存在复制延迟则会等待追上数据之后再做切换),用户设置的优先级选择最优的替换节点
- 设置新master的read_only为off,将其他节点change master到新master上
- 调用外部脚本,执行VIP,Domain或者其他的切换操作
Arksentinel软件架构
采用代理模式,将监测切换逻辑抽象出如下方法
Ping
SwitchOver
FailOver
ChangeMaster
ChangeReadOnly
只需实现上述接口方法,即可对一种新架构或者进程进行监控,实现成本很低,基本上两天时间即可实现对新产品的高可用支持。此外还实现了实例或主机挂掉等场景的自动化测试脚本,确保产品稳定性。
类似产品对比
- MHA (国内使用较多)
通过manager监听实例是否正常,如果发生故障通过ssh调用对应client进行切换操作等具体操作- 自身单点,自身高可用无法保证
- 无法处理网络故障,如果是manager与实例间网络隔离则会发生误切
- 每个MHA难以管理较多的集群,成本较高
- Orchestrator(国外使用较多)
也是分布式集群监听多套集群- 自身高可用
- 支持非GTID切换(通过不断的写入数据,在binlog留下标记位置)
- 配置复杂,国内用户难以使用
- Arksentinel
- 使用协程,性能特别好,一台8核CPU,24G内存机器就可以管理5000个实例
- 配合Arkcontrol,使用方便,简洁明了
- 支持多种架构
- 扩展方便
网友评论