如何基于AppActive 设计一套多数据中心应用多活方案

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 系统在运行过程中总是会遇到各种各样的问题,比如硬件故障,包括磁盘损坏、内存短路、智能系统损坏等;比如软件故障,包括容量不足、健康检查失效等;比如人为故障,包括错误配置、错误发布、删库跑路等;再比如不可抗力,包括地震、火山雷电、断电断网等。只要系统规模足够大或运营时间足够长,就一定会出现故常。因此,需要使用有效手段来应对和缓解故障。

 

如何基于AppActive 设计一套多数据中心应用多活方案

——邱康

AppActive 社区负责人

一、背景

image.png

系统在运行过程中总是会遇到各种各样问题,比如硬件故障,包括磁盘损坏内存短路、智能系统损坏等;比如软件故障,包括容量不足、健康检查失效等;比如人为故障,包括错误配置错误发布、删库跑路等;再比如不可抗力,包括地震、火山雷电、断电断网等。


只要系统规模足够大或运营时间足够长,就一定会出现故常因此,需要使用有效手段来应对和缓解故障。

image.png

上文提到的个故障类型,其中硬件故障一般是小规模问题,比如单台主机失效,但如果产生级联效应,则可能变成大规模问题。不可抗力故障往往会引起大规模问题。


针对不同规模、不同影响面故障,可以使用不同手段避免和缓解。比如主机级故障可以通过集群手段提高可用性或避免故障无状态应用可以通过集群化部署负载均衡来解决,有状态应用需要通过副本以及算法来解决软件故障可以使用热点隔离、限流降级、熔断、弹性伸缩等手段人为故障可以通过信息安全变更管控、质量保证等手段不可抗力需要通过容灾架构避免和缓解。与此同时,无论是小规模还是大规模问题,都需要监控和告警功能来辅助。


二、容灾架构选型

image.png

容灾架构大致可以分为以下几个类型


① 数据备份核心要点是数据定期备份,应用没有备份。故障发生时只能被动等待,故障恢复才能继续对外服务。


② 冷备应用没有备份,但基础设施存在,需要时可手工或自动拉起应用。故障发生时,即可拉起应用对外进行服务。


③ 温备:应用备份以最小集群部署并运行,但不对外提供服务。故障发生时,备份应用只需要Scale out 即可对外服务


④ 热备备多一步,应用备份对等部署。故障发生时,备份应用可以直接对外服务


⑤ 多活比热备更进一步多个站点对等部署,并同时对外提供服务。故障发生时,只需将故障站点流量切零即可。


容灾架构选型的核心在于 RPORTO成本以及性能,所以需要考虑每种架构指标综合进行架构选型


RPO 方面:数据备份 RPO 取决于备份周期,其余几种架构都是实时异步复制RPO 约等于0


RTO 方面:数据备份架构在故障发生时没有任何应对办法,因此需要小时级/天级备架构 0 拉起应用并不是容易,因此也需要小时级/天级只需要做 Scale out 可以实现小时级/分钟级热备可以实现分钟级/小时级;多活可以实现分钟级/秒级


资源价格方面:数据备份冗余量很低,因此资源价格较低备有冗余基础设施温备更多了冗余应用,因此资源价格略高;热备和多活应用对等部署冗余,资源价格最高。


资源利用率方面:数据备份冗余量低,因此资源利用率最高冷备相对略低一些;温备和热备中,温备资源利用率高,因为容量热备资源利用率最低,因为对等部署,但没有很好地利用多活相较于热备略高资源虽然是对等部署,但有被较好地利用。


复杂度方面:数据备份冷备都很低,温备比热备略高,因为故障发生时需要Scale out 操作多活复杂度最高,因为要实现多站点同时对外服务,需要流量调度数据冲突解决等一系列操作。


容量方面:数据备份单机房容量冷备温备热备容量都单机房或单地域局限多活理论可以实现机房水平扩展,因此容量最高。


切流信心方面:数据备份没有任何操作,所以切流信心为 NaN;冷备切流信心也非常低温备略高,虽然没有流量,但有应用一直在运行;热备切流信心更高,全量不需要额外操作多活切流信心最大多个站点对外同时部署,只需要做流量调度。


我们的需求为分钟级 RTP,因此只能选择热备和多活。另外,多活架构下多个站点同时对外服务,资源利用率更高关键时切流信心更足,而且潜在容量更大,因此最终在实际应用中选择多活架构

image.png

多活又分为异地多活和同城活。


