本文分享自华为云社区《华为云CCE敏捷版金融级高可用方案实践》,作者: 云容器大未来。
一、背景
1.1. CCE 敏捷版介绍
云原生技术有利于各构造在公有云、私有云和混合云等新型动态情况中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。这些技术能够构建容错性好、易于管理和便于观察的松耦合体系。结合可靠的自动化手段,云原生技术使工程师能够轻松地对体系作出频仍和可预测的重大变动。
从实践角度讲,CCE 敏捷版是在大规模高可靠的云服务和大量高性能金融级应用的驱动下产生的新一代软件开辟、集成、管理和运维的云原生管理平台。CCE 敏捷版,为企业提供数字化新基建的云原生技术平台,帮助企业实现业务敏捷上线、业务战略快速落地。作为容器混合云在线下的延伸,CCE 敏捷版提供了高性能可扩展的容器服务,快速构建高可靠的容器集群,兼容 Kubernetes 及 Docker 容器生态。帮助用户轻松创建和管理多样化的容器工作负载,并提供容器故障自愈,监控日志收罗,自动弹性扩容等高效运维能力。
1.2. 为什么要两地三中央
随着互联网技术的发展,云平台建设已经成为企业信息化建设的重要组成部门。在实际的云平台建设过程中,为了保证体系的高可用性和可靠性,必要考虑到多个层次上的冗余。一样平常通过多副本可以实现应用层面的冗余,在地区级别的故障场景下,两地三中央的高可用架构是一种常见的计划方案。
通过将体系部署在两个地理位置,三个差别的数据中央,从而实现对体系的高可用性和容错性的保障。在实际的应用场景中,两地三中央的高可用架构主要适用于对体系可用性要求非常高的场景,例如金融、电信、医疗等行业。使用两地三中央,可以有效地制止单点故障的风险,并在体系出现故障时快速切换到备中央,从而保证体系的持续稳固运行。
1.3. 适用场景
两地三数据中央整体统一规划,接纳华为 CCE 敏捷版的产物构建微服务应用的两地多中央的容灾方案,从单中央开始分步调实施建设。
二、方案说明
2.1. 整体容灾方案
本方案形貌两地三中央的方案支持客户的业务高可用;
方案说明:
- 建立两地三中央的容灾架构,提供多集群部署能力,以上图为例,将 Region1 作为主地区提供同城双活,Region2 作为灾备站点。每个中央各自一套独立集群,对于核心业务可提供单中央双集群进一步提升高可用性,制止由于单集群故障导致业务受损。业务根据实际情况分配。
- 减小集群规模,控制故障半径:将大集群拆解到多个小集群中,单集群规模建议不超过 200 节点。灾备情况由于常态无真实业务,出于成本考虑可适当减小规模,但必要在灾备流量切换前完成数据检查和规模扩容。若无法保证规模扩容,建议按照生产情况高峰流量进行情况准备。
- 每个数据中央的流量通过跨云负载均衡走到云平台 SLB,再进一步将流量导入到集群中的业务网关。业务网关根据应用的注册情况将流量分配到后端应用上。正常情况下 DNS 将流量全部导向主地区站点,在灾备时将切换到容灾中央。
- 集群中的网关将流量导向后端时,可根据应用的分布和注册情况,进行流量分配,可分阶段实现集群内流量分发,以及跨集群的流量分发(需微服务框架改造)。通过业务层面的健康检查,流量探测,可实现应用路由的全局管理分发,制止单一集群、单一 AZ、单一数据中央故障,引发大量流量异常。
- 应用状态信息保存到 DB 中,应用自己无状态化,便于弹性、迁移等容灾活动处理。根据业务框架数据库可以接纳同城双中央的统一单边读写机制,多中央的应用使用同一份数据库,保证一致性。同时数据库提供跨中央的实时同步到备节点,当同城双中央间发生容灾切换时,备升主,应用也切换到新的主数据库上。核心业务数据支持异地复制,确保主站点地区级别故障时提供异地的容灾拉起手段。
- 后续可针对应用业务进行单元化改造,降低单应用的故障风险面。应用单元可通过双集群等多主架构实现容灾高可用,并配套数据库的同步与容灾能力实现单元粒度的容灾切换能力。
2.2. 高可用关键技术
从容灾分层的角度,可以从接入层、应用层、数据层和基础设施层,分别进行高可用的计划分析。
接入层流量高可用
核心要点:两层容灾,覆盖地区级别、单中央级别故障的流量切换。
关键技术一:使用 DNS 实现路由高可用解析计谋管理
1、通过 DNS A 记录权重进行轮询分流
2、支持健康检查,故障自动切换。某一地区 IP 故障,自动切换到其他可用 IP
关键技术二:单地区负载均衡权重管理
1、负载均衡同城跨中央调度流量
2、支持健康检查,根据后端负载实例情况,动态调整集群流量权重
如下图所示,当检测到故障时,公网流量切换到灾备。
应用层容灾高可靠
核心要点,多集群多副本部署,应用路由网关实现单应用、单中央故障的业务无损,主要针对同城双活。关键技术一:多集群多副本部署
通过多集群部署,制止单集群故障影响。关键技术二:应用路由管理
1、网关基于注册信息进行流量转发。
2、Ingress、nodeport 流量基于 k8s 的 service 注册进行流量转发。
3、业务仅在单集群内访问,减少跨集群依赖。
关键技术三:跨集群路由(可逐步演进)
通过注册中央双写等机制,实现应用路由在双方集群均完整具备,当某一集群的应用全故障时可将流量导向其他的健康集群业务。在应用间互访前先读取路由,基于就近访问优先等计谋进行业务间的调用转发。
1、注册中央路由注册时,将自动实现集群内的短路径以及跨集群的长路径的注册和区分。
2、集群内调用,时延最低;集群间调用,1)通过网关对外提供服务类,跨集群需通过业务网关绕行,时延有所增加,2)对于 ingress、nodeport 等 k8s 对外提供服务类, SLB 需提供健康检查机制,将流量导到对端健康的集群上。
数据库容灾高可靠
核心要点:数据库多中央部署,跨中央同步。
提供给单元化切片能力。
关键技术一:跨 AZ 高可用支持秒级切换
支持跨 AZ 部署,生产站点部署主库,同城站点部署备库,主备库切换为秒级
关键技术二:数据同步
支持半同步和异步两种。关注数据安全,建议选择半同步,关注性能,建议选择异步。
关键技术三:读写分离,支持多个只读实例
支持多个只读实例,分担读流量;提升查询业务吞吐能力。
关键技术四:提供对外访问的统一地址,主备切换对应用无感知
跨AZ部署的高可用实例对外接纳统一的地址访问,当站点故障时,访问地址不发生变化。当主实例所在地区发生突发生自然灾害等状况,主节点(Master)和备节点(Slave)均无法连接时,可将异地灾备实例切换为主实例,在应用端修改数据库链接地址后,即可快速恢复应用的业务访问。
基础设施容灾高可靠
基础设施主要包括 IaaS、容器、存储、网络等基础资源。
对于容器而言,可以在双方的数据中央各自部署一套完整的容器平台,容器平台不跨数据中央,可以制止容器管理等业务由于跨中央的专线网络故障导致的管理受损情况。对于 IaaS、存储等基础设施,特别是存储持久化数据,则必要提供跨机房、数据中央的容灾能力。
关键技术一:数据双活高可靠
对于在机房 A 运行的应用,全部数据持久化后都会立刻写入机房 B 的 NAS 存储。当机房 A 存储故障时,机房 B 存储有全量最新数据,且立即可用;业务即可快速由机房 B 接受,性能快速恢复。
关键技术二:IaaS 跨 AZ 高可用
IaaS 建设规划,必要保证数据中央内的多 AZ 建设,在多 AZ 上提供虚机、网络的高可用能力。同时,IaaS 必要评估是否必要在同城跨数据中央建设,并提供相应的技术要求。
应用单元化改造
核心要点:通过单元化改造,每个单元承担全业务,从用户维度进行切分,单元包含应用+数据。
优点:故障不出单元,故障半径小;提供极致的性能和线性扩展。可通过增加单元进行水平扩展。
依赖:要求业务模型固定;应用和数据库耦合度高,必要有合适的业务分片构建全局路由,跨单元通过 API 访问,必要应用侧聚合;成本高,应用、数据必要一体化规划计划。
统一运维
核心要点:分层运维,提供应用的统一运维管理视图。
关键技术一:统一登录 SSO
对于 IaaS、容器、存储、数据库等多管理平台,必要与企业内部 SSO 体系买通,统一登录,统一管理,制止出现差别地区的平台登录差别的情况。
关键技术二:日志监控统一管理
多集群的应用日志、监控、链路信息,统一收集到运维服务平台,提供监控大盘、全链路分析、运营报表等能力。
三、高可用容灾体系建设
基于整体容灾方案,在基础设施建设就绪后,可以在各数据中央,进行 CCE 敏捷版的规划建设。
3.1. 集群容灾规划建设
接纳多集群模式,一个数据中央一套独立的管控面,制止跨数据中央的依赖。在每个数据中央,存在一个管控集群,和基于业务情况规划的业务集群。
管控集群
管控集群主要功能
| 承担一个数据中央内部多个业务集群管理,主要包含集群管理、应用管理、运维管理等作用。
| 管控集群部署位置
| 运管区。管控集群与业务集群全部节点进行网络买通(22, 5443端口等)
| 管控集群运行服务
|
- 管控集群本质是一个K8S集群,在K8S集群上运行容器化管控服务
- 管控服务主要包含:管理控制台、租户管理、鉴权服务、API网关、监控管理服务、集群管理服务、平台数据库、平台镜像仓库等
| 管控集群部署关注点
|
- 满足K8S集群自己组件的分布式高可用需求,3RU部署
- 满足管控服务的分布式高可用需求,3RU部署
| 管控集群节点规划
| 管理节点
|
- 虚拟机/物理机*3;分布在3RU中
- 部署服务:K8S管理组件(apiserver,controller,scheduler,etcd);平台数据库
| 盘算节点(无状态服务)
|
- 虚拟机/物理机*2;分布在2RU中
- 部署服务:管理控制台、租户管理、API网关
- 服务特点:无状态,支持弹性扩缩容
| 管控集群支持规模
| 支持1000+个节点规模的管理,大规模时建议独立出业务集群管理。节点数增加后,必要同步对有状态服务节点进行扩容(增加物理机个数),必要做数据迁移。
| 业务集群
业务集群主要功能
| 作为容器化应用的运行情况
| 业务集群部署位置
|
- 按照网络分区进行规划
- 每个分区集群根据业务属性分别,例如管理类应用集群和对客类应用集群
| 业务集群运行服务
|
- 无状态服务:数据无持久化要求,多副本机制。例如Java应用、TongWeb、Nginx等
| 业务集群部署关注点
|
- 满足K8S集群自己组件的分布式高可用需求,3RU部署
- 上层应用根据K8S集群部署2RU特性进行高可用保障
| 业务集群节点规划
| 管理节点
|
- 3台节点;分布在3RU中;部署K8S管理组件(apiserver,controller,scheduler,etcd)
| 盘算节点
|
| 业务集群形态
| 虚拟机集群:适用于通用应用场景,现在运行在虚拟机上的应用均可以使用虚拟机集群
| 物理机集群:适用于高性能要求或者专用集群要求场景,例如ES、数据库等
| 业务集群规模规划
| 支持1000+个节点规模的管理,从控制爆炸半径的角度看,建议在规模控制在200节点以内。
| 3.2. 高可用建设演进计谋
技术中台建设的高可用的基础设施建设可以分三个阶段进行分批建设和演进:第一阶段进行同城双活阶段的高可用,第二阶段演进成三地双活异地灾备高可用体系。
在高可用架构的演进过程中,在层次上必要从下往上逐步演进,即首先完成基础设施,即第二数据中央的机房、IaaS 基础建设;然后完成数据库、中间件的双中央高可用演进;再建设新集群,将业务发布到新的数据中央集群上;在应用发布到网关层并验证通过后,即达到双中央多活的效果。在双中央向异地容灾演进时,也是类似的流程。
点击关注,第一时间了解华为云新鲜技术~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |