混合云应用双活容灾实践

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

作者:远跖

前言

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

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

业务混合云容灾实践

业务背景信息

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

  • 业务仅在 IDC 单机房部署,缺少容灾能力。
  • IDC 容量不足,物理机器升级替换周期长,不足以支撑业务的快速发展。

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

当前应用部署架构

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

  • frontend:Web 应用,负责和用户交互。
  • cartservice:购物车应用,提供购物车添加、存储和查询服务。
  • productservice:商品应用,提供商品、库存服务。

技术栈:

  • SpringBoot。
  • RPC 框架:SpringCloud、Dubbo,注册中心使用自建的 Nacos、Zookeeper。
  • 数据库 Redis 和 MySQL。

混合云容灾目标

业务容灾需求归纳如下:

  • 云上云下互容灾,切换 RTO 为分钟级。期望云上云下相互容灾,继续发挥 IDC 的价值,且不 100% 依赖于云。面对 IDC 或云故障场景,关键时刻要敢切换、能切换,且切换 RTO 要求小于 10 分钟。
  • 无数据一致性风险。云上云下的两个数据中心数据强一致,日常态和容灾切换过程中都要避免存在脏写等数据一致性风险。
  • 一站式管控。业务容灾涉及的技术栈框架和云产品,需要统一管控、统一运维、统一切换,操作收敛在一站式管控平台,方便故障场景快速白屏化操作,自动化执行。
  • 实施周期短,改造成本低。业务存在多个产品线,依赖关系复杂、调用链路长,且处于高速发展频繁迭代时期,期望容灾建设不会给业务研发团队带来改造负担。

建设难点

  • 流量管理难度高
  • 若采用 DNS 将流量按权重解析到云上和云下,存在修改 DNS 解析生效时间长的问题(通常为十分钟或小时级,参见 DNS 解析生效时间 FAQ[2]),不能满足容灾切换小于 10 分钟的要求。
  • 业务应用所依赖的 Redis 和 MySQL,IDC内采用开源自建而云上直接使用云产品,要实现开源自建+云产品的容灾切换能力难。
  • 容灾切换数据质量保障难
  • 容灾切换过程中,可能因数据同步延迟导致读到旧数据,以及切换规则推送到分布式应用节点时间不一致等原因可能造成云上云下数据库同时读写而出现脏写的问题,整个切换过程数据质量保障是个关键点,同时也是难点。
  • 无业务代码侵入难
  • 要实现 Redis、MySQL 容灾切换能力,通常需要业务应用配合改造,对业务代码侵入大。

解决方案

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

应用双活架构

架构简图:

架构规范:

  • 选择离 IDC 物理距离<=200km 的云上 Region,网络延迟较低(约 5~7ms)。
  • 应用、中间件云上云下冗余对称部署,同时对外提供服务(应用双活)。
  • 数据库异地主备,异步复制备份。应用读写同一数据中心的数据库,避免考虑一致性问题。

详细方案

  • 应用流量双活

业务应用云上云下对称部署,并基于 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 案例中,选择杭州 Region 作为容灾单元。
  • 网络打通:
  • 接入 CEN 云企业网,实现云上云下网络互通(详见多接入方式构建企业级混合云文档[3])。
  • 接入集群部署和配置:
  • 云上云下部署 MSHA 接入层集群(MSFE),上挂 SLB 用于公网接入以及 MSFE 集群的负载均衡(参见使用文档[4])。
  • 录入域名、URI 和后端应用地址,从而具备云上云下分流和分钟级切流能力(参见使用文档[5])。
  • 应用:
  • 云上分批部署业务应用。
  • JAVA 应用安装 MSHA-Agent,并使用 Nacos 作为管控命令下发通道,从而具备微服务同单元优先调用以及数据库访问连接切换能力(参见使用文档[6])。
  • 中间件和数据库:
  • 云上部署 MSE 托管 ZK/Nacos 注册中心、云数据库 Redis 和 RDS,建议使用跨可用区部署高可用版本,具备同城双活容灾能力。
  • 若存在某应用仅 IDC 部署的情况,需要配置注册中心的服务同步(参见使用文档[7])。
  • 配置云数据库 Redis/RDS 和自建 Redis/MySQL 的数据同步(参见使用文档[8])。

改造后的应用部署架构

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

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

