黑龙江移动早已在2010年,在业务支撑系统中引入服务器虚拟化技术,同时,将业务支撑系统逐步迁入云管理平台中进行管理。在传统的虚拟化方案中,云平台的高可用、稳定性主要由基础架构决定,如高可用、系统在线迁移、资源动态调度等机制,都依赖于特定厂商的特定解决方案。
虚拟化技术解决了传统的应用竖井架构所带来的资源利用率低等问题,但也又出现了新的瓶颈:在系统持续运行过程中,如何匹配计算资源与存储资源,减少集群内的资源碎片化,需要设计、运维部门进行持续优化与调整。
为解决上述问题,本文通过分析,提出了新的基础架构设计方案,谨供各�营商在业务支撑系统云化演进过程中参考。
二、传统方案存在的问题
(一)基础架构竖井
业务支撑系统在实施虚拟化之前,各个子系统拥有单独计算、存储资源,是典型的竖井式架构,存在资源利用率低下的问题。
在虚拟化过程中,普遍使用了VMware(一种虚拟化软件产品)虚拟化集群,事实上,形成新的集群竖井:资源调度边界为虚拟化集群,集群间的计算资源、存储资源无法实现共享。如集群内可以计算资源比较富余,但由于外置存储容量不足,而无法加载新的应用实例(虚拟机),形成计算资源碎片。
(二)虚拟化高可用
在VMware虚拟化集群中,采用了高可用机制,需要昂贵的外置存储资源。当一个服务器节点出故障,如系统崩溃、或宕机时,虚拟机恢复需要长达几分钟之久,这意味着业务也会中断相应的时间。
(三)虚拟化调度
在VMware虚拟化集群中,当服务器资源紧张时,传统的动态资源调度机制会迁移虚拟机至空闲服务器,会引起短暂的网络流量增加,导致资源争用。在手工迁移虚拟机时,或动态资源调度触发的迁移操作,对于业务量较大,读写频繁的虚拟机,在切换时会有长达几十秒钟的挂起时间,直接影响业务系统终端用户的使用满意度。
三、业务云化对应用的要求
为解决基础架构层虚拟化环境现存弊端,需要在业务层进行云化。业务层云化过程中,需要对应用系统进行改造。
(一)分布式处理能力
在基础架构层虚拟化改造后,每个子系统的计算能力仍依赖于虚拟机的CPU(Central Process Unit)/内存配置,计算能力的提升需要进行纵向扩展。分布式计算为应用系统提供了水平扩展能力:通过运行多个应用实例(虚拟机、虚拟化容量、或物理机),并发处理业务需求。
(二)应用与数据分离
应用与数据分离的目的是实现应用实例的无状态化:对应用实例进行同质化改造,临时数据、持久化数据独立于应用实例进行保存,保持应用实例的最小化。
如业务处理过程中的会话数据,独立于W e b服务器、应用服务器,单独保存在Memcached、Redis等分布式缓存系统;应用系统、操作系统日志汇集于集中的日志服务器,进行归档与分析。
(三)资源动态弹性伸缩
在应用系统具备了分布式处理能力后,为提高资源利用率,引入资源弹性伸缩机制,根据应用对资源的需求进行动态匹配,实现系统动态扩容、闲置资源回收、隔离故障等功能。
(四)去厂家绑定化
由云管理平台Paas(Platform as a Service,平台即服务)组件实现弹性调度机制,自动控制应用实例的部署、启动、停止、删除。应用系统的健壮性不再依赖于虚拟化平台的高可用、动态资源调度等特性,从而减少因购买虚拟化平台所产生的高额许可费用。
四、基础架构设计
(一)基础架构层
业务云化应用架构部分由云管理平台Paas组件实现,主要有应用集群的定义、资源调度、弹性伸缩、健康监控、故障隔离等功能。为适应业务云化改造,本文提出Iaas(Infrastructure as a Service,基础架构即服务)层基础架构层设计方案。
1.高可用及资源调度
在云管理平台上,提供应用实例的弹性扩展与收缩能力,包括提供虚拟机、计算虚拟化容器、物理机的弹性扩展与收缩能力,在基础架构层,不再提供高可用设计,高可用及资源调度。
2.去集群化
构建虚拟化集群的目的,是为了在基础架层实现虚拟机的高可用转移、动态资源调度,上述功能已被云管理平台弹性资源调度代替,因此,基础架构层应不再做集群化配置,减化系统设计复杂度与运维工作量。
(二)计算资源架构
1.资源池化
在基础架构层,取代虚拟化集群的是计算资源池。系统分为物理机资源池、虚拟化资源池、容器资源池、大数据资源池四个在用资源池,同时,系统中配置一个空闲资源池。在每个在用资源池中,服务器独立运行,对于每个子业务,由云管理平台在应用层进行管理,将应用集群部署于在用资源池中。
2.资源池弹性调度
类似应用集群弹性调度,资源池也采用弹性调度机制,提供资源动态调整。当在用资源池资源容量紧缺时,从空闲资源池获取服务器资源,加到本资源池;在用资源池使用率过低时,归集应用实例至少量物理服务器上,把服务器回收至空闲资源池。
3.自动化部署与资源回收
空闲服务器加入在用资源池时,云管理平台对服务器进行PXE(Pre-boot Execution Environment,预启动执行环境)安装,在交换机上启用服务器生产网络端口,加入相应在线资源池VLAN(Virtual Local Area Network,虚拟局域网)。服务器从在用资源池回收至空闲资源池时,做一下反向的操作:禁用把服务器连接交换机的生产端口,或移入空闲池VLAN。
4.存储本地化
在资源池中,服务器独立使用,上面运行的应用实例不需要进行系统迁移,因此,服务器使用本地磁盘作为应用实例(即虚拟机,或虚拟化容器)的存储介质,不再使用共享存储。 应用实例做了无状态化改造,只保存操作系统及临时数据,一般情况下,本地存储足够支撑应用实例的存储容量要求。因此,因存储不足导致无法加载应用实例的情况,不会再次发生。
(三)网络资源架构
1.大二层结构
在同一个数据中心内部,每个资源池的服务器完全对等,为保证应用实例可部署于任何服务器上,要求在网络层使用大二层结构。
为实现容灾、多活等功能,保持生产数据中心、灾备数据中心可访问相同的业务地址网段,需要在数据中心间建设大二层网络。
2.SDN架构
为实现资源池的弹性伸缩,动态调整计算资源的安全域,需要SDN(Software Defined Networking,软件定义网络)技术实现对服务器的网络进行动态配置。
在网络管理上,结合服务器虚拟化、虚拟化容器虚化技术,引入SDN技术,根据不同的资源池,VTEP(Virtual Tunnel End Point,虚拟隧道终结点)终结于不同的设备:对于大数据、物理机资源池,VTEP终结于边缘交换机;对于虚拟化资源池,VTEP终结于Hypervisor(虚拟化管理程序)的虚拟交换机上;对于虚拟化容器资源池,VTEP�K结于Linux服务器的虚拟交换机上。
SDN技术有效地实现了网络虚拟化,实现了网络转发、控制流量的分离机制。通过SDN技术,网络基础架构只实现管理网络、Underlay(承载)网络VLAN的透传,业务网络控制由SDN控制器动态架载至Overlay(叠加)网络上。在增加业务系统网络变更时,无需在网络基础架构层进行变更,保证了基础架构的稳定性;同时,通过SDN方案,隔离了业务租户的网络配配置,在业务开通时,解决了网络资源的快速供给问题。
(四)存储资源架构
1.非业务数据
由于虚拟机或虚拟化容器是无状态的应用实例,由云管理平台调度动态生成或销毁,因此,无需共享存储永久保存。非业务数据包括虚拟机、虚拟化容器的操作系统、操作系统日志等,这一类数据可保存于服务器内置存储,或廉价的NAS,或分布式存储上。
2.结构化数据
在业务支撑系统中,结构化数据保存于数据库中,为提高数据库的效率,现一般数据路由、采用垂直或水平拆分的方案,进行数据库层云化改造。数据库是整个业务支撑系统的核心,一般对磁盘IO(Input and Output)并发量、吞吐量有严格的要求,因此,按照传统方案,数据库仍保存于FC(Fiber Channel)或ISCSI(Internet Small Computer System Interface)块存储设备中。
3.非结构化数据
对于文本、图片等非结构化数据,可使用的存储技术有:并行文件系统、NAS(Network Attached Storage,网络附加存储)存储、分布式存储等。并行文件系统如GPFS(General Parallel File System,通用并行文件系统)、GFS(Global File System,全局文件系统)等,由于此类系统需要额外的安装、配置、维护,增加运维的工作量。
所以,此类数据采用NAS存储来实现,优点是NAS系统的文件系统已经过优化,且具有通用的NFS(Network File Syste,网络文件系统)、CIFS(Common Internet File System,通用互联网文件系统)、FTP(File Transfer Protocol,文件传输协议)接口,与现有业务应用集成代价较小。
4.分布式存储应用
在本质上,分布式存储是安装了存储软件的x86集群构成,支持块存储、NAS存储、对象存储等协议。具有容量大、价格低的特点,因此,历史数据可存放于分布式存储设备上。
需要NAS存储支持的非结构化数据等场景,也可以使用分布式存储方案。从成熟度上考虑,建议先从边缘应用开始使用分布式存储,逐渐过渡到核心应用数据。
五、结论与展望
在业务支撑系统云化初期,选择了基于基础架构层的商用虚拟化集群方案,来提高系统的可用性与可靠性,是一种自下而上的云化过程。由于基础架构层虚拟化方案并不能解决云化过程中所有的问题,所以提出业务云化改造方案。
业务云化可以有效提高计算、存储资源的利用率,实现业务应用的弹性部署与回收,提供业务系统不间断运行的能力。基于业务云化,部分应用实例失效、服务器失效不会影响整个系统正常运行,减少了应用系统对硬件、虚拟化平台的依赖。
从这个角度上讲,现有的业务应用可从商用的虚拟化平台迁移至开源虚拟化平台,以节省每年的大量采购与维护成本。进一步,可将应用实例从物理机/虚拟机改造为虚拟化容器实例,借助于容器虚拟化内置的Paas特性,云化改造进入全新的容器化Paas阶段。