@qiezhian
2014-11-21T14:55:22.000000Z
字数 11158
阅读 2894
云计算
参考文档:http://docs.openstack.org/admin-guide-cloud/content/compute-service.html
OpenStack是一个开源项目,致力于打造一个易于实现、强伸缩性、特性丰富、且适用于各种形式云的云计算平台。世界各地的开发者及云计算技术人员齐聚一堂参与并创建了OpenStack项目。
OpenStack通过一系列相关的服务提供了一套基础设施即服务(Iaas)解决方案。每种服务都提供API使得服务的整合更加方便,因此可根据您的需要安装部分或全部的服务。
下表描述了构成OpenStack(架构)的各种服务:
服务 | 名称 | 描述 |
---|---|---|
Dashboard | Horizon | 提供一个与底层OpenStack服务交互的网页自助端口,这些服务包括启动一个实例,设置IP地址以及配置访问权限等等 |
Compute | Nova | 在OpenStack环境中管理计算实例的生命周期,根据需要负责批量生产(spawning)、规划、移除虚拟机 |
Networking | Neutron | 为其它OpenStack服务(如OpenStack Compute)提供网络连接服务。为用户提供定义网络及连接的API。其可插拔架构特性可支持许多主流网络设备商及主流技术。 |
Object Storage | Swift | 通过RESTful,HTTP-based API可存储、检索任意非结构数据对象。因其具备数据冗余性以及横向扩展性,因而具有高容错性。它的实现并不像一个可挂载目录的文件服务器。 |
Block Storage | Cinder | 为运行实例提供一致性块存储服务。其可插拔架构使得对块存储设备的创建和管理更加容易 |
Identity services | Keystone | 为其他OpenStack服务提供身份认证与授权服务。为所有OpenStack服务提供端点目录。 |
Image Service | Glance | 负责虚拟机磁盘镜像的存储及检索。在实例配置时(instance provisioning),Compute部分需要用到该项服务。 |
Telemetry | Ceilometer | 对Openstack Cloud进行监控与测量,以用于计费、基准管理、可扩展性以及统计性目的。 |
Orchestration | Heat | Orchestrates multiple composite cloud applications by using either the native HOT template format or the AWS CloudFormation template format, through both an OpenStack-native REST API and a CloudFormation-compatible Query API. |
Database Service | Trove | 为关系型或非关系型数据库引擎提供可伸缩及可靠的云数据库即服务(Daas)功能 |
下面的流程图展示了Openstack各服务之间的关系:
如上图“OpenStack概念架构”所示,端用户可以通过dashboard,CLIs以及API(与Openstack底层服务)进行交互。除了需要特权管理员权限的地方,其它所有服务都是通过一个“通用身份服务”以及“具体个体服务”之间交互进行认证的。
To design, deploy, and configure OpenStack, administrators must understand the logical architecture.
为了更好的设计、部署和配置管理OpenStack,管理员必须深入理解OpenStack逻辑架构。OpenStack有以下几种模块类型:
守护进程:作为后台进程运行。在Linux平台下,一个守护进程常常作为一个服务安装。
脚本:安装虚拟环境以及运行测试例。例如,run_tests.sh
脚本文件可用来安装一个虚拟环境并在相关服务上运行单元测试用例。
命令行接口:使用户通过简单易用的命令来提交API调用,从而得到所需的OpenStack服务。
下面流程图展示了OpenStack Cloud最通用的(却并不是唯一的)架构体系:
OpenStack Compute用来主持管理云计算系统。Compute是Iaas系统重要组成部件,主要模块由Python实现。
Compute模块通过OpenStack Identity服务进行认证,通过Image Service 服务获得磁盘与服务器镜像,通过dashboard与用户交互以及提供管理接口。
镜像访问与获取受限于项目以及用户(??)每个项目的配额也是受限的(如实例的数量)。Compute服务可以横向扩展到标准硬件以及下载镜像来启动实例。
Compute由以下组件组成:
nova-api 服务
接受并回应端用户Compute API调用。该项服务支持OpenStack Compute API、亚马逊EC2 API 以及一个用于特权用户进行管理的 API。它保证某些政策并启动大部分流程活动,如运行一个实例。(It enforces some policies and initiates most orchestration activities, such as running an instance.)
nova-api-metadata 服务
接受来自实例的元数据请求。在nova-network中运行多主机模式通常会用到nova-api-metadata 服务。更多细节可参见OpenStack Cloud Administrator Guide中的Metadata service部分。
在Debian系统上,它包含于nova-api包中,并且可根据debconf进行选择(安装与否)。
nova-compute service
一个工作者守护进程通过hypervisor API 来创建、终止虚拟机实例。例如:
处理过程相对复杂。基本上来说,守护进程从队列中接收动作指示(actions)并完成一系列系统命令,如启动一个KVM实例并更新其在数据库中的状态。
nova-scheduler service
从队列中获取一个虚拟机实例请求,并决定在哪个Compute server中运行这个实例。
nova-conductor module
协调nova-compute service 和 database之间的交互。它使得nova-compute service 不能直接对cloud database 进行访问。nova-conductor 模块具有横向扩展性,然而,不要将其部署到运行nova-compute service的节点上。更多信息,参见A new Nova service: nova-conductor.
nova-network worker daemon
与nova-compute service类似,该组件(Networking)从队列中获取网络任务并进行相应的网络操作,例如建立桥接接口或是改变IPtables规则。
nova-consoleauth daemon
为控制台代理(console proxies) 提供的用户提供认证符(详情参见nova-novncproxy and nova-xvpnvcproxy)。该项服务为控制台代理提供服务使之正常工作。在集群配置中,你可以运行除单一nova-consoleauth服务类型之外的代理。更多信息参见 nova-consoleauth。
nova-novncproxy daemon
通过一个VNC连接提供代理,来访问正在运行的实例。支持基于浏览器的novnc clients。
nova-spicehtml5proxy daemon
通过一个SPICE连接提供代理,来访问正在运行的实例。支持基于浏览器的 HTML5 clients。
nova-xvpnvncproxy daemon
通过一个VNC连接提供代理,来访问正在运行的实例。支持OpenStack-specific Java clients
Provides a proxy for accessing running instances through a VNC connection. Supports an OpenStack-specific Java client.
nova-cert daemon
x509 certificates.
在Debian系统中,单一的nova-consoleproxy 包提供nova-novncproxy, nova-spicehtml5proxy, and nova-xvpvncproxy 三个包。通过编辑/etc/default/nova-consoleproxy文件或者使用debconf接口来选择软件包。您也可以手动编辑/etc/default/nova-consoleproxy文件来启动和终止控制台守护进程。
nova-objectstore daemon
一个S3接口可用来在OpenStack Image Service中注册镜像。保证可用性的首要问题就是必须支持euca2tools。euca2tools用S3语言向nova-objectstore传达消息,然后nova-objectstore将S3语言请求转译成Image Service请求。
euca2ools client
用来转译云资源管理命令的命令行集合。尽管不是OpenStack的一部分,您仍能通过配置nova-api来支持EC2接口。更多信息参见Eucalyptus 3.4 Documentation。
nova client
确保用户能像租户管理员(tenant administrator) 或者端用户一样提交命令。
The queue
各守护进程之间传递消息的集散中心。通常由RabbitMQ实现,但是也可以由AMPQ消息队列实现,如Apache Qpid和Zero MQ。
SQL database
为云基础设施存储大多数编译时及运行时状态,包括:
理论上讲,OpenStack Compute可支持任意SQL-Alchemy支持的数据库。常用数据库如用作测试和开发工作的SQLite3,MySQL以及PostgreSQL。
OpenStack使用以下存储类型:
暂存(ephemeral) | 块存储(Cinder) | 对象存储(Swift) |
---|---|---|
运行操作系统并提供暂存 | 用于向虚拟机添加额外的一致性存储 | 存储虚拟机镜像及数据 |
存活(persists)至虚拟机终止 | 存活至被删除 | 存活至被删除 |
关联一虚拟机进行访问 | 关联一虚拟机进行访问 | 可任意获得访问 |
作为OpenStack Compute底层文件系统进行实现 | 通过OpenStack 块存储控制协议(如ISCSI)挂载 | REST API |
基于需要,管理员配置大小 | 按需伸缩大小 | 易扩展性应对未来增长 |
例子:10GB第一磁盘,30GB/Core第二磁盘 | 1 TB “额外硬盘” | Example: 10s of TBs of data set storage |
您应该注意;
swift client
保证像管理员、经销商或Swift用户等经过认证的用户可通过命令行客户端来提交命令到REST API 。
swift-init
接收守护进程名作为参数并提供命令来初始化环文件的编译构建的脚本。Documented in http://docs.openstack.org/developer/swift/admin_guide.html#managing-services.
swift-recon
swift-ring-builder
存储环构建及重平衡工具。Documented in http://docs.openstack.org/developer/swift/admin_guide.html#managing-the-rings.
OpenStack对象存储是一个多租户对象存储系统。它具有高扩展性并能低成本的通过RESTful HTTP API来管理大量的非结构数据。它包含以下几个组成部分:
OpenStack块存储服务cinder向虚拟机中添加了持久性储存。块存储提供了卷设备管理以及与OpenStack Compute交互来为实例提供卷设备的基础设施。该项服务同样确保了卷快照与卷类型的管理。
块存储服务由一下几个部分组成:
在不同块存储进程之间路由信息。
OpenStack网络服务允许您将其他OpenStack服务管理的接口设备连接至网络。该插件被实现为能够兼容不同网络设备和软件,并对于OpenStack的架构和部署有一定灵活性。它包含以下几个组件:
Networking主要与Compute组件交互来为其实例提供网络连接服务。
OpenStack身份服务具有以下功能:
在安装OpenStack身份服务时,您必须在OpenStack安装时为每一项服务注册。然后身份服务就能追踪已安装的服务以及它们在网络中的位置。
为了理解OpenStack身份,您必须理解一下概念:
keystone service-create
以及keystone endpoint-create
命令来在他们OpenStack中注册服务。 OpenStack镜像服务在Iaas中处于中心地位(见概念架构)。它接受对磁盘或者服务器镜像的API 请求,以及接收来自终端用户或者OpenStack Compute组件的镜像元数据。它也支持在不同仓库类型(包含OpenStack对象存储)上的磁盘或者服务器镜像存储。
在OpenStack镜像服务上运行多个周期性进程来支持缓存。在集群上,复制服务确保一致性以及可获得性。其他周期性进程包括审计、更新、收割等。
OpenStack镜像服务包括以下组件:
Telemetry module遥测组件具有以下功能:
Telemetry module由一下组件组成:
这些服务通过OpenStack 消息总线进行交流。只有collector及API 服务器有权限访问数据存储。
编制模块。编制模块提供一个基于模板的编制(Orchestration),通过运行OpenStack API来产生运行云应用,并描述云应用。该组件将OpenStack其他核心组件融入一个one-file模板系统。这些模板允许您创建大多数OpenStack资源类型,如实例、浮动IPs、卷、安全群组以及用户。它也提供高级功能,例如实例高可用性、实例自动缩放以及嵌套栈。这些功能确保了OpenStack核心项目能够得到更大的用户群。
该服务确保部署者能直接通过编制模块进行整合,或者使用其它定制插件进行整合。
编制模块由一下组件组成:
数据库服务为关系型或非关系型数据库提供可伸缩的并可靠的云供应功能。用户可快速轻松的使用数据库特性而不必有处理复杂管理型任务的负担。云用户和数据库管理员可以根据需要提供并管理多个数据库实例。
数据库服务在高性能水平上提供资源隔离及自动化复杂管理任务,如部署、配置、打补丁、备份、恢复、监控。
处理流程示例。使用数据库服务的高级处理流程:
-1.OpenStack管理员通过以下步骤配置基础设施:
a.安装数据库服务
b.为每个数据库类型创建镜像,例如MySQL一个,MongoDB一个
c.使用trove-manage命令导入镜像并将其提供给租户
- 2.OpenStack端用户通过以下步骤部署数据库服务:
a.使用trove create创建一个数据库服务实例
b.使用trove list命令获取实例ID,接着使用trove show命令获取其IP
c.使用典型数据库访问命令访问数据库服务实例。例如,MySQL时,为$ mysql -u myuser -p -h TROVE_IP_ADDRESS mydb
数据库服务包含以下组件:
OpenStack数据处理服务(Sahara)致力于为用户提供简单的方式来供应数据处理(Hadoop、Spark)集群,例如通过几个指定参数如Hadoop版本号、集群拓扑结构、节点硬件信息等。当用户填完所有的参数后,数据处理服务将在几分钟内部署到集群。Sahara也提供一些方法,例如根据需求通过添加/删除工作者节点,来缩放已供应的集群。
该方案用来解决一下问题:
关键特性: