其他分享
首页 > 其他分享> > 混合云应用双活容灾最佳实践

混合云应用双活容灾最佳实践

作者:互联网

简介:本文会通过一个业务 Demo 案例,介绍混合云容灾建设的难点,以及如何基于 MSHA 来快速搭建应用双活架构并具备分钟级业务恢复能力。

作者:远跖

前言

越来越多的企业在数字化转型和上云进程中选择混合云的形态(云+自建 IDC 或云+其他厂商云)来进行容灾建设,一方面不会过度依赖单一云厂商,另一方面还能充分利用已有的线下 IDC 资源。

MSHA 云原生多活容灾解决方案[1],也发布了混合云多活容灾产品能力。本文会通过一个业务 Demo 案例,介绍混合云容灾建设的难点,以及如何基于 MSHA 来快速搭建应用双活架构并具备分钟级业务恢复能力。

业务混合云容灾实践

业务背景信息

A 企业是一个零售行业电商交易平台,业务系统部署在自建 IDC 机房,存在以下痛点:

业务在快速发展过程中,多次遇到的容量不足以及故障问题引起了公司高层的重视,决心进行容灾能力建设。由于自建 IDC 是公司已有资产且稳定使用多年,同时不希望过度依赖于云,因此期望建立 IDC+云 的混合云形态容灾架构。

当前应用部署架构

电商交易平台包含的应用:

技术栈:

混合云容灾目标

业务容灾需求归纳如下:

建设难点

解决方案

结合业务容灾需求和混合云 IDC+云形态的特点,采用应用双活架构能够较好的满足业务容灾诉求。

应用双活架构

架构简图:

架构规范:

详细方案

业务应用云上云下对称部署,并基于 MSHA 接入层集群,来承接入口 HTTP/HTTPS 流量,按照比例或精准路由规则云上云下分流。多活控制台提供 MSFE 集群界面白屏化的部署、扩缩容、监控等常规运维能力,以及应对故障场景的分钟级切流能力。

业务应用需要按业务产品线分批上云,过程中存在下游应用仅 IDC 部署的情况。利用 MSHA 注册中心同步功能,可实现云上云下服务互通,助力业务上云。同时基于 MSHA-Agent 的切面能力,在 Dubbo/SpringCloud 服务调用时,Consumer 优先调用同单元内的Provider,从而避免跨机房调用带来的网络延迟,减小业务请求 RT。

数据库异地主备部署,云上云下应用日常态均读写云上 Redis 和 RDS 数据库,无需考虑数据一致性问题。MSHA 控制台通过集成 DTS 同步组件,支持云上云下的数据同步(异步复制)。同时基于 MSHA-Agent 切面能力,具备应用数据库访问连接的切换能力,云上 Redis 或 RDS 故障则可将读写访问连接切换到 IDC 内的 Redis 或 MySQL,反之亦然。切换过程中还具备禁写保护能力,避免产生读到旧数据以及脏写等数据质量问题。

MSHA 控制台,支持 HTTP、数据库访问流量的统一管控、统一切换,操作收敛在一站式管控平台,方便故障场景快速白屏化操作,自动化执行。同时针对业务应用 MSHA 提供了 Agent 接入方式,无需业务代码改造即可获得相关容灾切换能力。

改造内容

改造后的应用部署架构

日常场景:IDC+云上同时承担业务流量--应用双活

访问电商 Demo 首页,查看实际流量调用链:概率性的访问到北京或杭州单元,均读写北京单元内的数据库。

容灾能力

容灾能力验证

基于 MSHA 完成应用双活架构建设后,还需验证业务容灾能力是否符合预期。接下来将制造真实的故障,来验证容灾恢复能力。

7.1 演练准备

  1. 进入 MSHA 控制台,在左侧菜单栏选择监控大盘。页面顶部,下拉选择切换到实际使用的命名空间
     
  2. 查看页面中的各项监控指标。

说明:演练前,基于 MSHA 流量监控或其他监控产品,确定业务稳态的监控指标(如日常情况 RT<=200ms,错误率<1%),以便在故障发生时判断故障影响面以及在故障恢复后判断业务的实际恢复情况。

7.2 应用故障注入

这里我们使用阿里云故障演练产品,对阿里云-北京的商品应用注入故障。

  1. 进入 Chaos 故障演练产品控制台[9],顶部选择切换到相应地域,左侧导航栏选择我的空间
     
  2. 我的空间选择配置好的演练(50% 概率网络丢包),然后单击执行演练

故障注入成功后,打开电商首页或进行下单,有概率出现访问异常,符合预期。

7.3 切流恢复

在北京单元的商品应用故障的情况下,可以通过 MSHA 切流功能,将云上入口流量切 0,快速恢复业务。

预期

100% 流量切换到杭州单元后,业务完全恢复,不受北京单元的故障影响。

切流操作

1. 进入 MSHA 控制台,在左侧导航栏选择切流>异地应用双活切流

2. 在切流页面,对北京单元点击一键切零

3. 单击执行预检查,在切流检查区域,单击确认,开始切流。

4. 在切流任务页面的当前状态显示切流完成,表示切流已成功。

5. 刷新电商 Demo 首页,多次访问均能正常展示,符合预期。

查看实际流量调用链:流量始终访问到杭州单元,读写北京单元内的数据库。

7.4 数据库故障注入

从上面调用链可以看出,杭州单元内的应用仍然访问的是北京单元的 Redis、MySQL 数据库。我们继续使用 Chaos 故障演练[10]产品对北京单元的 Redis、MySQL 数据库注入故障,制造数据库故障场景。

故障注入成功后,打开电商首页或进行下单始终访问异常,符合预期。

7.5 切换数据库进行恢复

在北京单元的数据库故障的情况下,可以通过 MSHA 数据库切换功能,将应用访问的 Redis/MySQL 的连接切换至杭州单元的数据库(切换过程中会等待数据同步追平,期间会短暂禁写)。

预期

应用连接的数据库切换到杭州后,业务完全恢复,不受北京单元的故障影响。

切流操作

1. 进入 MSHA 控制台,在左侧导航栏选择异地应用双活>数据层配置

2.在数据保护规则列表中,找到商品、订单、购物车数据库,逐个点击主备切换

3. 点击主备切换后,会进入预检查页面,确认各检查项状态正常后,点击在确认执行,则进入切换详情页,并自动执行切换流程。

4. 主备切换详情页,可以看到切换进度和切换结果,任务进度 100% 后,表示切换完成。

5. 商品、订单、购物车数据库都主备切换完成后。多次访问电商 Demo 首页或进行下单,发现均已正常,主备切换后业务功能完全恢复,符合预期。

总结

在本篇文章中,我们介绍了 MSHA 多活容灾助力企业进行混合云应用双活容灾建设的实践案例,给出了容灾架构建设实践方法,同时利用 Chaos 故障演练产品注入真实故障,来验证故障场景业务容灾能力是否符合预期。

原文链接

本文为阿里云原创内容,未经允许不得转载。 

标签:数据库,最佳,切换,应用,容灾,MSHA,云上,双活
来源: https://www.cnblogs.com/yunqishequ/p/15826201.html