目录

简介:

一、云计算服务模型

1.1、基础设施及服务(Infrastructure as a Service,Iaas)

1.2、平台即服务(Platform as a Service,Paas)

1.3、软件即服务(Software as a Service,SaaS)

二、OpenStack服务

2.1、OpenStack核心组件、可选组件以及其他组件介绍

2.2、Openstack优势

三、OpenStack架构

3.1、概念架构图

3.2、OpenStack逻辑架构

openstack设计的基本原则如下:

一个镜像从上传可以使用得几个状态、过程

以下标识是镜像上载完成后的状态类型

全局

3.3、OpenStack物理架构


简介:

OpenStack 是当今最具影响力的云计算管理工具——通过命令或者基于 Web 的可视化控制面板来管理 IaaS 云端的资源池(服务器、存储和网络)。它最先由美国国家航空航天局(NASA)和 Rackspace 在 2010 年合作研发,现在参与的人员和组织汇集了来自 100 多个国家的超过 9500 名的个人和 850 多个世界上赫赫有名的企业,如 NASA、谷歌、惠普、Intel、IBM、微软等。

OpenStack 支持 KVM、Xen、Lvc、Docker 等虚拟机软件或容器,默认为 KVM。通过安装驱动,也支持 Hyper-V 和 VMware ESXi,不过有些功能暂时不支持。

OpenStack 采用 Python 语言开发,遵循 Apache 开源协议,因此相比 CloudStack 来说,更轻量化,效率更高。

一、云计算服务模型


1.1、基础设施及服务(Infrastructure as a Service,Iaas)

  1. 云服务提供商把IT系统的基础设施层作为服务租出去,由消费者自己安装操作系统、中间件、数据库和应用程序
  2. 面向对象一般是IT管理人员


1.2、平台即服务(Platform as a Service,Paas)

  1. 云服务提供商把IT系统中的平台软件层作为服务租出去,消费者自己开发或者安装程序,并运行程序
  2. 面向对象一般是开发人员


1.3、软件即服务(Software as a Service,SaaS)

  1. 云服务提供商把IT系统中的应用软件层作为服务租出去,消费者不用自己安装应用软件,直接使用即可,这进一步降低了云服务消费者的技术门槛
  2. 面向对象一般是普通用户

二、OpenStack服务


2.1、OpenStack核心组件、可选组件以及其他组件介绍

分类

服务

项目名称

功能

核心组件

Compute
(计算服务)

Nova

管理虚拟机的整个生命周期:创建、运行、挂起、调度、关闭、销毁等。这是真正的执行部件。接受 DashBoard 发來的命令并完成具体的动作。但是 Nova 不是虛拟机软件,所以还需要虚拟机软件(如 KVM、Xen、Hyper-v 等)配合

Network
(网络服务)

Neutron

管理网络资源,提供/一组应用编程接口(API),用户可以调用它们来定义网络(如 VLAN ),并把定义好的网络附加给租户。Networking 是一个插件式结构,支持当前主流的网络设备和最新网铬技术

Object Storage

(对象存储服务)

Swift

是 NoSQL 数据库,类似 HBase,为虚拟机提供非结构化数据存储,它把相同的数据存储在多台计箅机上,以确保数据不会丢失。用户可通过 RESTful 和 HTTP 类型的 API 来和它通信。这是实际的存储项目,类似 Ceph,不过在 OpcnStack 具体实施时,人们更愿意采用 Ceph。

Block Storage

(块存储服务)

Cinder

管理块设备,为虚拟机管理 SAN 设备源。但是它本身不是块设备源, 需要一个存储后端来提供实际的块设备源(如 iSCSI、FC等)。

Cinder 相当于一个管家,当虚拟机需要块设备时,询问管家去哪里获取具体的块设备。它也是插件式的,安装在具体的 SAN 设备里。

Identity
(身份认证服务)

Keystone

为其他服务提供身份验证、权限管理、令牌管理及服务名册管理。要使用云计算的所有用户事先需要在 Keystone 中建立账号和密码,并定义权限(注意:这里的“用户”不是指虚拟机里的系统账户,如 Windows 7 中的 Administrator )。另外,OpenStack 服务(如 Nova、Neutron、Swift、Cinder 等)也要在里面注册,并且登记具体的 API,Keystone 本身也要注册和登记 API

