面向互联网应用的云操作系统的架构设计
来源:上海大学学报 更新时间:2014-03-19
   云计算是一次新的IT革命。目前,普遍认为云计算服务可以分基础设施即服务(Infrastructure as a service,IaaS)、平台即服务和软件即服务3类。IaaS面向企业用户,提供包括服务器、存储、网络和管理工具在内的虚拟数据中心,可以帮助企业削减IT建设成本和运维成本。在数据中心的物理基础设施上,IaaS通过虚拟化技术整合出了虚拟资源池。对提供基础设施提供商来说,云计算平台主要是由各种机器组成的数据中心、一组部署管理的软件以及通过部署生成的虚拟机组成。与现有的企业数据中心相比,云计算平台具有很多优势,如灵活的IT基础架构、资源的按需分配和资源的快速供给等,这些特点使得云计算特别适合于互联网环境下为用户提供短期的、灵活的服务。
    随着云计算应用技术的发展,数据中心面临着新的挑战和发展机遇。传统的数据中心,无论是企业私有数据中心,还是以提供租赁服务为主的运营商互联网数据中心(Internet data center,IDC),都面临飞速增长的空间拥挤、能耗巨大和管理复杂等问题。在云计算环境下,采用以虚拟化为核心技术的新一代虚拟数据中心在高密度的硬件资源环境下,占用更少的机架、电源和空调等物理资源,可以更快速、灵活、有效地部署更多的应用,促进数据中心“绿化”建设。更为潜在的作用是,云计算数据中心机房可以显著降低人员及管理成本,在经过低成本的改造过程后机房运维可以实现无人值守、实时监控、自动系统安装和硬件故障报警等综合性的云服务系统。
    中小企业是推动中国云计算发展的主要驱动因素之一。对正处于成长期的中小企业而言,投资建设IT基础架构的投资回报率较低,并且很难与业务的快速成长匹配。云计算具有部署灵活、随需随用、按需定制和性价比高等特点,能为这些中小企业提供合适的解决方案。
    随着互联网基础设施的快速发展,互联网应用已经渗透到社会生活的各个方面。互联网应用具有高吞吐率、高并行性和较强的交互性等特点,在服务上具有非确定性,表现为“尽力而为”,较少涉及到复杂的运算。互联网应用的特征为开发云操作系统提供了最基本的依据。互联网应用的迅猛发展对云操作系统提出了新的挑战和需求。目前,面向大型互联网的云计算的关键技术主要还是掌握在外国大型公司的手中。探究大型互联网环境中大规模计算资源、网络资源、存储资源和软件资源等的灵活调度及按需部署仍然是一个较为前沿的研究课题。
    云计算对运营商是发展契机,一方面它能够优化IT资源、降低企业内部的运营成本,另一方面也是运营IT业务的切入点。为解决目前实际运维中出现的管理成本高、第三方提供的云平台的许可费过高且不满足动态多变的互联网应用需求等问题,必须设计和开发云操作系统INACloud。 INACloud要尽可能兼容既有资源,并能与现有业务平台对接,其主要目标服务群体是中小企业,并要求具有方便的定制能力,表现为以下两方面:
    (1)自动化资源部署。“云”的核心功能是自动为用户提供IT服务,用户、管理员和其他人员能通过界面对云计算平台进行管理和监控。完全自动化的部署流程不仅符合安全要求,而且能自动满足用户的需求,通过提高现有资源的利用率和复用率节省成本。
    (2)端到端服务请求管理。该流程管理可以提供对服务请求的全周期管理,包括订单处理、系统开通和服务计费等。
    1.开源云计算操作系统选型
    “全新”设计一个云操作系统,从成本效益来看是不可取的。既要满足自己的需要,又要避免陷入成本陷阱,因此,更可行的途径是选择一个合适的开源云操作系统作为基础,进行本土化定制和二次开发。
    除Amazon,Google提供的云计算操作系统外,云计算操作系统还包括Eucalyptus等。每种云计算操作系统都具有一定的特点,其中大部分云计算操作系统采用开源模式,但社区规模较小,活跃程度也不高。除了Eucalyptus系统积极地鼓励社区用户参与项目的开发与测试之外,其他云计算操作系统选择开放源代码只是一种营销策略,并且价格大多较贵。另外,部分操作系统每年需要更新一次服务器许可证,仅管理和维护许可证就是个复杂问题。
    国内开发云计算操作系统较晚,目前仍处于起步阶段,所以大多直接引入国外的云操作系统或通过引进国外商业产品的技术核心及平台进行架构。浪潮、中兴、阿里巴巴和华为等公司相继推出了各自的云计算系统或云计算平台,如浪潮的“云海OS、中兴的“CoCloud云操作系统”和阿里巴巴的“阿里云OS”等。这些云操作系统还处于探索阶段,尚未广泛使用,并且系统的性能、价格和安全性等还有待市场检验。考虑到知识产权、建设成本和管理成本等因素,研究并自主开发开放的、兼容的、满足实际运营需求的云操作系统十分必要。
    结合目前业界最先进的虚拟化技术、开源IaaS平台管理技术,利用自身云计算运营的经验,进行研发、改造生成满足运营需求、技术领先的云计算管理平台。经过初步筛选,本工作重点考察OpenStack和CloudStack开源云计算平台,并分别搭建测试环境。通过一系列的技术、业务开展等方面的比对,整理的重要指标见表1。
