【摘要】云原生应用深入到企业各个业务场景,云原生正在走向分布式化,跨云跨域统一协同治理,保证一致应用体验,这些新的需求日益凸显。而容灾是确保服务高可用的保障,但即使应用部署在云上,也无法避免市政方面的故障,因此需要做好相应的容灾方案。本文将介绍跨云容灾技术的基本概念和原理,深入探讨UCS在跨云容灾场景下的能力,最后通过跨云容灾切换场景的演示让您体验UCS跨云容灾解决方案的强大功能和操作简便性。
文章目录
-
- [一 、跨云容灾技术的概念与原理](#一 、跨云容灾技术的概念与原理)
-
- [1. 多云、混合云部署已成为企业的普遍需求](#1. 多云、混合云部署已成为企业的普遍需求)
- [2. 影响IT系统的灾难类型](#2. 影响IT系统的灾难类型)
- [3. 业界主流容灾方案](#3. 业界主流容灾方案)
- [4. 容灾建设:寻找成本与业务影响的平衡点](#4. 容灾建设:寻找成本与业务影响的平衡点)
- [5. 业务多云部署架构下面临的关键问题](#5. 业务多云部署架构下面临的关键问题)
- 二、UCS跨云多活容灾方案介绍
-
- [1. 应用跨云多活的关键技术](#1. 应用跨云多活的关键技术)
- [2. 流量层多活:流量统一接入管理](#2. 流量层多活:流量统一接入管理)
- [3. 流量层多活:全域应用流量治理](#3. 流量层多活:全域应用流量治理)
- [4. 应用层多活:跨云统一部署管理、统一监控运维](#4. 应用层多活:跨云统一部署管理、统一监控运维)
- [5. 应用层多活:云原生容器跨云统一调度,优化资源使用](#5. 应用层多活:云原生容器跨云统一调度,优化资源使用)
- [6. 应用层多活:利用SDK实现应用的访问数据自动切换](#6. 应用层多活:利用SDK实现应用的访问数据自动切换)
- [7. 数据层多活:跨云数据多活同步,支持自由倒换](#7. 数据层多活:跨云数据多活同步,支持自由倒换)
- [8. 基础设施层多活:跨云、跨地域集群统一接入、全生命周期管理](#8. 基础设施层多活:跨云、跨地域集群统一接入、全生命周期管理)
- [9. 基础设施层多活:云原生应用和数据一致性灾备、跨云一键迁移](#9. 基础设施层多活:云原生应用和数据一致性灾备、跨云一键迁移)
- [10. 应用多活容灾架构:以 UCS+MAS+DRS 为核心的全栈多活容灾能力](#10. 应用多活容灾架构:以 UCS+MAS+DRS 为核心的全栈多活容灾能力)
- [11. 应用容灾典型架构一:多云多活,数据库手动切换,实现低成本的业务高可靠](#11. 应用容灾典型架构一:多云多活,数据库手动切换,实现低成本的业务高可靠)
- [12. 应用容灾典型架构二:应用跨云多活数据库主备全流程故障自动切换](#12. 应用容灾典型架构二:应用跨云多活数据库主备全流程故障自动切换)
- [13. 跨云多活:ROI最优解](#13. 跨云多活:ROI最优解)
- 三、UCS应用跨云多活部署场景演示
- 四、总结
一 、跨云容灾技术的概念与原理
1. 多云、混合云部署已成为企业的普遍需求
根据调查报告显示:
-
92%的被调查者采用了多云策略。
-
82%的受访者同时使用公有云+私有云。
-
当前平均每个调查者使用2.6 个公有云和2.7 个私有云。
-
同时在额外验证1.1个公有云 和2.2个私有云。
由此可见,大量用户在使用多云,多云战略也愈加明显。
多云方案的价值
这么多年的实践验证,多云方案的价值可总结为:
-
优化资本支出。
-
增加资源透明。
-
提高服务质量。
-
提供更高可用性。
-
快速响应灵活敏捷。
-
快速构建差异功能。
-
避免供应商锁定。
-
业务在云间冗余。
2. 影响IT系统的灾难类型
从统计中图中也看出,不同的故障类型所造成的损失和发生的频率都不一样,还有些故障类型在不同区域中出现。根据统计显示:
- 97%的局部故障会导致企业对外业务运行中断。
- 3%的全局故障引起企业数据丢失,可能导致企业消亡。
3. 业界主流容灾方案
没有一套容灾方案可以适用于所有场景,我们需要结合实际业务发展趋势、业务系统的特征以及能够投入多少资源成本等方面综合评估,最终选出最适合的容灾架构方案。
上图为目前四个主流容灾方案的对比。
-
业界趋势 :以离线冷备容灾为基础 ,逐渐从传统主备容灾向双活、多活容灾方向演进。
-
目标追求:高可用性\持久性、RTO\RPO\ROI最优化、资源可扩展性、数据同步时效性&一致性、容灾演练自动化。
这里先普及一下容灾能力的两个评价指标:RPO和RTO。
RTO(Recovery Time Objective)
RTO是指灾难发生后,从IT系统崩溃导致业务停顿开始,到IT系统完全恢复、业务恢复运营为止的这段时间长度,即从出现故障到故障恢复能接受的最大时间。RTO用于衡量业务从停顿到恢复的所需时间。系统越重要,要求 RTO 越小。
RPO(Recovery Point Objective)
IT系统崩溃后,可以恢复到某个历史时间点,从历史时间点到灾难发生的时间点的这段时间长度就称为RPO。RPO用于衡量业务恢复所允许丢失的数据量。系统越重要,要求 RPO 越小。如果做数据备份,RPO越小意味着数据的备份频率更高,比如一般的系统可能一天备份一次,非常重要的系统可能一小时备份一次;如果做数据同步,RPO越小意味着要求数据同步链路的可靠性更高或延迟更低,对整个生产环境和网络的压力越大,需要的成本也更高。
从上图可以直观看出,RPO是 "备份时间点" 到 "IT系统出现故障" 的时间长度,RTO是指 "IT系统出现故障" 到 "IT系统恢复正常" 的时间长度。
在RPO的这段时间内,存在一部分实际数据的丢失,所以一般认为RPO越小,丢失的数据量就越小。在RPO+RTO的这段时间内,本来有预期的业务数据增长,但由于IT系统故障需要时间修复,这部分的预期增长就损失掉了。可见RTO+RPO越小,对业务营收的损失也就越小。因此,越重要的业务越需要保证RPO和RTO趋近于0,当然所需要的投入也就越大。RPO和RPO也成为衡量灾难恢复的最核心指标。
数据冷备
-
RPO/RTO/可用性:分钟/小时&天级。
-
目标:应对现网业务数据恶意删除、误删除、损坏,丢失场景。
-
方案:硬件存储、S3\OBS等离线冷备。
-
优缺点:方案简单、业务透明、提升数据持久性能力;不足:恢复时效性极差。
主备容灾 (温备)
-
RPO/RTO/可用性:分钟/小时级/99.9%。
-
目标:应对主站灾难时,将流量切换至备站。
-
方案:业务主备对等部署,数据单向异步同步,主站承载100%流量。
-
优缺点:方案简单、业务改动少;不足:恢复时效性差、可恢复性及数据一致性风险大、资源可扩展性差。
同城双活
-
RPO/RTO/可用性:0/秒级/99.99%。
-
目标:应对同城单AZ级故障双AZ各承担50%流量。
-
方案:业务SET单元化、数据实时同步&强一致性保障等。
-
优缺点:业务同城双活容灾;不足:业务需改造、资源可展性差数据库需支持双AZ强一致能力。
异地多活
-
RPO/RTO/可用性:秒级/分钟级/99.995%。
-
目标:应对区域性灾难,各Region等比均摊流量。
-
方案:业务SET单元化、DRC数据异步同步&最终一致性保障等。
-
优缺点:业务异地多活容灾,兼顾同城双活+主备能力、资源可扩展性优;不足:业务需改造、数据同步能力要求高。
4. 容灾建设:寻找成本与业务影响的平衡点
传统的自建容灾方案复杂成本高
-
复杂度高
涉及服务器、网络、存储等各种系统。
涉及多厂商、异构环境,兼容复杂。
-
成本高,利用率低
机房建设,服务器购买,投入大。
冗余资源利用率低。
-
数据量大,弹性能力弱
基于预规划资源,弹性空间小。
-
管理难度大
难以具备演练条件。
恢复步骤复杂。
5. 业务多云部署架构下面临的关键问题
-
流量管理方式
单云/单中心情况下,流量只需要唯一入口。
多云情况下,流量入口的可靠性怎样保证?
-
业务管理方式
业务分布在多云,怎样保证一致性。
业务部署单元与所在的云之间,如何保证尽可能配套?
-
数据管理方式
多云情况下的数据一致性保证。
业务能否实现就近的读写。
-
多云本身的管理方式
云平台层面的故障怎样保障?
二、UCS跨云多活容灾方案介绍
1. 应用跨云多活的关键技术
-
流量层多活
流量统一接入。
流量治理分发。
-
应用层多活
应用的多活架构部署。
应用与数据的联动。
-
数据层多活
跨云的数据同步。
数据一致性的保证。
-
基础设施层多活
跨云基础设施统一管理、跨云调度。
跨云弹性和容灾切换。
2. 流量层多活:流量统一接入管理
打通跨云跨集群容器网络,实现统一流量管理
- 构建全局容器网络,实现跨云跨集群扁平化互通能力,对流量进行统一治理和管理,达到业务体验一致和通讯安全可靠的目标。
跨云实现南北向流量分发
- 支持流量基于地域、权重、访问者网段等进行分发。
全局流量治理中心统一管理
-
跨云多集群统一服务注册,服务网格管理。
-
支持多种流量管理策略(重试,超时,熔断,负载均衡等)。
全局服务治理中心实现可视化的跨云服务治理
- 通过服务网格能力支持跨云多集群服务接入和流量管理,自动化灰度发布,服务拓扑可视化,调用链等。
3. 流量层多活:全域应用流量治理
跨地域故障倒换
根据配置的故障倒换策略,在一个地域的后端实例发生故障时,将部分流量转移到其他地域的健康实例上去,根据实例上的位置标签的优先级或权重控制倒换的流量比例。
区域流量切分
根据配置的切分策略中描述的流量比例,控制将流量切分到不同地域的实例上。灵活地支持多云或混合云场景下的流量迁移。
全局负载均衡
在跨地域的服务实例上进行根据配置的负载均衡策略进行全局负载均衡,将流量均衡地分发到舰队管理的多云混合云的多个集群的所有服务后端实例上。
访问亲和性
在全局负载均衡的基础上,基于配置的访问亲和性策略,根据服务实例上的地域信息优先将流量分发到同地域的服务实例上,实现亲和性访问。
4. 应用层多活:跨云统一部署管理、统一监控运维
基于Karmada的多云应用统一管理
- 多云应用统一发布。
- 多云差异灵活管理。
- 多云监控一站收集查看。
5. 应用层多活:云原生容器跨云统一调度,优化资源使用
支持大规模云原生节点协同调度,提升资源利用率
- 某于Karmada内核,支持1000个分布式集群的统一接入,百万级节点资源协同调度,秒级响应。
多种策略跨云分发计算实例,优化资源
- 可设置集群权重,自动分发实例集群label组合条件设置,基于条件进行实例分发。
根据资源监控,动态调度优化资源使用
- 基于资源分布、负载,结合地理位置、网络QoS、亲和性、资源均衡度,实时调优部署分布。
集群自动跨云自愈,提升可用性
- 实时监控,集群故障时快速自动化应用实例。
集群自动跨云弹性伸缩,资源高效
- 基于业务需求,应用伸缩可根据不同集群的权重进行实例分配,可设置优先级。
6. 应用层多活:利用SDK实现应用的访问数据自动切换
业务痛点
- 传统应用无法在故障时自动切换数据访问。
方案描述
-
通过SDK改造访问数据源的方式,从而实现故障时或流量切换时的数据源访问的自动切换。
-
业务流程①:用户APP集成MAS-SDK,连接MAS-DCG-ETCD获取健康数据源集群信息。
-
业务流程②:MAS-SDK连接数据源集群
可以实现DB读写分离,支持随机、轮询的负载均衡算法。
可自定义指定数据源进行数据访问,用户也可以通过注解方式指定数据源以及主从进行数据读写。
方案价值
- 提供多种数据源对应的SDK,连接MAS-DCG获取当前应访问的数据源信息,并连接数据源。故障时自动切换无中断。
7. 数据层多活:跨云数据多活同步,支持自由倒换
数据复制服务
- (Data Replication Service,简称为DRS)是一种易用、稳定、高效,用于数据库在线迁移和数据库实时同步的云服务。
秒级RPO&RTO
- 优于《信息安全技术信息系统灾难恢复规范》灾备等级第五级,物理距离1500公里,秒级时延(网络良好、小事务时)。
自由主备倒换
- Active-Standby 模式,可在业务数据库和灾备数据之间自由升主降备,填补业界常见的单向灾备短板。
数字化管理
- 数据化监控管理平台,清晰展示了RPO、RTO、带宽、网络、读取、写入、数据健康报表等,提供最清晰可控的灾备环境。
8. 基础设施层多活:跨云、跨地域集群统一接入、全生命周期管理
跨云统一K8s集群生命周期管理
- 跨云、跨地域统一接入K8s集群。
- 形成统一管理视图,包括资源使用情况。
- 华为云CCE自动接管。
- 第三方集群接入管理。
- 支持集群注册、解注册,通过outbound方式接入管理,安全可靠。
- 支持集群k8s资源生命周期管理,如工作负载service\ingress等。
跨云集群统一配置,简化管理
- 支持统一管理多集群的配额。
- 支持通用集群配置信息定义,规范核对。
- 支持配置信息版本管理。
- 支持配置信息统一多集群下发。
9. 基础设施层多活:云原生应用和数据一致性灾备、跨云一键迁移
屏蔽存储差异性,实现一键迁移
- 传统迁移,由于存储差异性导致IDC搬迁上云困难,工作量大。
- UCS支持容器资源和PV卷一体化,实现一键迁移不再困难重重。
数据与业务一体化迁移
围绕应用构建自动化的应用迁移、克隆能力实现数据同步复制能力。
- 定义容器应用数据模型:围绕应用数据建模,支持自动发现数据,支持用户自定义数据。
- 多层次数据复制:存储设施层(依赖华为云基础设施),中间件数据层(依赖中间件服务),容器集群层,多场景数据备份恢复能力,可通过自动化及关联指导,降低工程人力耗费。
- 数据随应用跨区弹性伸缩:零人工干预,容器应用资源及关联PV卷数自动数据扫描和重建,降低数据备份恢复耗时。
支持的备份迁移场景
场景1、跨云异构K8s应用与数据一体化备份迁移
- 支持云原生应用一致性灾备迁移。
- 云原生应用关联的负载配置数据、存储卷数据等一键迁移。
- 支持集群、namespace等多粒度管理迁移。
场景2、多种备份恢复策略
- 支持定时备份。
- 支持备份恢复前后的客户自定义操作。
- 支持备份恢复时资源配置自定义转换(命名空间,镜像,存储类等)。
场景3、不同集群一键式自动迁移
- 支持跨云、不同厂商的K8s集群自动迁移上云,一键式自动化完成应用数据的扫描,备份以及目标集群的恢复。
场景4、云原生应用业务灾备
- 结合UCS集群统一管理,数据一致性备份恢复,多集群的跨地域跨云流量治理能力,实现云原生应用的灾备管理。
10. 应用多活容灾架构:以 UCS+MAS+DRS 为核心的全栈多活容灾能力
应用连续性
- "管理-流量-应用-数据"提供端到端健康仲裁。
- 多活高可用管控,99.999% 业务高可用保障。
- 秒级 RTO 与RPO。
数据高可靠
- Active-Standby 模式数据库自由主备切换。
- 数字化监控管理,清晰展示数据全维度信息。
- 优于第五级灾备等级。
多云统一管理
- 多云多集群统一管理,降低运维复杂度。
- 无入侵实现跨云智能流量治理。
- 应用跨云极速弹性,故障跨云跨region自动迁移。
应用高可用,保障连续性
- 系统故障灾难带来的影响不可预估,通过多云多活能力提高业务的连续性。
避免单厂商绑定
- 多云的方式能让企业复用云厂商能力的同时也能享受厂商带来的服务。
技术演进练兵场
- 多云的方式实现架构演进演练跟隔离验证,保障业务稳定的同时持续创新。
11. 应用容灾典型架构一:多云多活,数据库手动切换,实现低成本的业务高可靠
主打优势
- 业务无改造。
- 应用弹性伸缩。
- 异常自动切流。
- 容灾成本低。
方案架构
接入层,异常自动切流(UCS + DNS +ELB)
- DNS 统一管控,异常流量及时摘除。
- Region 级 ELB,高可靠保障入口流量分发。
应用层,低成本热部署(UCS+CCE Turbo)
- 多云多Region 统一运维管理,降低运维复杂度。
- 应用自动弹性伸缩,低成本热部署。
数据层,可靠数据同步(DRS)
- Redis 作为缓存服务,提供本地加速缓存能力。
- MySQL数据同步,高可靠保障数据一致性。
12. 应用容灾典型架构二:应用跨云多活数据库主备全流程故障自动切换
主打优势
- 业务双活。
- 全链路智能巡检。
- 数据主备自动切换。
- 流量智能治理。
方案架构
接入层,策略分流(MAS+DNS+APIG)
- DNS基于策略分流,异常流量及时摘除。
- APIG后端服务异常巡检,流量精准分发。
应用层,流量智能治理(UCS + CCE Turbo)
- 流量智能治理,无侵入式提供亲和访问,熔断降级。
- 本地 SDK 探测,中间件主备集群切换,应用无感知。
数据层,可靠数据同步(DTS + DRS)
- Redis 支持SDK双写或工具同步,保障数据一致性。
- MySQL支持双向同步,数据冲突校验。
13. 跨云多活:ROI最优解
一、提升业务连续性,减少切换时间
- 冷备和热备都有一定的故障切换时间,对业务有一定影响。
- 双活几乎是零切换时间,对业务影响最小。
二、提升资源利用率(资源充分利用)
- 和冷备、热备不同,资源充分利用,全部用于业务流量,冷备和热备均有一部分计算资源闲置。
- 故障从单云切换到其他云,利用公有云的弹性,按需计费。而无论是冷备还是热备,都需要预留两倍资源,预留给故障切换。
三、支持业务敏捷,应用架构灰度升级
- 通过多活架构的流量管控、灰度发布,可以把少量流量引入升级的整体应用系统做灰度验证,支持业务应用架构不断在线演进,提升业务创新支撑能力。
四、可靠性增强,减少故障半径(实现应用端到端SLA突破99.999%)
- 服务可以扩展到多个机房:解决实时业务无法跨云多区域部署的问题。
- 能够应对整个机房级别的故障,整体可用性更高:单云/机房故障后,业务不中断。
五、业务部署灵活,扩展性增强
- 架构可跨云跨IDC部署,流量灵活负载------多入口,灵活配比资源比例。
- 多云系统容量线性扩展,容量提升更加方便一一单云可部署的业务承压降低。
六、避免绑定,优化服务与商务
- 避免被单云厂商绑定。
- 业务可灵活部署IDC与云,根据流量切分,平滑迁移。择优选择资源与服务。
三、UCS应用跨云多活部署场景演示
1. 云应用多活容灾,构建高可用应用
业务痛点分析
- 系统可用性挑战大:系统故障灾难带来的影响不可预估,每一次的灾难都会造成巨大的损失,包括经济上、品牌上、数据安全。
- 不同云之间的兼容性,云厂商锁定:由于不同云之间API、服务协议和基础架构的差异,集成多个云环境以进行灾难恢复可能会出现兼容性问题。
方案价值
- 应用高可用,保障连续性:跨集群流量分发、跨集群弹性伸缩、跨集群应用故障迁移,并基于云原生技术,生态统一。
- 降低成本、系统容量弹性扩容:相比传统的灾备系统,应用多活解决了资源的可复用问题,动态的流量调控,快速弹性和扩容,同时保障业务数据的实时性和安全性。
- 技术演进练兵场:多活本质上提供了一种流量跟架构的隔离能力,通过多活的方式实现架构演进的演练跟隔离验证,保障业务稳定的同时能持续创新。
2. 演示步骤简介
业务架构
1、应用层:华为云CCE Turbo集群和阿里云ACK集群组成跨云双集群,通过UCS实现应用的统一调度。
2、流量层:华为云CCE Turbo集群和阿里云ACK集群通过LB作为各自流量入口,并通过GSLB实现全局的跨集群的流量分担和调度。
3、数据层:数据库读写分离,适用于时延敏感的场景,读性能加速。读多写少业务写单边,读本地。
演示步骤
前置工作
在UCS控制台中,容器舰队fleet-template
有2个集群,一个是华为云的CCE,一个是阿里云的ACK。
1、跨云流量分发
基于域名访问设置应用访问统一入口,采用自适应模式的方式对跨云集群的流量进行分发,满足业务请求负载均衡处理诉求,当业务部署在单个集群的实例扩容或故障时,流量分配会根据多个集群的实例数比例进行协调。
新建一个名为new-test
的工作负载,并选择好对应的容器镜像和容器。
集群的权重配置都选择为 "1" 来创建一个工作负载。
创建名为new-test
的服务:然后根据容器的访问端口,创建对应的端口配置,演示中创建了8080和8081两个端口 ,分别用于访问容器的WEB页面和做调试;之后在部署集群中选择阿里云的ACK和华为云的CCE。
创建成功会看到状态显示为:正常。
之后创建名为new-test
的域名访问,选择自适应模式并可在流量拓扑图中观察到比例各为50%。
创建成功后,即可复制访问地址进行测试访问,当看到页面访问成功即此演示完毕。
2、跨云弹性伸缩
基于CPU利用率设置跨集群弹性伸缩策略,在多云集群之间根据集群的实际状态设置触发策略和扩容优先级,满足业务高峰所需。
创建一个名为new-test
的指标伸缩策略,然后在系统规则中选择CPU利用率
,期待值为20%
。
之后可在CCE的控制台中,使用调试命令让负载高起来继而触发伸缩策略。
之后观察工作负载,可发现阿里云的ACK新增一个实例,数量为2。
在域名访问中,也可观察到比例为2 : 1
至此演示完毕。
3、跨云故障迁移
在某一方云集群发生故障后,将故障集群实例自动迁移到另一方云双活集群,同时流量随之导向健康集群,实现业务跨云高可用。
可以用设置污点的形式来模拟故障。首先在阿里云ACK设置如下污点设置:
污点设置完毕后,可在工作负载中观察到副本已全部运行在华为云的CCE中。
在域名访问框中,也可以观察到流量已经全部走华为云CCE,在流量拓扑也可观察到比例。
最后返回到页面进行测试访问,当看到页面访问成功即此演示完毕。
四、总结
- 随着应用部署的架构逐渐由单云迁移至混合云和多云,怎样更合理的利用多云来提升应用的可靠性,并尽量控制企业的成本最优,成为企业需要思考的问题。
- UCS基于karmada的多云应用统一调度管理、全域流量分发、跨云弹性和迁移能力,能够实现应用的多活和最小化的资源消耗;在故障发生时的流量调整,以及节点和容器的快速弹性,保证应用受故障影响最小化,实现应用的持续稳定工作。当UCS结合MAS,能够提供数据层面的跨云高可用保障,在入口层、应用层、数据层实现全方位的多活容灾能力。
- 场景演示:通过UCS的流量分发和跨云弹性,实现应用的跨云多活容灾能力。
本文参与华为云社区【内容共创】活动第24期。
【内容共创】活动第24期活动详情:https://bbs.huaweicloud.com/blogs/411680