乐趣区

关于devops:阿里云技术专家邓青琳云上跨可用区容灾和异地多活最佳实践

2022 年 7 月 4 日,【可观测,才牢靠——云上自动化运维 CloudOps 系列沙龙_第一弹】正式推出,间断四天,四大主题分享,最初一位分享的讲师是阿里云弹性计算技术专家邓青琳,他带来的主题分享是《云上跨可用区容灾和异地多活》,以下是他的演讲内容整顿,供大家阅览:

01 零碎容灾

提到容灾,必然会关联到故障。常见的故障类型有变更、硬件故障、断电断网以及自然灾害,产生的频率顺次升高。但产生频率低并不意味着不重要,断电断网或自然灾害产生的故障往往是致命的。

2021 年 3 月 10 日,欧洲最大的云服务公司 OVH 位于法国的机房着火,导致数据中心被齐全烧毁,以致 350 万个网站下线,局部客户的数据永恒失落,无奈复原。OVH 公司 CEO 在推特上对于此次火灾的阐明中提醒客户启用本人的容灾计划。由此可见,即便利用部署在云上,也无奈防止市政方面的故障比方断电断网以及极其自然灾害引起的故障,因而也须要做好相应的容灾计划。

目前次要的容灾类型能够分为以下三类:

① 同城(跨可用区),次要分为同城灾备、同城双活以及同城多活。
② 异地(跨地区),次要分为异地双读、异地利用双活以及异地双活。
③ 其余类型,包含两地三核心、两地三活以及单元化。

没有一套容灾计划能够实用于所有场景,咱们须要结合实际业务发展趋势、业务零碎的特色以及可能投入多少资源老本等方面综合评估,最终选出最适宜的容灾架构计划。

02 支流容灾架构

容灾能力次要有 RPO 和 RTO 两个评估指标。
RPO 指应产生故障时能忍耐数据失落的最大水平。零碎越重要,要求 RPO 越小。如果做数据备份,RPO 越小意味着数据的备份频率更高,比方个别的零碎可能一天备份一次,十分重要的零碎可能一小时备份一次;如果做数据同步,RPO 越小意味着要求数据同步链路的可靠性更高或提早更低,对整个生产环境和网络的压力越大,须要的老本也更高。

RTO 指利用从呈现故障到故障复原能承受的最大工夫。零碎越重要,要求 RTO 越小。

上图右侧为国家信息委员会制订的劫难恢复能力等级,分为 1-6 六个等级。其中 6 为要求最严格的等级,RTO 要求为数分钟,RPO 要求为 0,意味着零碎数据不容许失落。

上图为目前四个支流容灾架构的比照。

1、同城灾备

同一个城市至多部署两个机房,备机房平时不提供服务能力,次要作为主机房的备份,主备之间数据采纳单向同步的模式。

劣势为部署简略,将同一套架构齐全复制到另外机房即可,数据做单向同步,对业务的革新极少。

劣势为备数据中心存在资源节约的状况;关键时刻不敢切流,容易呈现版本、参数、操作系统不统一等状况;RTO 须要十分钟级。

同城灾备架构做容灾切换时,首先须要做数据库的主备切换。如果是冷备状态,还须要启动应用服务,最上层 DNS 也须要做解析的切换,整过程须要十几分钟。

2、同城双活

两个机房同时对外提供服务。为了数据的一致性,备数据中心所有波及到数据层面的操作都会打回到主数据中心,因而两个数据中心的间隔要求小于 50km,RT 小于 2ms。如果申请落在备数据中心,则波及到跨机房操作。如果跨机房的 RT 十分大,数据申请在主、备数据中心的性能差别也会十分大,无奈提供很好的用户体验。此架构下数据采纳单向同步形式。

劣势为解决了备数据中心资源节约的问题,并且因为日常放弃提供服务状态,呈现故障时能够随时切换,只需做数据库的主备切换,RTO 为分钟级。

劣势为局限在同城区域内,间隔受限。

3、异地利用双活(伪异地双活)

它与同城双活有很多相似之处,惟一的区别在于备数据中心的读写进行了拆散,读操作间接读备数据中心,而写操作为了保证数据一致性,将打到主数据中心的数据库上。要求两个数据中心间隔小于 100km,RT 小于 7ms。如果两个机房的间隔过远,申请在两个机房之间的性能体现差别会很大。此架构比拟适宜读多写少的零碎。

劣势为具备了肯定水平的地区级别容灾能力,尽管架构要求间隔小于 100km,然而对于大部分地级城市而言,100km 曾经可能笼罩两个地级城市,RTO 只需分钟级别。

劣势为业务零碎须要可能承受肯定的跨机房网络提早;另外,业务须要进行肯定水平的革新,次要为读写拆散操作方面;容灾间隔仍然受到十分大的限度,因而称其为“伪异地双活”。

4、异地双活