Image Service
(镜像服务)

Glance

存取虚拟机磁盘镜像文件,Compute 服务在启动虚拟机时需要从这里获取镜像文件。这个组件不同于上面的 Swift 和 Cinder,这两者提供的 存储是在虚拟机里使用的

Dashboard
(控制面板服务)

Horizon

提供了一个网页界面,用户登录后可以做这些操作:管理虚拟机、配置权限、分配 IP 地址、创建租户和用户等。本质上就是通过图形化的 操作界面控制其他服务(如 Compute、Networking 等)。当然,如果你熟悉命令,也可以直接采用命令来完成相应的任务

Telemetry
(计量服务)

Ceilometer

结合 Aodh、CloudKitty 两个组件,完成计费任务,如结算、消耗的 资源统计、性能监控等。OpenStack 之所以能管理公共云,一是因为 Ceilometer 的存在,二是因为引人了租户的概念

可选组件

 

Heat

如果要在成千上万个虚拟机里安装和配置同一个软件,该怎么办?采用 Orchestrates 是一个不错的主意,它向每个虚拟机里注人一个名叫 heat-cfntools 的客户端工具,然后就能同时操作很多虚拟机

 

Sahana

使用户能够在 OpenStack 平台上(利用虚拟机)一键式创建和管理 Hadoop 集群,实现类似 AWS 的 EMR(Amazon Elastic MapReduce Service)功能。用户只需要提供简单的配置参数和模板,如版本信息(CDH 版本)、集群拓扑(几个 Slave、几个 Datanode)、节点配置信息(CPU、内存)等,Sahara 服务就能够在几分钟内根据提供的模板快速 部署 Hadoop、Spark 及 Storm 集群。Sahana 是一个大数据分析项目

 

Ironic

把裸金属机器(与虚拟机相对)加人到资源池中

 

Zaqar

Zaqar 为 Web 和移动开发者提供多租户云消息和通知服务,开发人员可以通过 REST API 在其云应用的不同组件中通过不同的通信模式(如 生产者/消费者或发布者/订阅者)来传递消息

 

Barbican

是 OpenStack 的密钥管理组件,其他组件可以调用 Barbican 对外暴露的 REST API 来存储和访问密钥

 

Manila

为虚拟机提供文件共享服务,不过需要存储后端的配合

其他组件

Congress(策略服务)、Designate(DNS 服务)、Freezer(备份及还原服务)、Magnum(容器支持)、Mistral(工作流服务)、Monasca(监控服务)、Searchlight(索引和搜索)、Senlin(集群服务)、Solum(APP集成开发平台)、Tacker(网络功能 虚拟化)、Trove(数据库服务)


2.2、Openstack优势

  1. 模块松耦合:与其他开源软件相比,OpenStack模块分明。添加独立功能的组件非常简单。有时候,不需要通读整个OpenStack的代码,只需要了解其接口规范及API使用,就可以轻松地添加一个新的模块
  2. 组件配置较为灵活:OpenStack也需要不同的组件。但是OpenStack的组件安装异常灵活。可以全部都装在一台物理机上,也可以分散至多个物理机中,甚至可以把所有的结点都装在虚拟机中。
  3. 二次开发容易:OpenStack发布的OpenStack API是Rest-full API。其他所有组件也是采种这种统一的规范。因此,基于OpenStack做二次开发,较为简单。而其他3个开源软件则由于耦合性太强,导致添加功能较为困难。
  4. 兼容性:OpenStack兼容其他公有云,方便用户进行数据迁移。
  5. 可扩展性:模块化设计,可以通过横向扩展,增加节点、添加资源。

三、OpenStack架构

OpenStack是由一系列具有RESTful接口的Web服务所实现的,是一系列组件服务集合。如下图为OpenStack的概念架构,我们看到的是一个标准的OpenStack项目组合的架构。这是比较典型的架构,但不代表这是OpenStack的唯一架构,我们可以选取自己需要的组件项目,来搭建适合自己的云计算平台,设计的基本原则如下:

  1. 按照不同的功能和通用性来划分不同项目并拆分子系统
  2. 按照逻辑计划、规格子系统之间的通信
  3. 通过分层设计整个系统架构
  4. 不同的功能子系统间提供统一的API接口