同城多活机房 RT较小,所以数据库一般用主备避免数据一致性问题。应用多活本机房优先调用,可能存在跨机房调用,比如本机房provider 健康比例值低,调对面成功概率更大。故障时只需要做机房流量切零和数据库备切换,若数据库没问题则不需要进行主备切换。


异地多活机房 RT 不宜单写,尽量走本地数据库但由于存在多点写,需要解决数据冲突问题。其应用多活,尽量使用本机房封闭调用,但也可能存在跨机房调用,取决于具体多活方案。故障时做机房流量切零,也需要解决数据冲突问题。


以上两个架构选型核心要点在于是否需要应对城市级故障。


三、AppActive 异地多活方案

image.png

AppActive 提供多活方案整体思路对业务进行类型划分,并据此对数据中心进行类型划分。


如上图,可将业务分为三类


全局业务一般是强一致性业务,此类业务在中心单元读;


核心业务做单元化拆分业务部分特定流量在特定单元写。


共享业务被核心业务高频依赖的全局业务读服务,在中心单元写在普通单元读。


业务定义,即可看到单元定义,中心单元需要承载全体业务单元其他单元普通单元。

image.png

AppActive 核心理念是基于隔离冗余。


数据在多个机房之间做实时复制,这是 RPO 约等于 0 核心要点。上图可见,流量从终端到达网关之前是乱,有灰色,有橙色。到网关后,对流量进行分片,比如橙色流量打到左边机房,灰色流量打到右边机房,从网关到服务到数据库,都符合分片规则,即特定流量一定是在特定机房内完成整个流量请求生命周期。这能带来以下几点好处:


一点,整个请求生命周期在机房内完成,业务机房内是独立,不依赖于另一个机房。另一个机房下线后,机房依然能够独立对外服务


第二点,不存在跨机房请求,请求链路缩短,性能更好用户体验更佳。


每一层做基于隔离冗余时,需要依赖多活规则。多活规则是一系列定义,比如机房属于哪个单元,流量如何染色,哪些流量属于哪些单元,以及服务类型定义、数据库定义等。多活规则通过多活Channel 下发到每个机房应用。

image.png

请求进入机房后,第一跳是网关当前网关支持 Nginx Tengine。其改造要点有三:


网关引入 AppActive 插件,进行多单元部署


业务在不同单元地址放入不同 Upstream 比如一般会将应用放在 Upstream 由于是多机房部署,所以要做区分,流量可打到不同机房。


向网关推送多活规则。


改造后的效果如下:


日常态不同标记或分片的流量分流到不同单元


故障态只需将切零多活规则推送给网关,网关即可将所有流量打入非故障单元,实现 failover 效果。

image.png

当前微服务支持 Dubbo Spring Cloud


微服务改造要点有四:


引入 AppActive 应用 SDK ,并对应用进行多单元部署。


对各类型服务进行打标,分为中心服务、普通服务和单元服务,分别对应前文的全局业务共享业务核心业务。不同框架的打标方式不同,具体取决于微服务框架。


仅当存在跨单元调用时单元间进行服务同步,比如全级业务可能会存在跨单元调用。


向应用推送多活规则。


改造后效果如下:


日常态不同分片流量按照多活规则分流到不同单元。如果没有规则,认为普通服务,按照本单元优先规则发起调用。


故障态切零规则推送给应用Consumer 接收到流量后将请求全部打到非故障单元 Provider 实现 failover 效果。

image.png

数据层当前支持 MySQL


核心改造要点有四:


引用 AppActive应用 SDK 及其Driver 然后将应用进行多单元部署


将不同类型数据库进行打标分为普通数据库和单元数据库。


在单元间进行数据同步。


向应用推送多活规则


改造后效如下:


日常态单元数据库接受多活规则中属于本单元流量写请求普通数据库接受所有请求。


故障态切流过程中,因为数据可能存在同步延迟,如果直接将流量切过,可能造成双写,产生脏数据。因此切流过程中要禁止数据库的读写,直到数据同步追后才放开,避免数据。

image.png

方案实施后可以获得以下三个方面收益:


第一,容灾方案可应对多种故障场景,比如公网网络故障、机房内部网关故障、业务应用、中间件故障多个机房之间网络故障甚至机房整体故障。对于故障可实现分钟级 RTO 业务恢复时间和具体故障恢复时间解耦比如 AB 两个机房同时对外服务B 机房挂了此时将流量切走业务即可恢复,机房可能还恢复。