真正的异地双活能够承受两个机房之间的间隔大于 1000km,RT 超过 10ms。为了解决此前两个机房中的性能差别,咱们应用了单元化的解决方案。单元化指申请落到某单元后,所有申请操作都在单元内闭环解决,防止波及跨机房操作。因此不论申请打到哪个机房都能保障基本一致的解决效率,也能保障良好的用户体验。为了实现单元化,要求各个机房之间数据双向同步。

劣势为容灾能力十分强,简直不受限制,RTO 为分钟级别。

劣势为部署简单,因为波及到数据的双向同步,不仅是数据库,还会波及到比方 Redis 缓存、Rocket MQ、有状态中间件等;业务革新老本十分高,波及到单元化和接入层等维度。

03 弹性计算在容灾上的实际

上图为同城双活最后的架构图。

用户拜访域名时,申请会打到公网 SLB 上。SLB 在两个可用区之间有主备的容灾能力,会路由到某可用区内。可用区内的 SLB 再将申请转发到具体的业务服务器上,业务服务器会将所有数据操作打到主数据中心,主备之间的数据进行单向同步,底下零碎操作所有地区的所有云产品。

此时的零碎具备了跨可用区级别的容灾能力,RPO 小于 100 ms,RTO 小于 10 min。为了晋升利用的性能,尽量避免产生跨机房的 RPC 调用,咱们还设计了 RPC 调用同机房优先的策略。

此架构的不足之处在于,不具备地区级别的容灾能力;其次,零碎会操作所有 region 的云产品,一旦零碎呈现问题,会影响所有地区的云产品操作,影响面十分大;海内用户拜访时速度较慢,因为零碎部署在国内,海内用户拜访波及到跨境问题,重大时甚至打不开页面。

为了解决上述版本的有余,咱们引入了第二版架构,其外围为单元化。单元化指 region 的所有操作系统都部署在本 region 内,region A 服务不会波及到 region B 的资源操作。region 外部为双可用区的容灾能力。

此架构与最后版本惟一区别在于,此版本在操作云产品时,只操作本 region 的云产品。万一呈现问题,故障面较为可控,只会影响本 region,不会影响其余 region,放大了故障的爆炸半径。

此版本单元外部仍然为跨可用区级别的容灾能力,RPO 小于 100 ms,RTO 小于 10 min,仍然保留了 RPC 调用同机房优先的策略。

其不足之处为,容灾层面仍然不具备地区级别的容灾能力;其次,用户体验十分差,比方在零碎上操作云产品资源时,如果波及到地区的切换,整个页面须要从新刷新;另外,跨境拜访慢的问题仍然存在。

为了解决上述有余,咱们将架构演进至第三版,外围为全球化,实质上属于异地多活架构。单元化时每个单元都有域名对外提供服务;而全球化后,将所有域名都对立成一个域名对外提供服务,由最上层的 DNS 做智能就近解析。

Region 外部仍然为可用区级别的容灾。尽管在寰球部署了多个地区,但地区内也分为主地区和单元地区。所有数据的写操作都会打回到主核心,单元地区的写操作会回流到主地区。写操作打回核心之后,核心数据会单向同步到其单元地区。如果是双向同步,会导致同步的拓扑关系造成非常复杂的网状模式,因而采纳单向同步模式。

此架构具备了地区级别的容灾能力,提供了智能的就近解析能力,用户体验更好,不须要在各个域名之间重复跳转。

而因为地区部署十分多,数据同步耗时较久,只可能确保 RPO 小于 10 s,RTO 小于 10min。地区单元外部仍然保留 RPC 同机房调用优先的策略。呈现故障时,会就近申请路由到另一地区。

此架构部署简单,波及到数据同步问题,因而须要对系统做肯定水平的革新,比方写操作要回流到核心,数据被改之后也会波及到缓存的更新等;此外,所有写操作都要回流到核心,因而写操作仍然为跨可用区容灾,没有真正做到跨 region 的容灾能力。

04 云上容灾建设

云上容灾的建设次要分为三个阶段,别离是分析阶段、设计阶段和施行阶段。

分析阶段须要思考业务是否须要做容灾,须要做到什么水平。比方零碎初始阶段更关注的是用户量,用户量做到肯定水平之后,须要关怀零碎的稳定性,最初思考容灾能力。此外,做容灾时须要将零碎业务离开来梳理,是否为外围业务、可能承受的 RPO 是多少等。

设计阶段会基于分析阶段得出的数据进行设计。

施行阶段的落地过程波及到团队合作、组织层面的资源投入,更重要的是要将真正遇到故障之后如何复原的预案进行具体设计。此外,还须要做常态化的容灾演练,容灾零碎的保护,包含人员的培训等,都是十分宏大的系统性工程。

阿里云提供了十分多云产品和服务帮忙用户高效快捷地实现容灾方面的建设。