表1 OpenStack和CloudStack的对比
表1 OpenStack和C1oudStack的对比 放大图片
    C1oudStack平台的前身是Cloud.com的平台,作为全球最成功的公共云平台之一,已经帮助至少85个大规模生产性云平台实现了10亿美元以上的运营收入。它支持VMWARE ESX,Xen,KVM,Hyper-V和Bare Metal裸金属服务器,并提供了大量的云计算管理工具,如VM自助式供应、动态工作负载管理和多租户管理等。
    出于后续运营及技术等方面的考虑,本工作决定采用以CloudStack为主,参考OpenStack的方式进行后续云计算操作系统的研发。
    2.INACloud的架构设计
    云计算平台采用树状分层结构(见图1),其层次结构定义如下:
 图1 资源组织结构 放大图片
图1 资源组织结构
Fig.1 Structure of resources organization
    (1) Zone。一个Zone包含多个pod和二级存储,是最大的组织单元,传统上对应一个数据中心(在数据中心可以有多个zone),优点是提供物理上的独立性和冗余性。
    (2) Pod。一个硬件阵列,包含一个2层交换机、若干个集群。Pod类似于机架,同一Pod中的主机在同一子网中。Pod对于最终用户是不可见的。
    (3) Cluster。一个CIuster包括若干个主机和主存储。集群提供一种组织节点的方式,可以是XenServerserver池、一组KVM server或者是事先在vCenter中事先配置好的VMvare集群。一个集群中的计算节点有同样的硬件、hypervisor和子网,能够访问共享的主存储。虚拟机能够在不中断的情况下于一个集群内迁移。
    (4) Host。单个的计算节点,以虚拟机的形式提供真正的云服务。
    (5)主存储。与一个集群相连,负责保存虚拟机运行时所需的磁盘卷。
    (6)二级存储。与一个Zone相连,存储模板、ISO镜像和磁盘快照等。
    2.1 组件结构
    CloudStack采用“框架+插件”的系统构架,通过不同的插件来提供对不同虚拟化技术的支持,同时,这种系统构架也为定制CloudStack提供了可能性。如图2所示,INACloud在CloudStack上增加了调度服务、计费服务和监控服务等。
图2 INACloud的组件结构 放大图片
图2 INACloud的组件结构
Fig.2 Structure of INACloud components
    2.2 网络结构
    CloudStack的网络设计是一个亮点,也是其被商业广泛应用的一个主要原因,INACloud则直接借用了这种设计模式。
    根据不同的数据流量类型设计公共、管理、客户和存储网络,简称PMGS。
    公共(P):用于虚拟机访问外网,所有的HypervIsor都需要共享Public Vlan以保证虚拟机对外网的访问。
    管理(M):用于云内部通信,包括管理服务器节点与Hypervisor集群、系统虚拟机或其他组件之间的通信等。
    客户(G):用于最终用户运行虚拟机实例时的通信和虚拟机实例之间的通信。
    存储(S):用于主存储与Hypervisor、二级存储之间的通信。
    网络模式根据安全性不同分为基本网络和高级网络,其中M,G,S网络对基本网络和高级网络通用,而P网络只针对高级网络。两种网络模式的主要区别在于对G网络采用的隔离方式,前者采用Security Group方式,而后者采用VlAN方式。
    另外,系统虚拟机的虚拟路由器在高级网络模式中十分重要,它为租户私有网络与公共网络之间的接口,并为租户的私有网络提供各种网络服务,包括NAT,静态NAT,DHCP,DNS,Load Balancing,Port Forwording,Firewalls,Site-to-Site VPN等。
  2.3 与现有业务系统对接
    为便于与现有业务系统的对接,所有云操作系统的API都可以通过HTTP GET/POST带上命令及其参数的方式进行访问;同时,云操作系统的对外功能层提供基于SOAP消息格式的Web服务和基于JSON消息格式的RESTfuI服务访问方式(见图3)。