3.1、概念架构图

openstack如何学习 openstack好学吗_API

云平台用户在经过Keystone服务认证授权后,通过Horizon或者Reset API模式创建虚拟机服务,创建过程中包括利用Nova服务创建虚拟机实例,虚拟机实例采用Glance提供镜像服务,然后使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中,之后在通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume)和Glance提供的镜像(lmage)可以通过Swift的对象存储机制进行保存

3.2、OpenStack逻辑架构

  1. 首先展示了内部核心组件、外部组件、全局组件
  2. 各核心、辅助组件之间是怎么对接得——API
  3. 展示了各组件中,一部分核心的功能模块——MQ进行通讯
  4. 展示openstack原生架构(基础)

openstack如何学习 openstack好学吗_Cinder_02

OpenStack包括若干个称为OpenStack服务的独立组件。所有服务均可通过一个公共身份服务进行身份验证。除了那些需要管理权限的命令,每个服务之间均可通过公共API进行交互。

每个OpenStack服务又由若干组件组成。包含多个进程。所有服务至少有一个API进程,用于侦听API请求,对这些请求进行预处理,并将它们传送到该服务的其他组件。除了认证服务,实际工作都是由具体的进程完成的

至于一个服务的进程之间通信,则使用AMQP消息代理。服务的状态存储在数据库中。

openstack设计的基本原则如下:

  • 按照不同的功能和通用性划分不同项目,拆分子系统
  • 按照逻辑计划、规范子系统之间的通信
  • 通过分层设计整个系统架构
  • 不同的功能子系统间提供统一的API接口

一个镜像从上传可以使用得几个状态、过程

  1. 初始化过程——queued
  2. 导入数据库过程——saving
  3. 提交给服务识别过程(让服务可调用)——uploding
  4. 准使用(服务已识别、可调用)——importing

以上表明的是从上传到识别

以下标识是镜像上载完成后的状态类型

  1. active——表示可使用
  2. deactivated——表示只对管理员开放的权限
  3. killed——表示镜像上传中发生错误
  4. deletd——镜像将在不久后自动删除,镜像不可用(保留数据)
  5. pending_delete——与deleted类似,但是删除后无法恢复

全局

openstack中由很多核心服务组成(相互独立)

keystone(全局授权、鉴权)

OpenStack组件通信关系

  • 基于AMQP协议得通信

用于每个项目内部各个组件之间的通信

  • 基于SQL得通信——在不同场景下运用不同的通信方式

用于各个项目内部得通信

  • 基于HTTP协议进行通信
  • 通过个项目得API建立的通信关系,API都是RESTful Web API——在控制台上将前端和后端通过restful api网关接口进行通讯
  • 通过Native API实现通信

OpenStack各组件和第三方软硬件之间的通信——native api使原生架构与第三方组件进行通讯

,API都是RESTful Web API——在控制台上将前端和后端通过restful api网关接口进行通讯

  • 通过Native API实现通信

OpenStack各组件和第三方软硬件之间的通信——native api使原生架构与第三方组件进行通讯

3.3、OpenStack物理架构

openstack如何学习 openstack好学吗_API_03

整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。

控制节点负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等

计算节点负责虚拟机运行

网络节点负责对外网络与内网络之间的通信

存储节点负责对虚拟机的额外存储管理等等

①控制节点架构

控制节点包括支持服务、基础服务、扩展服务以及管理网络

  • 因为控制节点是管理整个OpenStack进行运作的,所有需要keystone身份认证服务以及Harizon控制面板服务这样的全局组件来对OpenStack进行管控和操作
  • 为虚拟机提供一些相对应的基础资源,比如glance镜像服务为虚拟机提供磁盘镜像文件、network网络服务对网络资源进行管理,提供/一组应用编程接口(API),用户可以调用它们来定义网络以及nova计算服务管理虚拟机的整个生命周期
  • 数据的存储以及通信支持,我们使用到的是Mysql与RabbitMQ,后续我们需要对数据进行管理需要使用Cinder、Swift以及trove服务,并且提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作的ceilometer计量服务
  • 而且还需要基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性的heat服务
  • 管理私有网段与公有网段的通信,以及管理虚拟机网络之间的通信/拓扑,所以需要网络接口和外面进行连通