乐趣区

关于java:混合云应用双活容灾最佳实践

简介:本文会通过一个业务 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 演练筹备

进入 MSHA 控制台,在左侧菜单栏抉择监控大盘。页面顶部,下拉抉择切换到理论应用的命名空间。

查看页面中的各项监控指标。

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

7.2 利用故障注入

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

进入 Chaos 故障演练产品控制台[9],顶部抉择切换到相应地区,左侧导航栏抉择我的空间。

在我的空间抉择配置好的演练(50% 概率网络丢包),而后单击执行演练。

故障注入胜利后,关上电商首页或进行下单,有概率呈现拜访异样,合乎预期。

7.3 切流复原

在北京单元的商品利用故障的状况下,能够通过 MSHA 切流性能,将云上入口流量切 0,疾速复原业务。

预期

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

切流操作

  1. 进入 MSHA 控制台,在左侧导航栏抉择切流 > 异地利用双活切流。
  1. 在切流页面,对北京单元点击一键切零。

  1. 单击执行预查看,在切流查看区域,单击确认,开始切流。
  1. 在切流工作页面的以后状态显示切流实现,示意切流已胜利。

  1. 刷新电商 Demo 首页,屡次拜访均能失常展现,合乎预期。

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


7.4 数据库故障注入

从下面调用链能够看出,杭州单元内的利用依然拜访的是北京单元的 Redis、MySQL 数据库。咱们持续应用 Chaos 故障演练 [10] 产品对北京单元的 Redis、MySQL 数据库注入故障,制作数据库故障场景。

故障注入胜利后,关上电商首页或进行下单始终拜访异样,合乎预期。

7.5 切换数据库进行复原

在北京单元的数据库故障的状况下,能够通过 MSHA 数据库切换性能,将利用拜访的 Redis/MySQL 的连贯切换至杭州单元的数据库(切换过程中会期待数据同步追平,期间会短暂禁写)。

预期

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

切流操作

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

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

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

  1. 主备切换详情页,能够看到切换进度和切换后果,工作进度 100% 后,示意切换实现。

  1. 商品、订单、购物车数据库都主备切换实现后。屡次拜访电商 Demo 首页或进行下单,发现均已失常,主备切换后业务性能完全恢复,合乎预期。

总结

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

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

退出移动版