目录
- 前言:
- 一、云计算概述
- 1.1 云计算的概念
- 1.2 云计算的特点
- 1.3 云计算的服务类型
- 1.3.1 IAAS (基础架构即服务)
- 1.3.2 PAAS(平台即服务)
- 1.3.3 SAAS(软件即服务)
- 二、OpenStack 介绍
- 2.1 OpenStack的特性
- 2.2 OpenStack的核心组件
- 三、OpenStack 架构
- 3.1 OpenStack 概念架构
- 3.2 OpenStack 逻辑架构
- 四、OpenStack 的节点
- 4.1 控制节点
- 4.1.1 管理支持服务
- 4.2.2 基础管理服务
- 4.2.3 扩展管理服务
- 4.3 网络节点架构
- 4.4 计算节点架构
- 4.5 存储节点架构
前言:
openstack是一个开源的云计算管理平台架构,是一系列开源的软件项目的组合。由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)授权的开源代码项目。
它为私有云和公有云的建设与管理提供了开源软件项目。在传统的运维管理服务器资源的基础上,有了openstack架构之后,才可在其之上部署云平台的服务,进行运维和管理。
一、云计算概述
1.1 云计算的概念
云计算管理的是网络资源、存储资源、服务器资源等物理硬件资源。可以使客户在任何时间任何地点,通过网络,获取所需要的资源或服务,并且按需分配,按用量进行收费。
1.2 云计算的特点
- 1、虚拟化技术。
必须强调的是,虚拟化突破了时间、空间的界限,是云计算最为显著的特点,虚拟化技术包括应用虚拟和资源虚拟两种。众所周知,物理平台与应用部署的环境在空间上是没有任何联系的,正是通过虚拟平台对相应终端操作完成数据备份、迁移和扩展等。 - 2、动态可扩展。
云计算具有高效的运算能力,在原有服务器基础上增加云计算功能能够使计算速度迅速提高,最终实现动态扩展虚拟化的层次达到对应用进行扩展的目的。 - 3、按需部署。
计算机包含了许多应用、程序软件等,不同的应用对应的数据资源库不同,所以用户运行不同的应用需要较强的计算能力对资源进行部署,而云计算平台能够根据用户的需求快速配备计算能力及资源。 - 4、灵活性高。
目前市场上大多数IT资源、软、硬件都支持虚拟化,比如存储网络、操作系统和开发软、硬件等。虚拟化要素统一放在云系统资源虚拟池当中进行管理,可见云计算的兼容性非常强,不仅可以兼容低配置机器、不同厂商的硬件产品,还能够外设获得更高性能计算。 - 5、可靠性高。
倘若服务器故障也不影响计算与应用的正常运行。因为单点服务器出现故障可以通过虚拟化技术将分布在不同物理服务器上面的应用进行恢复或利用动态扩展功能部署新的服务器进行计算。 - 6、性价比高。
将资源放在虚拟资源池中统一管理在一定程度上优化了物理资源,用户不再需要昂贵、存储空间大的主机,可以选择相对廉价的PC组成云,一方面减少费用,另一方面计算性能不逊于大型主机。 - 7、可扩展性。
用户可以利用应用软件的快速部署条件来更为简单快捷的将自身所需的已有业务以及新业务进行扩展。如,计算机云计算系统中出现设备的故障,对于用户来说,无论是在计算机层面上,亦或是在具体运用上均不会受到阻碍,可以利用计算机云计算具有的动态扩展功能来对其他服务器开展有效扩展。这样一来就能够确保任务得以有序完成。在对虚拟化资源进行动态扩展的情况下,同时能够高效扩展应用,提高计算机云计算的操作水平。
1.3 云计算的服务类型
1.3.1 IAAS (基础架构即服务)
提供底层IT基础设施服务,包括处理能力,存储空间、网络资源,一般面对对象是IT管理人员。
用户可获取的是硬件或虚拟硬件,包括裸机或虚拟机,可以自行安装操作系统或其他应用程序。
1.3.2 PAAS(平台即服务)
把安装好开发环境的系统平台作为一种服务通过互联网提供给用户,一般面对对象是开发人员。
用户可获取的是安装了操作系统以及支撑应用程序运行所需要的资源库等软件的物理机或虚拟机,可以自行安装其他应用程序,但不能修改已经预装好的操作系统和运行环境。
1.3.3 SAAS(软件即服务)
直接通过互联网为用户提供部署好的软件和应用程序的服务,可直接使用,一般面向对象是普通用户。
用户可获取的是以租赁的方式来直接使用一些软件,而不是购买。
二、OpenStack 介绍
2.1 OpenStack的特性
OpenStack优势
- 控制性
完全开源的平台,提供API接口,方便与第三方技术集成 - 兼容性
OpenStack兼容其他公有云,方便用户进行数据迁移 - 可扩展性
模块化设计,可以通过横向扩展,增加节点、添加资源 - 灵活性
根据自己的需要建立相应基础设施、增加集群规模 - 行业标准
众多IT领军企业已经加入到OpenStack项目
2.2 OpenStack的核心组件
整个OpenStack架构由多个子服务组成:以下是几个核心项目
服务 | 项目 | 描述 |
Compute 计算服务 | Nova | 负责实例生命周期的管理,计算资源的单位。对Hypervisor进行屏蔽,支持多种虚拟化技术(红帽默认为KVM),支持横向扩展 |
Network 网络服务 | Neutron | 负责虚拟网络的管理,为实例创建网络的拓扑结构。是面向租户的网络管理,可以自己定义自己的网络,各个租户之间互不影响 |
Identify 身份认证服务 | Keystone | 类似于LDAP服务,对用户、租户和角色、服务进行认证与授权,且支持多认证机制 |
Dashboard 控制面板服务 | Horizon | 提供一个Web管理界面,与OpenStack底层服务进行交互 |
Image Service 镜像服务 | Glance | 提供虚拟机镜像模板的注册与管理,将做好的操作系统拷贝为镜像模板,在创建虚拟机时直接使用,可支持多格式的镜像 |
Block Storage 块存储服务 | Cinder | 负责为运行实例提供持久的块存储设备,可进行方便的扩展,按需付费,支持多种后端存储 |
Object Storage 对象存储服务 | Swift | 为OpenStack提供基于云的弹性存储,支持集群无单点故障 |
Telemetry 计量服务 | Ceilometer | 用于度量、监控和控制数据资源的集中来源,为OpenStack用户提供记账途径 |
三、OpenStack 架构
学习Openstack的部署和运维之前,应当熟悉其架构和运行机制,OpenStack作为开源、可扩展、富有弹性的云操作系统,其设计基本原则如下:
- 按照不同的功能和通用性划分不同项目,拆分子系统
- 按照逻辑计划、规范字系统之间的通信
- 通过分层设计整个系统架构
- 不同的功能子系统间提供统一的API接口
3.1 OpenStack 概念架构
如下图所示:
上图的核心为虚拟机,所有组件围绕虚拟机,为它提供服务。可将上图的架构分为三个部分:
- 红色方框为全局组件:
keystone:为所有服务模块提供认证与授权
ceilometer:度量、监控所有数据资源
horizon :UI平台管理,提供一个web管理页面,与底层交互 - 黄色方框为外部辅助组件:
ironic 提供裸金属环境
trove 提供管理数据库服务(控制关系型和非关系型数据库)
heat,sahara 提供对数据管理和编排 - 蓝色方框为内部核心组件:
glance:提供镜像服务
neutron:提供网络服务
swift:提供对象存储资源
cinder:提供快存储资源
nova:管理实例的生命周期,并负责调取以上四个资源给虚拟机使用。
具体流程:
云平台用户在经过Keystone服务认证授权后,通过Horizon或者Reset API模式创建虚拟机服务,创建过程中包括利用Nova服务创建虚拟机实例,虚拟机实例采用Glance提供镜像服务,然后使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中,之后在通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume)和Glance提供的镜像(Image) 可以通过Swift的对象存储机制进行保存。
3.2 OpenStack 逻辑架构
如下图:
- 全局架构来看:OpenStack包括相互独立的服务组件。所有服务均可通过一个公共身份服务进行身份验证。除了那些需要管理权限的命令,每个服务之间均可通过公共API进行交互。所以,API即是每个服务内部和外部的交界处,隔离了内外。
- 服务之间交互过程:每个服务又由若干组件组成,包含多个进程。每个服务至少有一个API进程,用于侦听API请求,对这些请求进行预处理,( 预处理就是将请求暴露出来的API接口,给keystone进行认证,如果认证通过,则放入队列等待被处理。) 然后将它们传送到自己服务后端的其他组件,对请求进行处理,而不是API进程去处理。也就是说除了认证服务,实际工作都是由具体的进程完成的。
- 服务内各个进程之间的通信:使用AMQP消息代理,将不同的消息格式进行转换,能够统一处理。服务的状态存储在数据库中。
消息队列:常用的三种类型,包括rabbitmq、 rocketmq、kafka,是两个独立的服务之间,消息传递的载体,解决消息在传输是请求的高并发问题,会以容器的方式,存储消息列表(包括请求、交互、报文),划分重要等级放入队列中,逐个处理,处理完的会自动删除。
OpenStack组件通信关系:
- 基于AMQP协议的通信
用于每个项目内部各个组件之间的通信。 - 基于SQL的通信
用于各个项目内部的数据库通信。 - 基于HTTP协议进行通信
通过各项目的API建立的通信关系,API都是RESTful Web API。 - 通过Native API实现通信
OpenStack各组件和第三方软硬件之间的通信。
四、OpenStack 的节点
物理架构可以从四个节点来看,包括控制节点,网络节点,计算节点,存储节点。
4.1 控制节点
定位:运维人员通过控制节点从而控制整个openstack架构。
控制节点包括以下服务
- 管理支持服务
- 基础管理服务
- 扩展管理服务
4.1.1 管理支持服务
- MySQL:数据库作为基础/扩展服务产生的数据存放的地方
- RabbitMQ:消息代理(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务
4.2.2 基础管理服务
- Keystone:认证管理服务,提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库
- Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制作相应的模板
- Nova:计算管理服务,提供了对计算节点的Nova的管理,使用Nova-API进行通信
- Neutron:网络管理服务,提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理面板
- Horizon:控制台服务,提供了以Web的形式对所有节点的所有服务的管理,通常把该服务称为DashBoard
4.2.3 扩展管理服务
- Cinder:提供管理存储节点的Cinder相关,同时提供Cinder在Horizon中的管理面板
- Swift:提供管理存储节点的Swift相关,同时提供Swift在Horizon中的管理面板
- Trove:提供管理数据库节点的Trove相关,同时提供Trove在Horizon中的管理面板
- Heat:提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。
- Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作
4.3 网络节点架构
控制节点一般来说只需要一个网络端口用于通信/管理各个节点
网络节点仅包含Neutron服务
- Neutron:负责管理私有网段与公有网段的通信,以及管理虚拟机网络之间的通信/拓扑,管理虚拟机之上的防火等等
网络节点包含三个网络端口
- eth0:用于与控制节点进行通信
- eth1:用于与除了控制节点之外的计算/存储节点之间的通信
- eth2:用于外部的虚拟机与相应网络之间的通信
4.4 计算节点架构
计算节点包含Nova,Neutron,Telemeter三个服务
基础服务
- Nova:提供虚拟机的创建,运行,迁移,快照等各种围绕虚拟机的服务,并提供API与控制节点对接,由控制节点下发任务
- Neutron:提供计算节点与网络节点之间的通信服务
扩展服务
- Telmeter:提供计算节点的监控代理,将虚拟机的情况反馈给控制节点,是Centimeter的代理服务
计算节点包含最少两个网络端口
- eth0:与控制节点进行通信,受控制节点统一调配
- eth1:与网络节点,存储节点进行通信
4.5 存储节点架构
存储节点包含Cinder,Swift等服务
- Cinder:块存储服务,提供相应的块存储,简单来说,就是虚拟出一块磁盘,可以挂载到相应的虚拟机之上,不受文件系统等因素影响,对虚拟机来说,这个操作就像是新加了一块硬盘,可以完成对磁盘的任何操作,包括挂载,卸载,格式化,转换文件系统等等操作,大多应用于虚拟机空间不足的情况下的空间扩容等等
- Swift:对象存储服务,提供相应的对象存储,简单来说,就是虚拟出一块磁盘空间,可以在这个空间当中存放文件,也仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件
存储节点包含最少两个网络接口
- eth0:与控制节点进行通信,接受控制节点任务,受控制节点统一调配
- eth1:与计算/网络节点进行通信,完成控制节点下发的各类任务