版权所有,未经华为书面许可,请勿转载或转发。
2.1.2
云计算平台架构
如本书前言所述,IT架构的演进经历了“合”、“分”、“合”的三个阶段。如图2-2所示。
图2-2
IT架构演进路径
在IT架构演进的第三阶段,为实现云计算梦想,首先需要把所有IT基础设施资源都高度集中化到一个数据中心去,通过云OS整合成为一台超大规模计算机,然后再按照每个租户的需求将资源动态切分提供给每个用户。于是从总体架构上我们发现了一个有趣的现象,我们的IT基础设施架构经历了一个从合,到分,再到合的过程。大型机时代,很多应用实例跑在封闭的平台之上,用户只能通过哑终端去访问集中的计算资源。到20世纪80年代,应用分布在多个处理能力相对较弱的处理单元上。进入当前的云计算年代,计算资源又重新回归整合,只不过不是封闭的硬件整合,而是基于松耦合独立节点网络连接,以及统一逻辑调度管控的整合。
“天下大势,合久必分,分久必合”。IT基础设施架构从合并、分离并重新走向融合。借助虚拟化及分布式云计算调度管理软件,将IT基础设施整合成为一个规模超大的“云计算机”,相当于建成了一座“基础设施电厂”。多个租户可以从这座电厂中随时随地获取到其所需的资源。云计算大大提升了业务敏捷度,降低了TCO消耗,甚至提供了更优的业务性能与用户体验。
然而,历史总是在螺旋式前进的,“云计算机”看似大型机,但绝非简单回到了大型机时代。
l
区别1:架构不同,规模扩展能力不同:
由“垂直扩展”到“横向扩展”;计算处理能力,存储容量,网络吞吐能力,租户/应用实例数量,均相差n个数量级以上,从硬件成本视角,TCO成本也越低。
l
区别2:硬件依赖性不同,生态链、开放性不同:
由“硬件定义”到“软件定义”;早期的IT系统,少数硬件厂家绑定OS和软件, IT只是少数用户的奢侈品。在新的时代,通过软件屏蔽异构硬件差异性,同一个硬件平台上,可以运行来自多个不同厂家的软件和OS。 新时代的IT生态链更加繁荣,IT成为人人消费得起的日用品。
l
区别3:可靠性保障方式不同:
由“单机硬件器件级的冗余实现可靠性”发展到“依赖分布式软件和故障处理自动化实现可靠性,甚至支持地理级容灾”。
l
区别4:资源接入方式不同:
将IT基础设施能力比作”电力”,大型机只能专线接入,是只能服务于少数人群的 “发电机”,基于企业以太网或者互联网的开放接入,是可以为更多人群提供服务的“发电站”和“配电网”。
基于上述分析,我们不难得出如下的云计算数据中心架构分层概要(见图2-3)。
图2-3
云计算数据中心解决方案端到端总体分层架构
物理资源层
所有支撑IaaS层的IT基础设施硬件,其中包括服务器,存储(传统RAID架构垂直扩展的Scale UP存储,以及基于服务器的分布式水平扩展的Scale Out存储),以及数据中心交换机(柜顶、汇聚以及核心交换),防火墙,VPN网关,路由器等网络安全设备。
虚拟资源层
虚拟资源层在云计算架构中处于最为关键与核心位置。该层次与“资源服务与调度层”一道,通过对来自上层操作系统及应用程序对各类数据中心基础设施在业务执行和数据平面上的资源访问指令进行“截获”。,指令和数据被截获后进行“小聚大”的分布式资源聚合处理,以及“大分小”的虚拟化隔离处理,以及必要异构资源适配处理。这种处理可以实现在上层操作系统及应用程序基本无需感知情况下,将分散在一个或多个数据中心的数据中心基础设施资源进行统一虚拟化与池化。
在某种程度上,虚拟资源层对于上层虚拟机(含操作系统及应用程序)的作用与操作系统对于应用软件的支撑关系是类似的,实质上都是在多道应用作业实例与底层的物理资源设备或者设备集群之间进行时分和空分的调度,从而让每道作业实例都“感觉”到自己是在独占相关资源,而实际上资源在多个作业实例之间的复杂、动态的复用调度机制完全由虚拟资源层屏蔽了。技术实现的主要困难与挑战在于,操作系统的管理API是应用程序感知的,而虚拟资源层则必须做到上层操作系统与应用程序的“无感知”,同时如何对于频繁的指令级陷入和仿真调度助力,做到令上层应用及OS可接受的性能开销。
虚拟资源层又包括三个部分,具体如下。
(1)计算虚拟化
所有计算应用(含OS)并非直接承载在硬件平台上,而是在上层软件与裸机硬件之间插入了一层弹性计算资源管理及虚拟化软件:弹性计算资源管理软件对外负责提供弹性计算资源服务管理API,对内负责根据用户请求调度分配具体物理机资源;虚拟化软件(Hypervisor)对来自所有的x86指令进行截获,并执行不为上层软件(含OS)所知的多道执行环境并行的执行“仿真操作”,使得从每个上层软件实例的视角,仍然是在独占底层的CPU、内存以及I/O资源(见图2-4);而从虚拟化软件的视角,则是将裸机硬件在多个客户机(VM)之间进行时间和空间维度的穿插共享(时间片调度,页表划、I/O多队列模拟等。由此可见计算虚拟化引擎本身是一层介于OS与硬件平台中间附加软件层,因此将不可避免地带来性能上的损耗。然而随着云计算规模商用阶段的到来,以及计算虚拟化的进一步广泛普及应用,越来越多的计算性能敏感型和事务型的应用逐步被从物理机平台迁移到虚拟化平台之上,因此对进一步降低计算虚拟化层的性能开销提出了更高要求,典型的增强技术包括以下内容。
l
虚拟化环境下更高的内存访问效率:应用感知的大内存业务映射技术,通过该技术,可有效提升从虚拟机线性逻辑地址到最终物理地址的映射效率。
l
虚拟化环境下更高的CPU指令执行效率:通过对机器码指令执行的流程进行优化扫描,通过将相邻执行代码段中的“特权”指令所触发的“VM_Exit”虚拟化仿真操作进行基于等效操作的“合并”,从容达到在短时间内被频繁反复地执行。由于每次VM_Exit上下文进入和退出的过程都需要涉及到系统运行队列调度以及运行环境的保存和恢复,也即将多次上下文切换合并为一次切换,从而达到提升运行效率的目的。
l
虚拟化环境下更高的I/O和网络包收发处理效率:由于多个虚拟机在一个物理机内需要共享相同的物理网卡进行网络包收发处理,为有效减少中断处理带来的开销;在网络及I/O发包过程中,通过将小尺寸分组包合并为更大尺寸的分组包,可以减少网络收发接受端的中断次数,从而达到提升虚拟机之间网络吞吐率的目的。
l
更高的RAS可靠性保障:针对云计算所面临的电信领域网络及业务云化的场景,由于硬件故障被虚拟化层屏蔽了,使得物理硬件的故障无法像在传统物理机运行环境那样直接被传送通知给上层业务软件,从而导致上层业务层无法对故障做出秒级以内的及时响应,比如业务层的倒换控制,从而降低了对整体可靠性水平。如何感知上层的业务要求,快速进行故障检测和故障恢复,保证业务不中断,这给计算虚拟化带来了新的挑战。
图2-4
计算虚拟化硬件接口
(2)存储虚拟化
随着计算虚拟化在各行业数据中心的普遍采用,x86服务器利用效率提升中已获得普遍应用的同时,人们发现存储资源的多厂家异构管理复杂、平均资源利用效率低下,甚至在I/O吞吐性能方面无法有效支撑企业关键事务及分析应用对存储性能提出的挑战,通过对所有来自应用软件层的存储数据面的I/O读写操作指令进行“截获”,建立从业务应用视角覆盖不同厂家、不同版本的异构硬件资源的统一的API接口,进行统一的信息建模,使得上层应用软件可以采用规范一致的、与底层具体硬件内部实现细节解耦的方式访问底层存储资源。
除去带来硬件异构、应用软件与硬件平台解耦的价值之外,通过“存储虚拟化”层内对多个对等的分布式资源节点的聚合,实现该资源的“小聚大”。比如,将多个存储/硬盘整合成为一个容量可无极扩展的超大(EB级规模)的共享存储资源池。由此可以看到,存储虚拟化相对计算虚拟化最大的差别在于:其主要定位是进行资源的“小聚大”,而非“大分小”。原因在于,存储资源的
“大分小”在单机存储以及SAN/NAS独立存储系统,乃至文件系统中通过LUN划分及卷配置已经天然实现了,然而随着企业IT与业务数据的爆炸式增长,需要实现高度扁平化、归一化和连续空间,跨越多个厂家服务器及存储设备的数据中心级统一存储,即“小聚大”。存储“小聚大”的整合正在日益凸显出其不可替代的关键价值(见图2-5)。
l
高性能分布式存储引擎:伴随着云计算系统支撑的IT系统越来越大,覆盖范围从不同服务器存储节点,到分布在不同地理区域的数据中心,这就需要有一个分布式存储引擎。这个引擎,能满足高带宽、高I/O等各种场景要求,能很好地进行带宽的扩展。
l
存储异构能力:如何利旧,将不同厂家原有的独立SAN、NAS设备组合成一个大的存储资源池,也是软件定义存储中需要解决的问题。
l
存储卸载:传统的企业存储系统,在采用各种各样的存储软件,这些软件存储操作对存储I/O和CPU资源均有较大消耗,会影响到用户业务性能的发挥。因此,如何将存储操作标准化,然后将存储操作利用某些标准的硬件动作去代替,这就是存储卸载。
图2-5
存储虚拟化硬件接口
(3)网络虚拟化
站在操作系统角度,OS管理的资源范畴仅仅是一台服务器,而Cloud
OS管理的资源范畴扩展到了整个数据中心,甚至将跨越多个由广域网物理或者逻辑专线连接起来数据中心。在一台服务器内,核心CPU、内存计算单元与周边I/O单元的连接一般通过PCI总线以主从控制的方式来完成,多数管理细节被Intel
CPU硬件及主板厂家的总线驱动所屏蔽,且PCI I/O设备的数量和种类有限,因此OS软件层面对于I/O设备的管理是比较简单的。相对而言,在一个具备一定规模的数据中心内,甚至多个数据中心,各计算、存储单元之间以完全点对点的方式进行松耦合的网络互联。云数据中心之上承载的业务种类众多,各业务类型对于不同计算单元(物理机、虚拟机)之间,计算单元与存储单元之间,乃至不同安全层次的计算单元与外部开放互联网网络和内部企业网络之间的安全隔离及防护机制要求动态实现不同云租户之间的安全隔离。云数据中心还要满足不同终端用户不同场景的业务组网要求以及他们的安全隔离要求。因此,云操作系统的复杂性将随着云租户及租户内物理机和虚拟机实例的数量增长呈现几何级数的增长,由业务应用驱动的数据中心网络虚拟化和自动化就变得势在必行和不可或缺。为了实现彻底与现有物理硬件网络解耦的网络虚拟化与自动化,唯一的途径与解决方案就是SDN(也即所谓软件定义的网络),即构建出一个与物理网络完全独立的叠加式逻辑网络,其主要部件和以及相关技术包括:
l
SDN控制器:这是软件定义网络的集中控制模块。负责云系统中网络资源的自动发现和池化、根据用户需求分配网络资源、控制云系统中网络资源的正常运行。
l
虚拟交换机:根据SDN控制器,创建出的虚拟交换机实例。可以对这个虚拟交换机进行组网的设计、参数的设置,一如对物理交换机的使用。
l
虚拟路由器:根据SDN控制器,创建出的虚拟路由器实例。可以对这个虚拟路由器进行组网的设计、参数的设置,一如对物理路由器的使用。
l
虚拟业务网关:根据用户业务的申请,由SDN控制器创建出的虚拟业务网关实例,提供虚拟防火墙的功能。可以对这个虚拟业务网关进行组网的设计、参数的设置,一如对物理业务网关的使用。
l
虚拟网络建模:面对如此复杂多变的组网,如何保证网络的有效区分和管理,又能保证交换和路由的效率,一个有效的建模方法和评估模型是需要的。虚拟网络建模技术能提前预知一个虚拟网络的运行消耗、效率和安全性。虚拟网络建模可以做成一个独立功能库,在需要的时候启动,以减少对系统资源的占用。
资源服务与调度层
相对虚拟化层在业务执行面和数据面上“资源聚合与分割仿真”,该层次主要体现为管理平面上的“逻辑资源调度”。
在同一物理计算集群内对多厂家异构Hypervisor的兼容性支持:由于多个厂家已经投入到云计算的研发和实施中,不可避免地有多种实现方式。而要实现云计算真正的产业化并被广泛使用,各厂家的云计算平台必须要能够互相交互,也即进行接口标准化。接口标准化后,主流的虚拟化平台,例如Hyper-V、KVM、UVP、ESX等之间能够互相兼容。各个硬件厂家或者中间件厂家可以自由选择虚拟化内核。
在云计算新的发展阶段中,面向公有云、面对国际化公司的分布式云系统将是重点。从而引发对超大资源的分配和调度。在整个云计算的实现架构上,计算、存储、网络资源的分配和使用将走向专业化。这是因为一个云应用业务,根据性质的不同,它对计算、存储、网络资源的需求可能是不一样的,例如:呼叫中心业务偏向于计算资源使用,而对于网盘业务则偏向于存储资源使用。在这种情况下,为更有效地利用资源,给业务层提供基本资源调用API是最好的选择,将计算、存储、网络资源都作为基本资源单位,提供统一的资源调用接口,让云业务开发者自己选择如何高效地使用这些资源。这些API包括:
l
弹性计算资源调用API:计算资源包括CPU和内存,云计算平台根据云运营商的要求,已经将CPU和内存虚拟化和池化。系统提供资源的动态申请、释放、故障检测、隔离和自动切换功能,做到业务不感知。CPU资源又可以分为纯计算型、图像处理型等不同类型。不管是CPU还是内存,都提供瘦分配功能,资源的自动伸缩保证在低业务量时减少资源的消耗,高业务量时开启所有物理资源,确认业务的高效运行。计算资源API还需要提供集群能力。
l
弹性存储资源调用API:存储资源API提供文件或者卷接口,除了提供常见的资源申请、释放、瘦分配等功能外,还涉及其他几个关键方面:
n
异构资源的池化:不同的厂家在将存储资源池化后,提供统一的API,1个厂家可以利用这些API,将不同厂家的存储资源池构成一个大的资源池,然后在封装出API供业务调用。
n
存储资源的分层分级存储:因业务性能要求的不同,分层存储是一个常用的技术,业务系统在申请存储资源的时候,可以选择是否使用这个特性。
n
内存存储资源的支持:未来的系统,内存一定会成为主存,所有的存储,除非一些特别重要的信息,基本上不再需要存入非易失性介质。而使用内存资源作为主存,在可靠性是关键要求。在构造内存存储池的时候,可靠性必须贯彻始终,每个内存存储在其他地方有备份,或者确保内存存储有可靠地UPS保护。
l
弹性网络资源调用API:网络资源API的基本功能也包括资源的申请、释放、监控、故障隔离和恢复等,也需要考虑异构资源的统一化。
数据服务层
数据服务层是叠加在基础设施服务之上,具备多租户感知能力的结构化、半结构化及非结构化数据服务能力。
通过对弹性资源层和数据服务层的一些紧密接口的实现,提高数据存储的效率。
结构化数据服务:结构化数据服务子层提供对结构化数据的存储和处理功能,它通过叠加各种结构化数据库软件来实现。例如常见的Oracle\Sybase\HANA等。为提高处理效率,弹性存储资源调度层会针对不同的基于磁盘或者基于内存的数据库,提供更高效的存储资源调用API。例如面向HANA内存数据库,提供内存专用的存储资源调用API接口。
非结构化数据服务:这个子层主要是叠加常见的NoSQL数据库的功能模块,例如Map-reduce、HBase等等。提供弹性存储资源的特殊接口。
流数据服务:流数据服务更多地涉及对特殊CPU资源和专用芯片资源的使用。在弹性计算资源API中提供一些专用接口,来进行流数据的高效输入、压缩、解压缩、处理和转发。
云管理层
除掉上面各子系统之外,还有纵向拉通云平台各服务层及子系统的云管理子系统,负责端到端云计算服务实例的创建发放,生命周期管理,服务SLA水平保障,对云计算数据中心物理及虚拟化平台基础设施,以及平台基础设施与上层业务关联的FCAPS日常操作与维护业务。
云管理与传统电信的OSS/BSS系统的最大差异在于其多种不同横向与纵向资源整合的全自动化,智能化的支持。
中间件服务层
为提供一些基础服务,系统在某些场景下还需要做一些适配服务,例如,提供桌面云时,需要提供桌面云相关的应用协议、桌面应用的调度等;面向不同业务群提供大数据服务时,需要做一些应用的适配。