-
Notifications
You must be signed in to change notification settings - Fork 30
高可用
中间层对于后端数据库的可用性,不做判断,因为中间层的角色,并不太适合去把后端数据库的切换工作也负责起来,但中间层尽可能的考虑了这些问题,并且给出了比较方便的操作方法,这里大概分两种情况:
这种情况,也就是当参数 proxy_multi_write_mode
为 ON 的时候,因为后端数据库支持多点写入,而中间层就不需要考虑是不是会出现多写的问题,此时在配置中,也就更加灵活,可以配置多个写节点,也可以将它们上线,当然,也可以做负载均衡,当某一个节点出现问题的时候,只需要数据库集群的监控程序,将其通过 arkproxy 提供的命令,下线即可,这样就不会将请求分发到那个节点,故障即可恢复。
这种情况,也就是当参数 proxy_multi_write_mode
为 OFF 的时候,众所周知,这种问题比较棘手,目前各种切换方案层出不穷,当然 Arkproxy 还是不能替你做切换的决定,只能是辅助业务更好的做切换,这要依赖于你的业务架构方案了,当你最终确定切换的那一刻,还是通过 Arkproxy 给你提供的友好的命令,不管是在线 config ,还是直接修改配置文件再reload,都可以达到切换的目的。
Arkproxy 可以对接常见 MySQL 高可用集群,例如基于 VIP 或域名的 MMM 或 MHA 高可用集群,Arkproxy 的部署IP填写VIP即可,当后端集群发生切换时,Arkproxy+VIP/域名可以屏蔽后端集群切换。由于 MMM 和 MHA 单点故障和单点仲裁等缺点,极数云舟是使用自主研发的分布式监控套件 Arksentinel 进行监控和故障切换。
Arksentinel 为分布式高可用监控系统,是极数云舟精心打造的数据库智能运维产品体系 AiDBA 的一部分,其通常部署 3~5 个节点,每个节点对 MySQL 高可用集群和 Arkproxy 集群进行实时监控。
- 当 MySQL 集群的某个节点发生宕机或访问不可达时,Arksentinel 自动发起切换,将可用节点提升为主节点,完成故障转移的功能,具有系统监控、通知、自动故障转移、自身高可用、解决网络分区等功能
- 当 Arkproxy 集群的某个节点发生宕机或访问不可达时,Arksentinel 自动发起切换,将VIP自动漂移到其他节点,应用层无感知
如下为极数云舟云管平台 Arkcontrol 页面截图,演示 Arksentinel 实现 Arkproxy 高可用的搭建和实现过程:(附: Arkcontrol 的下载与使用说明)
- 添加Arksentinel节点
- 选择需要部署Arkproxy的MySQL集群,点击部署
- 依次添加master、两个slave节点
- 上线节点
- 添加Arkproxy集群
- 查看Arkproxy集群
- 模拟带有VIP的节点挂掉的故障切换
故障节点被置为offline,状态为problem,VIP发生漂移。
至此,Arkproxy集群高可用切换完成。
- 可以通过移动VIP方式来手动切换VIP
至此VIP成功移动到目的IP。
感兴趣者欢迎联系极数云舟进行 AiDBA(Arkcontrol,Arksentinel 等)、 ArkDB 及其他系列产品测试及试用。
也可以实现一定程度的高可用,具体步骤不做展开。