图3 云操作系统与电信系统的对接 放大图片
图3 云操作系统与电信系统的对接

    3.可定制的云平台管理功能
    3.1资源调度
    INACloud包括常用的3种负载均衡算法。
    (1) Roundrobin,即简单轮询调度,调度器通过“轮询”算法将外部用户请求按顺序分配到集群中的每个物理服务器上。该算法平等地对待每一台Real Server,而不受服务器上实际的负载状况和连接状态影响。
    (2) Leastconn,即最少连接调度,调度器将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。
    (3) Source,即“源地址”调度,调度器根据请求源IP进行散列(hashing)来调度。
    INACloud还包括:基于经济成本函数的调度算法,即最少费用原则;Lastsame算法,即尽量与上一次的调度结果一致;最快响应算法,即试图与用户历史中最快响应的虚拟机调度分配一致。
    这些调度算法以服务的形式提供给用户,并可通过用户门户来选用。调度服务采用目前流行的Web服务器Tomcat和JSP技术,实现读取XML数据显示在浏览器页面中,并融入INACloud管理平台。
    自定义调度算法通过云操作系统的2个接口进行定制。
    (1)主机资源调度接口
      (2)存储资源池调度接口
    3.2 资源监控
    由于云计算具有自动化、弹性可扩展的特点,因此,云计算环境中的资源监控显得格外重要。
    监控系统分为采集、信息处理与存储、展现以及警告4个主要功能,其中采集的内容包括主机的CPU状态、内存使用情况、INACloud平台运行状况(包括事件和警告)和网络流量等信息(见图4)。监控管理器(MServer)根据不同的采集频度,采用轮询的方式定期访问收集器(Collectors),Collectors负责采集数据。MServer接收到数据后按照设定的策略,定期将历史信息存入HBase中。这些数据可为负载均衡或者动态迁移等模块提供信息。监控客户(MCLient)根据用户要求从MServer获取相关数据后,绘制易于用户阅读的图表格式呈现给用户。MServer对于收集到的信息进行分析,若发现主机或云平台的异常,会借用开源监控系统Nigos提供报警功能,使用户可以快速地定位错误,并对错误进行修复。
 图4 INACloud的资源监控 放大图片
图4 INACloud的资源监控
    3.3 计费管理
    C1oudStack没有实现计费系统,但是有相应的模块对资源使用情况进行记录,提供某账户的资源累计使用情况。INACloud利用这些数据进行计费,并将定制的计费策略集成到云计算操作系统中。
    通过对照Amazon的云计算资源的计费模式和云计算业务的运营经验,开发了INACloud的计费模块,并通过对用户实际使用的云计算资源进行细颖粒的统计计费,计算出用户某段时期内虚拟机、存储和网络的费用(见图5)。
 图5 INACloud的计费界面 放大图片
图5 INACloud的计费界面

    4.结束语
    INACloud旨在打造动态、开放的云服务平台,向下整合多厂商的云计算基础产品和解决方案,向上联合更多的云服务提供商,以开源软件CloudStack为基础,进行了功能定制和二次开发以满足实际运维的需要。
    为适应中小企业用户的量多、短期和动态性强的特点,INACloud提供了多样化资源调度算法、单点登录和多种计费收费策略等功能。
    鉴于互连网应用的交互性要求,采用4种网络类型、2类网络模式的网络结构,以便更好地进行数据分流和带宽分配。
    试运行结果表明,INACloud的架构与设计在与原有系统的衔接、成本控制和解决许可证费用等方面均取得了良好的效果。