第二容量,基于多活路由策略,机房之间不存在混乱的依赖关系,因而机房伸缩更简单解决单机房容量不足问题,比如机器数量、带宽容量连接数。


第三创新试验田基于综合路由规则,可以实现完整灰度策略从网关到服务接口到最后数据库库表结构都可做灰度。其次,爆炸半径可控,因为始终只影响单元机房服务一部分用户,可以实施完整故障演练。此外,对于某些重点业务可以使用独立机房承载,实现业务重保。

image.png

未来,我们期望AppActive 对市面上主流框架都进行支持,主要将从网关、应用和数据三个方面进行。网关方面包括 NginxKongTengine应用层包括 Spring Cloud DubboSofa,还有消息数据SDKAgent 以及Mesh形态支持都在规划范围内数据方面主要包括数据同步和注册中心同步。

 

 

相关文章
|
6天前
|
人工智能 运维 监控
智能运维在现代数据中心的应用与挑战
随着云计算和大数据技术的迅猛发展,现代数据中心的运维管理面临着前所未有的挑战。本文探讨了智能运维技术在数据中心中的应用,包括自动化监控、故障预测与诊断、资源优化等方面,并分析了当前面临的主要挑战,如数据安全、系统集成复杂性等。通过实际案例分析,展示了智能运维如何帮助数据中心提高效率、降低成本,并提出了未来发展趋势和建议。
|
5月前
|
SDN 网络虚拟化 虚拟化
云数据中心中的SDN/NFV应用
【6月更文挑战第9天】计算和存储虚拟化技术在云计算IDC中已基本满足需求,但网络成为新瓶颈,主要问题包括虚拟化环境下的网络配置复杂度增加、拓扑展现困难和无法动态调整资源。
|
6月前
|
存储 运维 大数据
提升数据中心能效:现代冷却技术的应用与挑战
在信息技术迅猛发展的今天,数据中心作为核心支撑设施,其能耗问题日益凸显。尤其是冷却系统,作为确保数据中心正常运行的关键部分,消耗了大量的能源。本文聚焦于现代数据中心冷却技术,探讨了提高能效的策略和面临的挑战。通过分析不同冷却方案的工作原理及应用场景,指出优化数据中心冷却效率的必要性,并讨论了实施过程中可能遇到的问题及解决思路。
|
6月前
|
网络安全 数据中心 网络架构
【专栏】标准19英寸机架及其尺寸单位1U和2U在数据中心和通信机房中的应用
【4月更文挑战第28天】本文介绍了标准19英寸机架及其尺寸单位1U和2U在数据中心和通信机房中的应用。19英寸机架是国际标准,宽度48.26厘米,深度可定制。1U等于4.445厘米,2U是1U的两倍。1U设备适用于空间有限的情况,2U则提供更大空间和更好的散热。选择机架时需考虑空间、散热和电力需求,设备布局要保证散热和电缆管理。理解这些标准对于优化空间利用和系统管理至关重要。
661 0
|
人工智能 运维 大数据
技术、应用、突破——一场液冷研讨会,助你把握数据中心液冷产业未来122.228.85
技术、应用、突破——一场液冷研讨会,助你把握数据中心液冷产业未来122.228.85
|
存储 容灾 安全
《医保行业容灾演练云上技术白皮书》——第三章 医保云容灾建设方案——3.2 省级数据中心建设框架
《医保行业容灾演练云上技术白皮书》——第三章 医保云容灾建设方案——3.2 省级数据中心建设框架
148 0
|
tengine 容灾 中间件
如何基于 AppActive 设计一套多数据中心应用多活方案 | 学习笔记
快速学习如何基于 AppActive 设计一套多数据中心应用多活方案
如何基于 AppActive 设计一套多数据中心应用多活方案 | 学习笔记
|
人工智能 边缘计算 算法
AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《RPA+AI助力政企实现智能时代的人机协同》、《5G风口到来,边缘计算引领数据中心变革》、《数字化时代金融市场与AI算法如何结合?》
AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《RPA+AI助力政企实现智能时代的人机协同》、《5G风口到来,边缘计算引领数据中心变革》、《数字化时代金融市场与AI算法如何结合?》
AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《RPA+AI助力政企实现智能时代的人机协同》、《5G风口到来,边缘计算引领数据中心变革》、《数字化时代金融市场与AI算法如何结合?》
|
8天前
|
存储 运维 区块链
区块链技术对数据中心的潜在影响
区块链技术对数据中心的潜在影响