如果零碎还未部署在云上,能够通过服务器迁徙核心疾速将整个零碎迁徙到云上。它可能反对多种平台、多种环境的迁徙,也不依赖源服务器的底层环境,可反对不停机的迁徙,在管制台上通过白屏化的配置即可实现所有操作。过程中数据传输有足够的平安保障,反对断点续传、增量迁徙。

如果零碎曾经在云上,阿里云还提供了资源编排能力,确定好筛选条件后即可疾速将零碎复制到另外的地区 / 可用区。

服务部署实现后,能够应用数据传输服务 DTS 进行数据同步或数据备份。DTS 十分弱小,反对同构或异构数据源之间的迁徙,也反对不停服的迁徙。在数据源之间反对单向同步和双向同步。

多活容灾 MSHA 可能对业务做革新,外部集成 DTS 等数据同步产品,能够十分疾速地实现业务上整体容灾能力的建设,包含从单个地区到多个地区、从单个云到多云、从主备到多活容灾架构等。

另外,MSHA 积攒了十分多实践经验,包含私有云、专有云、混合云等。它还提供了控制台,在管制台上可能实现容灾的治理和切换工作。

云解析 DNS 基于智能 DNS 解析做就近拜访。目前支流的 DNS 解析服务都可能提供较为智能的解析线路,比方州级别、地区级别、国家级别等。

云数据库针对 RDS 的高可用版本和 Redis 的双可用区版本都提供了可用区级别的主备能力,用户无需本人进行解决。

异地场景不同 region 之间的网络能够应用云企业网将多个基于不同 VPC 的网络连通。

Q&A 环节,观众发问

Q1 可用区的容灾和传统容灾最次要的区别是什么?

答:传统容灾指同城灾备,备数据中心服务平时不对外提供服务,次要提供备份的作用。劣势为对业务革新十分小,部署简略;劣势为浪费资源,且因为平时不提供服务,关键时刻不敢切流。同城双活还有一种组合状态,比方两地三核心,指在某一城市有两个可用区级别的机房同时对外提供服务的,而另一城市次要做灾备,平时不提供服务,比拟相似于同城双活和同城灾备在多个城市之间的组合。

Q2 异地多活如何保证数据同步?

答:数据库自身就有同步的能力,云上也提供了相干产品比方 DTS,可能帮忙用户更简略地实现同步。针对中间件比方 Redis、RocketMQ 等,DTS 也提供了同步的能力。当然,开源业界也有十分多解决方案,但须要波及到运维工作。

Q3 异地多活和同城多活数据同步的区别是什么?

答:如果是同城多活,间接应用云上的 RDS 或 Redis,由高可用版本和双可用区版本间接提供同城级别的容灾能力,用户无需本人做数据的同步建设;而异地多活、异地双活波及到跨 region,RDS 或 Redis 无奈提供对应的能力,因而,用户须要借助比方数据传输服务 DTS 建设同步链路,或本人实现相干的数据同步组件。云产品提供了十分丰盛的容灾能力,但次要聚焦在 region 外部。

Q4 在国际化的案例里,是异地接入的全副用户都回到原主核心,还是仅写 DB 回到原主核心?

答:写次要指 App 承载的数据读写,所有地区的写操作都会打到核心地区,核心地区写到数据库之后,再通过 DTS 的同步能力将数据同步到各个地区。同时,DTS 提供了 Binlog 的音讯能力,各个单元订阅主数据中心的 DTS  binlog 音讯服务,从而得悉何时须要废除缓存或从新刷新。

Q5 什么样的零碎须要革新?

答:有一些零碎能够实现单元化革新,然而有一些零碎比方库存服务,因为库存扣减要求全局强一致性,因而无奈实现单元化部署。因而,在分析阶段咱们须要判断零碎是否承受单元化革新或零碎 RTO、RPO 的要求。不同的业务零碎、不同的场景抉择的容灾架构都是不同的,须要结合实际的业务场景来抉择。

点击这里,观看嘉宾的精彩视频回放。

近期流动预报

【自动化,才高效——云上自动化运维 CloudOps 系列沙龙_第二弹】来袭,就在 7 月 25 日 -27 日,敬请期待。

自动化即是通过使用工具或零碎达到缩小、甚至是齐全取代人工的操作。在研发效力与运维工作中,自动化是降低成本、晋升效率必不可少的形式,自动化还能缩小人工带来的谬误,晋升团队满意度。因而,阿里云弹性计算云上自动化运维 CloudOps 系列沙龙,将以“自动化与智能化”作为第二弹的主题,分享相干思考与实际。收费报名通道曾经开启!即刻扫描下方海报中的二维码报名,进群还能取得最新讲师 PPT 材料。

沙龙小 Tips:观看直播时在弹幕区提出本人的疑难,被讲师抽中答复问题的同学,还会取得加湿器等精美礼品哦!同时在直播完结时填写问卷,也有机会取得便携玻璃杯等多重好礼。

退出移动版