OpenStack架构与组成

在2010年OpenStack社区首次发布其第一个发行版——Austin时,OpenStack仅包含两个项目Nova和Swift,仅能实现非常简单和基础的功能。时至今日,OpenStack已经日渐成熟和强大,其组成项目也已经大大增多,仅包含在Mitaka版本release notes中的服务项目就多达29个。各个项目各司其责,分工合作,共同形成了一个架构灵活、功能丰富、扩展性强的云操作系统框架。为便于读者快速了解OpenStack的概貌,但又不致淹没在众多的信息当中,本节将优先选择OpenStack中最为关键和有代表性的部分项目,进行扼要介绍,以便帮助读者更为直观地了解OpenStack。


1. Keystone:身份认证与授权服务将计算、存储、网络等各种资源,以及基于上述资源构建的各类IaaS、PaaS、SaaS层服务,在不同的用户间共享,让众多用户安全地访问和使用同一个云计算系统,是一个云操作系统的基本能力。而实现这个能力的基础,就是一个安全可靠的身份认证与授权服务。而Keystone就是OpenStack的身份认证与授权服务项目。Keystone负责对用户进行身份认证,并向被认定为合法的用户发放令牌(token)。用户持Keystone发放的令牌访问OpenStack的其他项目,以使用其提供的服务。而各个组件中内嵌的令牌校验和权限控制机制,将与Keystone配合实现对用户身份的识别和权限级别的控制,保证只有恰当的用户能够对恰当的资源实施恰当的操作,以此保证对不同用户资源的隔离与保护。


2. Nova:计算服务向用户按需提供不同规格的虚拟机,是任何一个云操作系统最为基础的功能。而Nova就是OpenStack中负责提供此类计算服务的项目。Nova的核心功能,是将大量部署了计算虚拟化软件(即Hypervisor)的物理服务器统一纳入管理之下,组成一个具有完整资源视图的逻辑资源池。在此基础上,Nova通过接收不同用户发起的请求,对资源池中的资源进行生命周期管理操作。其中最为核心的,就是虚拟机的创建、删除、启动、停止等操作。通过执行客户发起的虚拟机创建操作,Nova将逻辑资源池中的CPU、内存、本地存储、IO设备等资源,组装成不同规格的虚拟机,再安装上不同类型的操作系统,最终提供给用户进行使用,由此满足用户对于计算资源的需求。除了虚拟机资源管理服务能力之外,Nova还通过与Ironic项目配合,共同为用户提供裸机资源管理服务能力。具体而言,Nova可以接收用户发起的裸机资源申请,然后调用Ironic项目的对应功能,实现对裸机的自动化选择、分配与操作系统安装部署,从而使得用户可以获得与虚拟机资源使用体验相当的物理机资源使用体验。


3. Ironice:裸机管理Ironic通过与Nova相配合,共同为用户提供裸机服务能力。在实际工作时,Ironic直接负责对物理服务器的管理操作。一方面,在物理服务器被纳入到资源池之中时,Ironic负责记录物理服务器的硬件规格信息,并向Nova上报;另一方面,在用户发起裸机管理操作时,Ironic负责根据Nova的指令,对相应的物理服务器执行具体的管理操作动作。例如,当用户发起一个创建裸机操作时,Ironic需要根据Nova调度的结果,对选定的物理服务器执行硬件初始化配置、操作系统安装等一系列具体操作,以完成裸机创建动作。


4. Glance:镜像服务通常而言,在虚拟机被创建之后,都需要为其安装一个操作系统,以便用户使用。为此,云计算系统中往往需要预置若干不同种类、不同版本的操作系统镜像,以便用户选用。此外,在一些应用场景下,为进一步方便用户,镜像中还需要预装一些常用的应用软件,这将进一步增加镜像的种类与数量。为此,云操作系统必须具备镜像管理服务能力。Glance就是OpenStack中的镜像服务项目。Glance主要负责对系统中提供的各类镜像的元数据进行管理,并提供镜像的创建、删除、查询、上传、下载等能力。但在正常的生产环境下,Glance本身并不直接负责镜像文件的存储,而是仅负责保管镜像文件的元数据,本质上是一个管理前端。Glance需要与真正的对象存储后端对接,才能共同提供完整的镜像管理与存储服务能力。


5. Swift:对象存储服务对象存储服务,是云计算领域中一种常见的数据存储服务,通常用于存储单文件数据量较大、访问不甚频繁、对数据访问延迟要求不高、对数据存储成本较为敏感的场景。Swift就是OpenStack中用于提供对象存储服务的项目。与OpenStack中大部分只实现控制功能、并不直接承载用户业务的项目不同,Swift本身实现了完整的对象存储系统功能,甚至可以独立于OpenStack,被单独作为一个对象存储系统加以应用。此外,在OpenStack系统中,Swift也可以被用做Glance项目的后端存储,负责存储镜像文件。


6. Cinder:块存储服务在典型的、基于KVM虚拟化技术的OpenStack部署方案下,Nova创建的虚拟机默认使用各个计算节点的本地文件系统作为数据存储。这种数据存储的生命周期与虚拟机本身的生命周期相同,即当虚拟机被删除时,数据存储也随之被删除。如果用户希望获得生命周期独立于虚拟机自身的、能够持久存在的块存储介质,则需要使用Cinder提供的块存储服务,也称为卷服务。Cinder负责将不同的后端存储设备或软件定义存储集群提供的存储能力,统一抽象为块存储资源池,然后根据不同需求划分为大小各异的卷,分配给用户使用。用户在使用Cinder提供的卷时,需要使用Nova提供的能力,将卷挂载在指定的虚拟机上。此时,用户可以在虚拟机操作系统内看到该卷对应的块设备,并加以访问。


