作者:庄宇
在规划体系架构时,咱们有必要假设任何组件和任何基础设施或许会在任何时刻失效,例如:自然灾害,电力中断,网络中断,错误的体系变更等。为了应对应战,咱们有必要规划适宜的容灾架构。
本文介绍如何以 K8s 集群(包含:ACK 集群,他云集群和本地 IDC K8s 集群)为基础,结合阿里如此产品(网络,数据库,中间件,可观测),规划容灾架构,构建一个“耐性”体系。
容灾方针
Recovery time objective(RTO):
服务中断与服务康复之间可接受的最大延迟时刻。决定服务停机的可接受时长。
Recovery point objective(RPO):
自上一个数据康复点以来可接受的最大时刻量。决定可接受的数据丢失或重建。
关于 RTO 和 RPO,数值越低代表停机时刻和数据丢失越少,可是越低的 RTO 和 RPO 会导致资源本钱和运维复杂性越高。因此,您需求依据工作负载的重要性,指定适当的 RTO 和 RPO。
容灾战略
上图中,描绘的常见的 3 种容灾战略:备份与康复、主备、双活,不同的容灾战略对应了不同的收益和本钱。您需求综合分析事务的重要性、危险、可投入的本钱等,以挑选合适的容灾战略。
备份与康复(Backup-Restore)
在体系运转时,备份运用和数据,在灾祸产生时,在另一个地址康复运用和数据,并切换事务流量。因为数据无法实时备份,在康复数据时会有必定的数据丢失,一起假如数据量较大,康复数据时刻或许较长。
主备(Active-Standby)
在主备模式中,主 Location 处理所有的事务流量,备用 location 能够启动较少的运用实例节约本钱,并周期发送测验流量以验证体系有效性。在灾祸产生时,做数据库主备切换,扩容运用实例数,并切换事务流量。
双活(Active-Active)
在双活模式中,2 个 Location 启动相同的运用实例数,一起处理事务流量。在灾祸产生时,做数据库主备切换,并切换事务流量。
容灾规模
多可用区(Multi-AZ)
阿里云地域(Region) [ 11] 包含多个可用区(AZ),可用区(AZ)是电力和网络互相独立的物理区域,对停电,断网等部分中断的容灾场景,能够运用多个可用区(AZ)规划容灾战略。因为可用区间的网络延时较短,能够更容易完成数据部分的容灾计划,包含数据库、缓存和音讯等。
多地域(Multi-Region)
为了应对更大规模的灾祸毛病事情,这些事情或许会影响同地域(Region)的多个可用区(AZ),您能够运用多个地域(Region)规划容灾战略。但因为地域间更大网络延时,容灾计划复杂度和完本钱钱较高。
在挑选多可用区(AZ)或许多地域(Region)容灾计划时,需求重点考虑有状况运用和依赖的云产品(例如:数据库、缓存和音讯)是否支撑多地域或许多可用区容灾。
计划示例
备份与康复(Backup & Restore)
公共云跨可用区和跨地域备份与康复
-
经过 ACK One 备份中心 [3 ] ,能够备份 ACK 集群中的运用,包含无状况运用和有状况运用,对有状况运用,在备份运用 YAML 的一起能够备份相关 Storage 数据。
-
ACK One 备份中心集成云产品云盘快照 [ 12] ,文件存储 NAS [13 ] ,目标存储 OSS [14 ] 和云备份 [15 ] ,分别支撑运用 YAML,云盘 PV,文件体系 PV 的一键备份。
-
备份后,能够随时将运用和 Storage 数据,康复到恣意地域和可用区的 ACK 集群。
-
阿里云数据库服务的备份与康复,能够参阅相应数据产品的文档,例如:RDS MySQL 数据库备份康复 [ 16] ,RDS 实例间数据搬迁 [17 ] 。
混合云备份与康复
-
经过 ACK One 注册集群 [ 4] ,能够将 IDC 自建或许非阿里云 K8s 集群,接入到阿里云 ACK 控制台。
-
接入 ACK One 注册集群后,经过 ACK One 备份中心,能够备份 IDC 自建和非阿里云 K8s 集群中的运用,包含无状况运用和有状况运用,对有状况运用,在备份运用 YAML 的一起能够备份相关 Storage 数据。
-
备份后,能够随时将运用(Deployment/Statefulset)和数据(PV/PVC),康复到恣意地域和可用区的 ACK 集群。
总结
备份康复计划施行本钱较低,但 RTO 和 RPO 相对较长,取决于数据量的大小和运用的复杂度。备份中心能够供给的全量备份 增量备份才能,削减 RTO 和 RPO 时刻。
备份康复作为容灾的兜底计划,重要性高,在体系运维的过程中,要确保备份的及时性和可康复性。
别的,许多用户挑选经过备份康复功能完成运用的跨集群搬迁,场景如下:
-
事务上云,将本地 IDC 集群中的运用,搬迁到阿里云 ACK 集群中,参阅 IDC 运用上云搬迁 [ 18] 。
-
集群版别较老,版别升级有稳定性危险,能够先创立新版别集群,经过备份康复将运用搬迁到新版别集群运转,参阅跨版别集群搬迁 [ 19] 。
-
用户在收敛云账号或许组织调整时,需求跨账号集群接入 [ 20] 和跨集群搬迁运用 [21 ] 。
多集群 Service
在运用搬迁的过程中,因为运用的数量较多,需求分批搬迁,一起运用间存在调用联系。此时,在网络打通的前提下,能够运用 ACK One 舰队多集群 Service [ 5] ,完成运用 Kubernetes Service 跨集群访问。如下图所示,ACK One 舰队多集群 Service,能够将 Cluster1 的 Applcation2 的 Kubernetes Service(包含 endpoints)注入到 Cluster2,Cluster2 上的 Application1 能够访问 Cluster1 上的 Application2。
在专线拉通的前提下,经过 ACK One 注册集群,IDC 和非阿里云的 K8s 集群也能够是用 ACK One 舰队多集群 Service。
单地域多可用区容灾
依据 DNS 流量分发
-
经过 ACK One GitOps 运用分发 [6 ] ,在 2 个 ACK 集群中布置运用,完成依据 Git 库房的继续一致性布置。
-
经过大局流量办理(GTM) [22 ] 做 DNS 解析完成负载分发,并监控体系运转健康状况,主动触发容灾切换。
-
每个 AZ 内,经过 ACK Ingress [ 7] 完成 7 层流量办理。
-
备集群和主集群的运用版别相同,但备集群节点较少,运用副本较少,节约本钱。
-
在主体系不行用时,大局流量办理(GTM)会将服务域名 DNS 解析到备用体系,完成主备切换。
-
因为流量的增加,备集群中 ACK HPA [8 ] 会扩容运用副本,从而触发 ACK Cluster Autocaler [9 ] 扩容集群节点。
-
阿里云中间件(音讯,缓存)的跨可用区容灾,可参阅相关文档,例如:云音讯行列 RocketMQ 版实例标准 [ 23] ,云音讯行列 Kafka 版实例标准 [ 24] ,云原生内存数据库 Tair 容灾计划 [ 25] 。
-
阿里云数据库服务的跨可用区容灾,可参阅相关文档,例如:RDS MySQL 数据库建立高可用架构 [ 26] 。
留意:
-
本计划依据 DNS 流量转发,因为 DNS 缓存,在灾祸事情产生时,部分事务仍然路由到主体系,造成必定的事务损失。
-
需求在 2 个集群中分别装备保护 7 层 ingress 规则,本钱高。体系正常运转状况:
灾祸事情产生,AZ 不行用时,体系主备切换,GTM 将流量切换到 AZ2,ACK Cluste2 的运用实例主动扩展,中间件和数据库多可用区高可用切换。
依据 ACK One 多集群网关
-
经过 ACK One GitOps 运用分发,在 2 个 ACK 集群中布置运用,完成依据 Git 库房的继续一致性布置。
-
经过 ACK One 多集群网关 [ 10] ,界说标准 K8s Ingress 规则(YAML 格局),完成 7 层流量治理,完成流量的主备模式分发。多集群网关为跨可用区高可用。
-
备集群和主集群的运用版别相同,但备集群节点较少,运用副本较少,节约本钱。能够发送特定 http header 的测验流量,多集群网关转发到备集群以验证工作状况。
-
在主体系不行用时,ACK One 多集群网关会主动将事务流量备用体系,完成主备切换。
-
因为流量的增加,备集群中 ACK HPA 会扩容运用副本,从而触发 ACK Cluster Autocaler 扩容集群节点。
-
阿里云数据库服务的跨可用区容灾,可参阅相关文档,例如:RDS MySQL 数据库建立高可用架构。
留意:
-
本计划为 HTTP 七层流量转发,合作 7 层健康检查,主备切换时相比 DNS 计划,大幅减低事务流量损失。
-
网关侧统一支撑依据 Ingress 规则的流量治理,相比 DNS 计划,合并了四层负载均衡 SLB 和七层 Ingress 网关,降低体系复杂度和保护本钱。
体系正常运转状况:
灾祸事情产生,AZ 不行用时,体系主备切换,多集群网关(MSE 云原生网关)主动将流量切换到 AZ2 的 ACK Cluste2 中, 运用实例主动扩展。
跨可用区双活
以上 2 个计划以主备模式为例,描绘了体系架构。同样的架构,依据 DNS 流量分发和 ACK One 多集群网关也支撑双活场景,能够装备流量分发比例(例如:50% : 50%),支撑主动 failover 切换。在双活的场景下,每个集群中的运用副本数,需求依据流量分发比例确定,集群中需求装备弹性伸缩,以支撑流量切换情况下的流量增加。
总结
单地域多可用区计划完成的本钱较低,能够运用云产品(包含:网关,容器,中间件,数据库)多可用区布置和多可用区高可用,快速完成容灾,对事务改造较小。但此计划仅可应对单个可用区的灾祸和毛病,无法应对地域级的灾祸毛病。
单地域云 IDC 容灾计划
计划架构与单地域多可用区容灾计划类似,要点如下:
-
云上 VPC 与 IDC 建立专线连接,打通管控与数据通道。
-
经过 ACK One 注册集群接入 IDC 集群,运用阿里云强壮可观测和安全才能,统一办理 IDC 集群和 ACK 集群。
-
经过 ACK One GitOps 运用分发,在 2 个集群中布置运用,完成依据 Git 库房的继续一致性布置。
依据 DNS 流量分发(单地域云上和云下双活)
依据 ACK One 多集群网关(单地域云上和云下双活)
多地域容灾
假如事务规模大重要性高,服务的用户数量多规模广,单地域的容灾计划就无法满意事务高可用要求,这时需求多地域容灾计划。在多个地域独立布置事务体系,确保每个地域的事务体系具有单独闭环供给完好的服务才能。
-
经过大局流量办理(GTM)完成用户就近接入相应地域。
-
经过 ACK One GitOps 运用分发,在 2 个 ACK 集群中布置运用,完成依据 Git 库房的继续一致性布置。
-
缓存多地域高可用计划,能够参阅阿里云产品相关文档,例如:Tair 全球多话 [ 27] 。
-
数据库跨地域高可用计划,能够参阅阿里数据库云产品相关文档,例如:云原生数据库 PolarDB MySQL 全球数据库 [ 28] 。
-
地域内,能够采用单地域多可用区容灾计划。
单元化多活布置
区别与前一计划,多地域单元化多活布置,需求规划分片规则对运用和数据进行分片,使得单元供给面向部分数据分片的完好服务才能,完成事务安全毛病隔离,水平扩展,服务巨大的用户群体。一般分为中心单元(拥有所有用户数据)和多个子单元(分片后详细数据)。此种方法需求事务体系支撑,自界说分流规则,数据拆分,单元间合作等,复杂度高。
总结
各种灾祸事情会影响您事务的可用性,经过运用阿里云的相关云产品的容灾才能,能够减轻或许消除这些影响。首要,需求了解事务可用性需求,从而挑选一个适当的容灾战略,然后,运用阿里云相关云产品,包含:容器(容器服务 Kubernetes 版 ACK [ 1] 和分布式云容器渠道 ACK One [ 2] )、音讯、缓存、数据库等,规划容灾架构,快速达到您事务可用性要求的康复时刻方针 RTO 和康复点方针 RPO。
相关链接:
[1]容器服务 Kubernetes 版 ACK
[2]分布式云容器渠道 ACK One
[3]ACK One 备份中心
[4]ACK One 注册集群
[5]ACK One 舰队多集群 Service
[6]ACK One GitOps 运用分发
[7]ACK Ingress
[8]ACK HPA
[9]ACK Cluster Autocaler
[10]ACK One 多集群网关
[11]地域(Region)
[12]云盘快照
[13]文件存储 NAS
[14]目标存储 OSS
[15]云备份
[16]RDS MySQL 数据库备份康复
[17]RDS 实例间数据搬迁
[18]IDC 运用上云搬迁
[19]跨版别集群搬迁
[20]跨账号集群接入
[21]跨集群搬迁运用
[22]大局流量办理(GTM)
[23]云音讯行列 RocketMQ 版实例标准
[24]云音讯行列 Kafka 版实例标准
[25]云原生内存数据库 Tair 容灾计划
[26]RDS MySQL 数据库建立高可用架构
[27]Tair 全球多话
[28]云原生数据库 PolarDB MySQL 全球数据库