Skip to content

高可用

Jesse edited this page Sep 3, 2020 · 7 revisions

Arkproxy 高可用概述

中间层对于后端数据库的可用性,不做判断,因为中间层的角色,并不太适合去把后端数据库的切换工作也负责起来,但中间层尽可能的考虑了这些问题,并且给出了比较方便的操作方法,这里大概分两种情况:

支持多点写入

这种情况,也就是当参数 proxy_multi_write_mode 为 ON 的时候,因为后端数据库支持多点写入,而中间层就不需要考虑是不是会出现多写的问题,此时在配置中,也就更加灵活,可以配置多个写节点,也可以将它们上线,当然,也可以做负载均衡,当某一个节点出现问题的时候,只需要数据库集群的监控程序,将其通过 arkproxy 提供的命令,下线即可,这样就不会将请求分发到那个节点,故障即可恢复。

不支持多写

这种情况,也就是当参数 proxy_multi_write_mode 为 OFF 的时候,众所周知,这种问题比较棘手,目前各种切换方案层出不穷,当然 Arkproxy 还是不能替你做切换的决定,只能是辅助业务更好的做切换,这要依赖于你的业务架构方案了,当你最终确定切换的那一刻,还是通过 Arkproxy 给你提供的友好的命令,不管是在线 config ,还是直接修改配置文件再reload,都可以达到切换的目的。

通过 Arksentinel 实现 Arkproxy 高可用

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 的下载使用说明)

  1. 添加Arksentinel节点

arksentinel1

  1. 选择需要部署Arkproxy的MySQL集群,点击部署

arksentinel2

  1. 依次添加master、两个slave节点

arksentinel3.1

arksentinel3.2

arksentinel3.3

  1. 上线节点

arksentinel4

  1. 添加Arkproxy集群

arksentinel5.1

arksentinel5.2

arksentinel5.3

arksentinel5.4

  1. 查看Arkproxy集群

arksentinel6

  1. 模拟带有VIP的节点挂掉的故障切换

arksentinel7.1

故障节点被置为offline,状态为problem,VIP发生漂移。

arksentinel7.2

至此,Arkproxy集群高可用切换完成。

  1. 可以通过移动VIP方式来手动切换VIP

arksentinel8.1

arksentinel8.2

至此VIP成功移动到目的IP。

感兴趣者欢迎联系极数云舟进行 AiDBA(Arkcontrol,Arksentinel 等)、 ArkDB 及其他系列产品测试及试用。

通过 Keepalived 实现 Arkproxy 高可用

也可以实现一定程度的高可用,具体步骤不做展开。