7. Neutron:网络服务网络服务,是任意云操作系统IaaS层能力的关键组成部分。只有基于稳定、易用、高性能的云上虚拟网络,用户才能将云计算系统提供的各类资源和服务能力连接成真正满足需求的应用系统,以解决自身的实际业务需求。Neutron是OpenStack中的网络服务项目。Neutron及其自身孵化出来的一系列子项目,共同为用户提供了从Layer 2到Layer 7上不同层次的多种网络服务功能,包括Layer 2组网、Layer 3组网、内网DHCP管理、Internet浮动IP管理、内外网防火墙、负载均衡、VPN等。整体而言,Neutron的Layer 2、Layer 3服务能力已经较为成熟。时至今日,Neutron已经取代了早期的novanetwork,成为了OpenStack中Layer2、Layer3的主流虚拟网络服务实现方式。与之对应,Neutron的Layer 4至Layer 7服务能力仍在迅速发展中,目前已具备初步应用能力。需要说明的是,OpenStack的DNS即服务能力,并未包含在Neutron项目的功能范围当中,而是由另一个单独的项目Designate负责实现。


8. Heat:资源编配服务云计算的核心价值之一,即在于IT资源与服务管理和使用的自动化。换言之,在引入云计算技术之后,大量在传统IT领域中需要依靠管理人员或用户通过手工操作实现的复杂管理操作,应当可以通过调用云操作系统提供的API,以程序化的方式自动完成,从而显著提高IT系统管理的效率。在上述提及的IT领域复杂管理操作中,用户业务应用系统的生命周期管理操作,即应用系统的安装、配置、扩容、撤除等,可谓是具有代表性的一类。这类操作的复杂与耗时耗力,与当前不断凸现的业务快速上线、弹性部署诉求,已经表现出明显的不适应性。Heat项目的出现,就是为了在OpenStack中提供自动化的应用系统生命周期管理能力。具体而言,Heat能够解析用户提交的,描述应用系统对资源类型、数量、连接关系要求的定义模板,并根据模板要求,调用Nova、Cinder、Neutron等项目提供的API,自动实现应用系统的部署工作。这一过程高度自动化,高度程序化。同样的模板,可以在相同或不同的基于OpenStack的云计算系统上重复使用,从而大大提升了应用系统的部署效率。在此基础上,Heat还可以与O p e n S t a c kCeilometer项目的Aodh子项目相配合,共同实现对于应用系统的自动伸缩能力。这更进一步简化了部分采用无状态、可水平扩展架构的应用系统的管理,具有典型的云计算服务特征。


9. Ceilometer:监控与计量在云计算系统中,各类资源均以服务化的形式向用户提供,用户也需要按照所使用资源的类型和数量缴费。这种基本业务形态,就要求云操作系统必须能够提供资源用量的监控与计量能力。这正是OpenStack引入Ceilometer项目的根本动机。Ceilometer项目的核心功能,是以轮询的方式,收集不同用户所使用的资源类型与数量信息,以此作为计费的依据。在此基础上,Ceilometer可以利用收集的信息,通过Aodh子项目发送告警信号,触发Heat项目执行弹性伸缩功能。需要说明的是,Ceilometer项目自身并不提供计费能力。系统设计者需要将其与适当的计费模块相对接,才能实现完整的用户计费功能。目前,OpenStack社区已经创建了CloudKitty项目,作为OpenStack社区原生的计费组件。但该项目当前尚处于较为初期的阶段,难以直接商用。10. Horizon:图形界面Horizon项目是OpenStack社区提供的图形化人机界面。经过社区长期的开发完善,Horizon界面简洁美观,功能丰富易用,可以满足云计算系统管理员和普通用户的基本需求,适于作为基于OpenStack的云计算系统的基本管理界面使用。此外,Horizon的架构高度插件化,灵活而易于扩展,也便于有定制化需求的系统设计人员针对具体场景进行增量开发。


11. Sahara:数据处理服务应当说,大数据和云计算,是两个天然紧密联系的技术领域。云计算技术的出现,为大数据处理提供了廉价、易用、易扩展的计算支撑平台。而大数据处理业务,由于其可并行、高弹性、自身可容错的特征,也是云计算平台上的一种理想业务。针对这一背景,OpenStack社区推出了Sahara项目,以实现Hadoop、Spark等主流大数据处理集群软件的云化。使用Sahara项目,即便是没有任何大数据处理集群软件安装部署和管理应用经验的用户,也可以以图形化的方式,极其简便地安装部署属于自己的、规模适当的大数据集群,并以简明易懂的方式对自己的数据集进行指定算法的处理,以获取处理结果。Sahara的出现,极大地简化了普通用户使用大数据处理软件的过程,将大数据和云计算两项技术紧密地结合在了一起。


12. Magnum:容器服务容器是当今无可回避的热门技术话题。容器技术的出现、发展与繁荣,极大地提升了软件的开发与部署效率,也极大地改变了软件生命周期管理的既有模式。围绕着以Docker为代表的容器化软件生命周期管理技术体系,已经逐渐发展出Kubernetes、Mesos、Swarm等容器集群管理系统,以便在服务器集群上实施应用软件生命周期管理和集群资源调度。在这种情况下,OpenStack社区自然也不会无动于衷。Magnum项目就是OpenStack社区为实现容器集群管理系统的服务化而推出的新项目。使用Magnum,用户可以在基于OpenStack的云计算系统上,实现容器集群管理系统的生命周期管理自动化。具体而言,利用Magnum,用户可以完全通过API调用的方式,实现Kubernetes集群在OpenStack之上的自动化安装部署,并通过Magnum的API对Kubernetes实施管理操作,非常简单便捷。