IaaS首席架构师的架构设计思考与实践
摘要:本文分享了华为云Stack IaaS的设计思考与实践,基于公有云先进的架构技术和创新能力,采用重构改造+积木式搭配+抽屉式替换等方式,健康的、可持续的为客户不断的提供产品和服务。
本文分享自华为云社区《【华为云Stack】【大架光临】第4期:IaaS首席架构师的架构设计思考与实践》,作者:华为云Stack基础服务首席架构师 申思。
IaaS架构设计的思考
云计算基础设施即服务(IaaS)通常包括两个内涵,一是提供计算、网络、存储资源的按需付费的使用模式,这种创新是将物理世界中被广泛采用的共享使用及租用模式引入了IT领域,通过资源集约来提升效率并降低整体成本。但是我们也看到,仍然有相当数量的政企客户,由于在自身IT长期发展的过程中,存在大量包括设备机房、IT职员、传统应用、固有组织流程、合规要求等因素,客户的IT改造并采用新模式,将会是一个逐步并且长期的过程。
IaaS的第二个内涵,是以虚拟化技术和分布式系统为主的新技术的升级,包括虚拟机、容器、采用SDN技术的网络自动化、分布式存储,以及管控系统的分布式化扩展等技术,提供统一的管理调度和资源灵活高效使用的能力。这一系列技术的升级并不是颠覆式的革命,而是IT技术发展过程的自然进化,需要不断的迭代演进到成熟。厂商持续打磨产品的同时,客户也需要结合自身的业务诉求和技术发展阶段,对新技术的使用做出合理的规划。
认识到不同政企客户对IaaS的使用模式和技术发展,客观存在自身特点和发展阶段的差异性,是更好的帮助客户成功实施云化转型的前提,也是华为面向政企云场景基础设施服务的一系列技术规划和设计的出发点。
IaaS产品的参考架构,包含云平台的计算控制、网络控制、存储控制部分,以及运营运维、安全灾备、产品化等子系统,基于该参考架构,不同IaaS厂商提供了各自系统实现的产品实例。和主要以服务目录提供产品的方式有所不同,线下政企云场景,边界会延伸到客户的组织流程、管理制度、人员技能、存量资产、安全合规、发展规划等各个方面,覆盖建云、上云、用云、管云4个阶段,因而对厂商所提供的IaaS技术架构提出了更多的要求。
图1 政企场景IAAS架构及外延
如图1所示,政企场景下外延扩展所产生的对IaaS产品的需求,使得IaaS产品面临着和其他软件产品类似的挑战 —— 如何识别客户普遍合理的需求,在满足客户的同时,做到避免软件复杂性漫延所导致的成本不可控风险,从而可以健康的、可持续的为客户不断的提供产品和服务。
这是一个非常大的挑战,时至今日,即使华为云在国内政企市场份额已经数年蝉联第一,也仍然在坚持不断的探索和改进。实践证明,这并非是不可完成的任务。政企云场景的IaaS产品,完全可以做到以基线化的版本形态来交付客户。一方面,基础设施云化的刚需强烈,处于快速上升趋势,越来越多的客户在逐步理解和接受在这个转型升级过程中,所存在的风险,愿意和我们的咨询、产品规划、解决方案,研发以及交付服务团队一起,从需求合理性分析、规划、节奏控制到工程实施各个阶段协同合作,共同保障项目的成功;另一方面,在产品研发过程中,也要充分考虑满足客户场景和产品能够持续演进这两者的辩证关系,并脚踏实地的付诸实施,从而规避产品的分裂和碎片化。
华为云Stack基础设施服务的产品设计,基于公有云先进的架构技术和创新能力,采用了重构改造+积木式搭配+抽屉式替换等一些典型架构设计理念相结合的方式,继承式的迭代改良产品能力来满足政企客户场景。
- 重构改造:会侵入原有系统,但具备复用效率上的优势,适用于逻辑重叠且相对确定性的特性;
- 积木式搭配:与原有系统以接口方式松耦合集成,适用于逻辑相对独立的特性能力;
- 抽屉式替:换要求系统提供基于模型抽象的框架能力来组合差异化能力,可用于需要差异化灵活适配的场景。
下面我们结合几个具体例子,分享一些华为云Stack基础设施服务从场景分析到设计实现过程中的思考与实践。
IaaS架构设计实践
下面我们结合几个具体例子,分享一些华为云Stack基础设施服务从场景分析到设计实现过程中的思考与实践。
存量异构网络的集成网关
云内的网络自动化设计,通常面向的是云内资源,通过联动云内资源的生命周期管理模块,实现网络的自动化配置,云和外部的连接通常以存在Internet或专线接入为前提。政企客户由于多年IT基础设施的发展,积累了大量存量或异构资源,包括物理机、虚拟化、多种Appliance设备等,这些资源和云之间的连接,往往是同机房或近机房的短距离部署,不依赖Internet或专线,客户需要的是一种高效的二三层直连网络,帮助客户的应用快速上云和互通。
存量异构网络的集成网关正式面向这种场景的设计,考虑到VNF的带宽限制及成本,选择以单组800Gbps吞吐量*N组的硬件交换机来实现中转,可以低成本连接云内VPC网络并提供L2/L3互联能力,形成云内云外的一张网。
图2 集成网关架构设计
如图2所示,云内VPC网络控制器将虚拟机/裸机资源的虚拟网络位置信息,通过路由转换模块,转换为EVPN路由,通过消息机制通知集成网关的路由控制模块,配置到集成网关交换机,最后集成网关交换机根据路由信息,配置相应的云内VPC资源的ARP、MAC策略,以及到云内物理主机的隧道策略。
在这个设计中,云内控制器部分做了部分代码重构,新增了路由转换模块和云内VPC资源数据实施对接,同时新增了两个设备管理模块及路由控制模块,和云平台松耦合集成,可独立部署运行,通过积木式搭配满足该场景下的客户要求。
云主机同城主备容灾
政企关键应用在生产中心发生灾难时,需要能够在灾备中心快速恢复业务,另外日常维护的计划内停机,也往往会通过灾备中心过渡,在原生产中心完成计划性活动后将业务切回。云主机容灾服务即是针对这种场景的解决方案,和基于应用层的容灾方案所不同,云主机容灾服务提供了基于IaaS层可以无需上层应用感知或改造的主备容灾能力。客户也可以基于该能力,结合应用层容灾或应用双活的设计,来满足自身的需要。
图3 华为云Stack 同城双AZ容灾设计
这里以同城双AZ场景为例,如图3所示,当AZ1发生灾害,或需要做计划性维护时,管理员可以通过云主机容灾服务,将保护组内的业务通过自动或手工的方式在AZ2恢复。这个过程可以做到数据不丢失,业务恢复时间最小可达10分钟。
这是一个复杂的系统级解决方案,架构设计思想如图所示,采用一种分层解耦积木式搭建的思路:
- 存储层:研发HyperMetro特性实现数据在生产中心到灾备中心的实时同步,并相上提供双活LUN的接口能力,可以被上层系统松耦合集成。作为存储双活的原子能力,可用于传统IT的使用场景、云场景下计算多路径访问的高可用场景,也可以用于云主机容灾场景,由容灾服务调用进行双活LUN的配置和切换。
- 计算层:提供主备虚拟机的元数据获取和配置的原子接口,并提供灾备中心创建占位虚拟机的能力。容灾服务通过建立生产和容灾站点虚拟机之间的元数据映射关系,以保护组模型来管理,当需要进行故障切换时,可调用计算层接口进行容灾虚拟机的启动切换终止操作。
- 网络层:无论是否需要容灾特性,通用的多站点部署环境下,集中式形态的网元首先要解决自身的高可用能力,应对链路故障、网元集群故障、设备故障甚至控制软件问题等多种故障场景,而容灾只是其中一种整体AZ级别的故障模式。通过多集群冗余、链路冗余,设备探测、元数据同步、路由切换等多种手段的结合,首先设计了通用的多站点部署高可用能力,而后提供给容灾服务,来解决双AZ容灾的网络切换问题。
- 管控层:管控面服务自身的设计和网络类似,首先设计通用的站点内分布式集群冗余的高可用以及多站点部署环境下的高可用能力,解决管控面服务自身的故障切换问题,而后只需要暴露原子切换能力给容灾服务,针对站点故障时做容灾切换的操作。
可以看出,以上各层提供的是应对通用故障场景下自身的高可用原子能力,并且相互之间不形成依赖耦合关系。而容灾服务设计为一个独立解耦的模块,集成各层的能力,内聚编排、策略、演练、任务流程,并最终提供面向管理员的容灾服务化体验。
云平台集成3rd块存储
客户由于自身的采购策略或业务连续性等种种因素的考虑,会存在软硬件分层的诉求。从云平台软件的角度,一定程度的南向开放能力,也是作为软件平台的开放架构下的竞争要求,可以促进市场生态的繁荣。
同一厂商对自身同构设备的集成,由于研发组织协作紧密、特性路标规划明确、版本配套互锁,短路径集成性能更优等一系列原因,通常会忽略对良好的开放性和能力差异化的设计考虑。下图以云平台集成某3rd块存储的实践为例,分享一些云平台在南向开放集成时的设计思路。
图4 第三方存储集成设计
如图4所示,对南向设备的集成,包括管理运维、服务控制、及数据面集成几个层次。数据面的集成,包括存储、服务器及网络设备在内,采用成熟标准的协议来对接。管理运维通常直接采用设备厂商的自带系统,对于管理运维协议标准化成熟度较高的设备,也可以考虑集成到统一管理运维平台来提升体验。
控制面的集成,是设计复杂性的集中体现。一是设备的控制方式鲜有一致的标准,接口语法和语义各有不同,如果不做统一设计,逐款对接会导致管控面的处理逻辑代码相互耦合,难以维护;二是设备的能力、规格和性能参差不齐,多种组合会引起代码分叉严重,开发和交叉测试代价居高不下。
我们采用部分重构结合抽屉式替换的思路来缓解这个问题,模型部分抽象出存储服务等级描述如性能、容量、保护能力等,来简化屏蔽细节差异的代价;通用的南向框架提供以Driver机制接入的方式来集成多种不同类型的南向设备,减少对主体控制流程的侵入;自动配置重构优化针对设备能力差异如快照、回滚、复制、动态调整等特性做自动识别从而减少代码级别的耦合。进一步更灵活更解耦的优化改造也正在设计和实践中,包括彻底的二进制级的部署解耦,运维边界划分的设计,以及面向3rd设备厂商的开放的自动化集成测试验证流程的工具集等。
跨平台云主机迁移
IaaS技术的发展会存在一些跨代的阶梯式演进,如虚拟化引擎从XEN到KVM、经典VLAN网络到隧道网络,单体平台架构到分布式平台架构等等。在提供更先进的技术生产力的同时,也要尽量避免对客户的已上线业务造成影响。新平台通过解耦的管理系统纳管旧平台来水平演进,并提供平台间的网路互联服务,是一种比较稳妥的解决方案。而对于一些客户,也希望能够提供业务的迁移能力,高效的把旧平台上的存量业务便捷的迁移到新平台。
通用的迁移方式,是提供和云平台不相关的迁移工具,基于计算资源内的代理模块做数据同步和资源重建。这种方式的适用范围更广,但也存在着较为低效的问题,同时由于和云平台能力互不关联,数据模型的重建无法借助云平台提供,在迁移体验上会有损失。
基于这个考虑,在满足一定条件的前提下,我们针对部分高优先的场景,做了一些尝试和实践,可以基于存储数据不搬迁的方式重建计算资源,消减数据拷贝带来的影响,同时利用和云平台的配合,提升配置同步的自动化体验。
图5 跨平台云主机迁移设计
这个设计是独立解耦的积木式搭配思路,对云平台不做任何侵入式改造。基于独立的迁移服务模块,以松耦合北向API对接平台的方式,可以形成和云平台无关的可独立演进的服务,既不受平台版本的内部迭代变化和研发进度约束,又具备了可以持续累加能力的演进性。在当前实践的限定使用场景之上,未来也可以不断扩展到更多的平台形态,更多的服务特性如迁移、调度、网络互连,配置同步等,以及更广泛的多云跨云场景下的混合控制能力。
以上列举的几点,是华为云Stack基础设施服务和政企客户共同探索过程中沉淀下来的场景化产品能力,在众多客户的实际生产环境中发挥着良好的效果。同时我们也实践了软件架构设计中的一些典型思路,通过局部改造结合解耦分层设计的实践,有效避免了由于碎片化发散带来的产品不可持续演进的风险。
由于篇幅有限,更多的场景化能力和设计思考,会在后续的分享中提供。政企云基础设施服务升级的过程,道阻且长,行则将至,我们始终会和客户一起,共同努力,贡献我们的力量。