容灾能力

  • RPO:<=1min(依赖于 DTS 同步性能)
  • RTO:<=1min(依赖于 DTS 同步延迟,MSHA 组件实现秒级切换。整体 RTO<=1min)

容灾能力验证

基于 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 故障演练产品注入真实故障,来验证故障场景业务容灾能力是否符合预期。

原文链接

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统是如何保护自己的? CPU与保护模式

作者 | 陆小凤 在回答这个问题之前&#xff0c;你可能会首先想&#xff1a;为什么操作系统需要保护自己呢&#xff1f; 操作系统其实就是一个大管家&#xff0c;负责给应用程序搭建舞台&#xff0c;好让程序们过好自己的一生&#xff0c;但偏偏有不听话的程序可能想抢操作系统的…

如何快速调度 PTS 的百万并发能力

简介&#xff1a;压测是通过模拟用户行为对业务系统发起请求&#xff0c;测算出系统的承载能力&#xff0c;并对系统做一次全面的体检&#xff0c;压测后可根据压测表现优化系统瓶颈&#xff0c;防止出现线上故障。 作者&#xff1a;灵苒 在实际的业务场景中&#xff0c;压测…

架构师说低代码:走出半生,归来仍是“毒瘤”!

当今世界正在经历数字化与智能化的发展蜕变&#xff0c;其中软件开发技术作为推动数字化转型的必要支撑&#xff0c;成为企业变革的重要推手。云原生作为产业数字化的关键技术之一&#xff0c;催生出低代码等软件开发模式&#xff0c;让开发逐渐走向低门槛、迭代快、可扩展。今…

网关流控利器:结合 AHAS 实现 Ingress/Nginx 流量控制

简介&#xff1a;微服务的稳定性一直是开发者非常关注的话题。随着业务从单体架构向分布式架构演进以及部署方式的变化&#xff0c;服务之间的依赖关系变得越来越复杂&#xff0c;业务系统也面临着巨大的高可用挑战。 作者&#xff1a;涂鸦 微服务的稳定性一直是开发者非常关…

云钉一体加速,阿里云计算巢与钉钉深度融合、共建应用新生态

简介&#xff1a;云合计划再升级&#xff0c;“云钉一体”战略按下加速键。 1月13日&#xff0c;阿里云宣布云合计划再升级&#xff0c;计算巢与钉钉深度融合互通&#xff0c;实现一键上云、一键上钉钉&#xff0c;助力软件厂商更快地完成技术升级&#xff0c;更好地专注于自身…

DevStream 进入 CNCF 沙箱,探索云原生时代的高效 DevOps 实践

2022 年 6 月 15 日&#xff0c;云原生计算基金会 (CNCF) 宣布 DevStream 正式成为 CNCF 沙箱&#xff08;Sandbox&#xff09;项目。 DevStream 是一个开源的 DevOps 工具链管理器&#xff0c;可以通过一个简单的配置文件&#xff0c;将软件研发生命周期中各环节的 DevOps 工…

阿里云何万青:南坡VS北坡,阿里云高性能计算行业实践

简介&#xff1a;北坡模式&#xff1a;借助于云上大计算性能突破来提供HPC服务&#xff0c;切入的重点更加聚焦于云服务。 随着数字化转型的深入&#xff0c;行业应用对算力提出更高要求。为满足不同行业灵活的业务形态与计算需求&#xff0c;以云计算技术为服务模式创新的技术…

双引擎驱动Quick BI十亿数据0.3秒分析,首屏展示时间缩短30%

简介&#xff1a;在规划中&#xff0c;Quick BI制定了产品竞争力建设的三大方向&#xff0c;包括Quick&#xff08;快&#xff09;能力、移动端能力和集成能力。针对其中的产品“报表查看打开慢”“报表开发数据同步慢”等性问题开展专项战役——Quick战役&#xff0c;以实现展…

Quick BI产品核心功能大图(六)开放集成

简介&#xff1a;企业想要拥有领先的数据分析能力&#xff0c;自研往往需要投入巨大的人力和财力。 Quick BI作为唯一一个连续两年入选Gartner魔力象限的中国BI产品&#xff0c;具备强大的全链路开放集成能力&#xff0c;可以轻松的与企业原有系统匹配融合&#xff0c;帮助企业…

低复杂度 - 服务网格的下一站

作者 | Addo Zhang来源 | 云原生指北译者&#xff1a;作为一个曾经在新造车公司的基础架构团队任职&#xff0c;为支持公司的“互联网基因”和“数字化转型”落地了云原生基础设施平台&#xff0c;并在尝试采用服务网格未成的我来说&#xff0c;看到这篇文章深有感触。尤其是文…

ADBPGGreenplum成本优化之磁盘水位管理

简介&#xff1a;本文我们将通过一个实际的磁盘空间优化案例来说明&#xff0c;如何帮助客户做成本优化。 作者 | 玉翮 来源 | 阿里技术公众号 一 背景描述 目前&#xff0c;企业的核心数据一般都以二维表的方式存储在数据库中。在核心技术自主可控的大环境下&#xff0c;政企…

阿里云图数据库GDB V3引擎发布,加速开启“图智”未来

简介&#xff1a;无论是学术界还是产业界&#xff0c;都对图数据库有比较高的预期。Gartner发布的《2021年十大数据和分析技术趋势》中提到&#xff1a;“到2025年图技术在数据和分析创新中的占比将从2021年的10%上升到80%。”应用需求推动着技术的发展&#xff0c;在GDB V3的引…

阿里云EMR Remote Shuffle Service在小米的实践

简介&#xff1a;阿里云EMR自2020年推出Remote Shuffle Service(RSS)以来&#xff0c;帮助了诸多客户解决Spark作业的性能、稳定性问题&#xff0c;并使得存算分离架构得以实施&#xff0c;与此同时RSS也在跟合作方小米的共建下不断演进。本文将介绍RSS的最新架构&#xff0c;在…

Spring Boot Serverless 实战系列 | 性能调优

简介&#xff1a;Spring Boot Serverless 实战系列第四篇来啦&#xff0c;本文将向大家介绍如何对 Serverless 应用进行性能调优。 SpringBoot 是基于 Java Spring 框架的套件&#xff0c;它预装了 Spring 的一系列组件&#xff0c;让开发者只需要很少的配置就可以创建独立运行…

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

简介&#xff1a;本篇文章主要介绍 RocketMQ 的可观测性工具在线上生产环境的最佳实践。RocketMQ的可观测性能力领先业界同类产品&#xff0c;RocketMQ 的 Dashboard 和消息轨迹等功能为业务核心链路保驾护航&#xff0c;有效应对线上大规模生产使用过程中遇到的容量规划、消息…

30人的产研团队如何高效协同?

简介&#xff1a;工具选型及使用建议对于中小企业&#xff0c;基本都不会自己搭建服务器和机房进行部署&#xff0c;而是选择各大云平台&#xff0c;选择一款SaaS项目管理工具可以极大的降低运维成本。 作者介绍&#xff1a;以诺行CTO 刘自强 团队使用云效3年 团队协作需求 …

从 Flink Forward Asia 2021,看Flink未来开启新篇章

简介&#xff1a;本文将对FFA Keynote议题作一些简单的归纳总结&#xff0c;感兴趣的小伙伴们可以在FFA官网[2]找到相关主题视频观看直播回放。 作者 | 梅源&#xff08;Yuan Mei&#xff09; 来源 | 阿里技术公众号 律回春晖渐&#xff0c;万象始更新&#xff0c;这句诗用来形…

从需求到开源,如何做到刮目相看?

作者 | &#x1f47d;来源 | 前端Sharing一、一切根源都从无厘头需求开始最近在开发业务项目的时候&#xff0c;产品小姐姐突然来到我身边&#xff0c;然后就对着电脑一顿操作&#xff0c;具体场景大致是这样的。场景一&#xff1a;如上图所示&#xff0c;当在数万级别的数据中…

如何高效完成ECS多环境部署?

简介&#xff1a;通过本文&#xff0c;你可以了解到&#xff0c;如何通过云效流水线有效拉通开发与运维&#xff0c;打破二者之间的壁垒墙&#xff0c;让开发与运维高效联动。在软件开发和部署过程中&#xff0c;我们的软件往往需要在不同的运行环境中运行&#xff0c;例如&…

技术探秘: 360数科夺得ICDAR OCR竞赛世界第一

ICDAR&#xff08;国际文档分析与识别会议&#xff09;是OCR识别领域最权威的会议之一。近期&#xff0c;360数科在ICDAR2019-SROIE(Results - ICDAR 2019 Robust Reading Challenge on Scanned Receipts OCR and Information Extraction - Robust Reading Competition) 榜单上…