1.OpenStack概述
1.1OpenStack的产生
OpenStack是由Rackspace公司和NASA(美国国家航空航天局)共同研发的云计算平台,是一个旨在为公共及私有云的建设与管理提供软件的开源项目。OpenStack云平台 通过仪表盘为管理员提供计算、存储和网络资源的管理控制, 同时通过Web界面为用户提供资源。
1.2OpenStack基金会
OpenStack基金会:Rackspace和NASA合作时决定OpenStack由Rackspace管理,为了使OpenStack更好地发展,Rackspace联合部分成员于2011年成立了OpenStack基金会。
- 仅次于Linux的世界第二大开源基金会。
- 保护、培育和提升OpenStack生态系统。
1.3OpenStack项目介绍
1.4OpenStack项目的目标
1.5OpenStack的开放性
- 创造了框架标准和API,用户以此为基础构建云计算 解决方案,尽可能与AWS保持兼容。
- OpenStack 与 AWS 映射
2.OpenStack架构
2.1OpenStack的7个核心组件
2.2OpenStack项目构架
各组件的作用以及各组件之间的关系,也是OpenStack各个服务之间的API调用的概览,其中实线表示客户端的API调用,虚线表示各个组件之间通过 rpc 进行通信。
- 计算服务(Compute):系统名称为Nova,负责创建虚拟机并管理虚拟机实例的整个生命周期。
- 对象存储服务(Object Storage):系统名称为Swift,用于持久性静态数据的长期存储。
- 镜像服务(Image):系统名称为Glance,提供虚拟磁盘镜像的目录分类管理以及镜像库存储管理。
- 块存储服务(Block Storage):系统名称为Cinder,为虚拟机提供云硬盘(块设备)服务。块存储将物理存储根据需要划分成不同的存储空间提供给虚拟机,虚拟机将其识别为新的硬盘。
- 身份认证服务(Identify):系统名称为keystone,为OpenStack所有系统提供统一的授权和身份验证服务。
- 网络管理服务(Network):系统名称为Neutron,实现虚拟机的网络资源管理,包括网络连接、子网IP管理等。
- 界面展示:系统名称为Horizon,是基于OpenStack API接口开发的Web呈现。
2.3OpenStack的3个核心子系统
3.OpenStack计算服务
3.1Nova
- Nova是OpenStack云计算系统的结构控制器。
- Nova管理虚拟机实例的整个生命周期,提供虚拟机管理功能(创建虚拟机、删除虚拟机、迁移虚拟机、创建虚拟机快照、虚拟机扩容等) 。
- Nova本身并不具有虚拟化能力,它使用Libvirt API来与被支持的Hypervisors交互,Nova通过Web Services API 来对外提供服务。
- Nova-Api对外提供一个与云基础设施交互的接口,也是外部可用于管理基础设施的唯一组件
3.2Nova功能架构
1.API服务API Server(Nova-Api):API Server对外提供一个与云基础设施交互的接口,也 是外部可用于管理基础设施的唯一组件。
2.消息队列Message Queue(Rabbit MQ Server):OpenStack节点之间通过消息队列使用AMQP(Advanced Message Queue Protocol)完成通信。
3.计算进程Compute (Nova-Compute):Compute 是Nova的一个守护进程,用来管理实例生命周期,通过Message Queue接收实例生命周期管理的请求。并承担操作工作。
4.调度程序Scheduler(Nova-Scheduler):调度器Scheduler是Nova的另一个守护进程,确定为虚拟机请求分配哪个计算主机。调度器作为一个Nova-Schedule守护进程运行,通过恰当的调度算法从可用资源池获得一个计算服务。
5.网络管理Network Manager(Nova-Network):Network Manager用于处理主机的网络配置,包括IP地址分配、为项目配置VLAN、实现安全组、配置计算节点网络。
6.卷管理Volume Manager(Nova-Volume):Volume Manager用来管理基于LVM(Logical Volume Manager) 的实例卷。实现和卷相关的功能,例如新建卷、删除卷、为实 例附加卷、为实例分离卷。
3.3Libvirt
3.3.1Libvirt简介
3.3.2Libvirt是什么?
Libvirt的主要目标是为各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式。
3.3.3Libvirt支持的功能
- 虚拟机管理
- 远程机器支持
- 存储管理
- 网络接口管理
- 虚拟网络
虚拟机管理包括不同领域的生命周期操作,如启动、停止、迁移等,支持磁盘、网卡、CPU等多种设备类型的热插拔操作。
运行Libvirt程序的主机:可以用来管理不同类型的存储,创建不同格式的文件镜像,可以管理物理和逻辑的网络接口,管理和创建虚拟网络。只要机器.上运行了Libvirt后台程序,所有的Libvirt功能都可以访问和使用。
3.3.4Libvirt体系结构
4.OpenStack存储服务
4.1OpenStack与存储相关的三个组件
4.2OpenStack存储服务-对象存储服务Swift
4.2.1对象存储服务Swift的作用是什么?
- 提供高可用的分布式对象存储服务,用于持久性静态数据的长期存储,比如复制和存档数据,图像或视频服务;开发数据存储整合的新应用;为Web应用创建基于云的弹性存储等。
- 为Glance提供镜像存储,为Cinder提供卷备份服务。
4.2.2Swift特性
- 极高的数据持久性:即数据的可靠性,描述数据存储到系统后数据丢失的可能性。
- 很强的可扩展性:一是数据存储容量无限可扩展,二是Swift性能(如每秒查询率QPS、吞吐量等)可线性提升。Swift的通信方式采用的是非阻塞式 I/O 模式,大大提高了系统吞吐和响应的能力。
- 采用完全对称、面向资源的分布式系统架构设计:对称架构意味着Swift中各节点 可以完全对等,能极大地降低系统维护成本,并且易于扩容。
- 无单点故障:整个Swift集群中没有一个角色是单点的,能够有效地避免因单点失效而扩散并影响整个系统运转。
4.2.3Swift物理架构
4.3.4Swift主要组件
一、Proxy Server(代理服务)
- Proxy Server用于对外提供对象服务API,负责Swift与其余组件间的相互通信,会根据环(Ring)的信息来查找服务地址,并转发用户请求至相应的账户、容器或者对象服务。
二、Storage Server(存储服务):提供磁盘设备上的存储服务
- 对象服务(Object Server)提供对象元数据和内容服务,每个 对象的内容以文件的形式存储在文件系统中,元数据作为文件属性存 储 。
- 容器服务(Container Server)提供容器元数据和统计信息, 并维护所含对象列表的服务。
- 账户服务(Account Server)提供账户元数据和统计信息,并 维护所含容器列表的服务。
三、Consistency Server(一致性服务):用于查找并解决由数据损坏和硬件故障引起的错误
- 审计服务(Auditor)主要检查对象、容器和账户的完整性,如果发 现错误,文件将被隔离,并复制其它副本以覆盖本地损坏的副本。
- 复制服务(Replicator)用以检测本地分区副本和远程副本是否一 致,发现不一致时会更新远程副本。
- 更新服务(Updater)主要负责更新处理,任务将会被序列化到本地 文件系统中进行排队,以便服务恢复后进行异步更新。
4.3OpenStack存储服务-镜像服务Glance
4.3.1镜像服务Glance的功能
- 提供虚拟磁盘镜像的目录分类管理以及镜像库存储管理,并提供对虚拟机镜像的存储和检索。
- 镜像管理包括镜像创建、基本信息更新、镜像文件上传和下载等。
- 提供一个完整的适配框架,支持亚马逊对象存储S3、OpenStack自有的Swift对象存储,以及常用的文件系统存储。
- 提供快照管理。在OpenStack中虚拟机快照也是一种镜像,利用快照可以制作部署虚拟机模块。
快照管理案例1:在对虚拟机系统执行某些操作之前先创建一个快照,如果在后续的使用中对系统造成了破坏,可以基于该快照重新启动虚拟机,恢复到修改前的状态。
快照管理案例2:用户部署了一台虚拟机并在虚拟机上安装了一些应用,在安装调试成功后,可以选择在虚拟机的当前状态下做一个快照以后如果需要部署这些应用 ,可以直接通过该快照实现快速部署。
4.3.2Glance架构
- API接口服务 (Glanece API Server)
- 注册服务 (Registry Server)
- 存储适配器 (Store Adapter)
4.4OpenStack存储服务-块存储服务Cinder
4.4.1块存储服务Cinder的功能
- Cinder为运行的虚拟机实例提供持久的数据块存储服务, 提供块设备的控制功能,如创建卷、加载、卸载卷。
- 提供块设备连接到虚拟机实例的接口。
- 快照管理,通过快照实现数据备份,通过对快照创建卷实现数据恢复。
块存储设备称为卷:类似于一个外部硬盘,可以附加到实例或者从实例分离。
快照管理案例1:用户在修改卷中重要数据之前先对卷创建一个快照。如果后期对卷中的数据造成了破坏,要把数据恢复到修改前的状态,可以基于之前做好的快照重新创建一个卷,并替换原有的卷挂载到虚拟机上来恢复数据。
快照管理案例2:用户对已经安装了文件系统的卷创建了快照以后基于该快照所创建的卷都可以使用其中的文件系统,对于大批量虚拟机可以减少安装文件系统的工作量。
注意:对卷创建快照应该在卷没有连接到实例,或者在卷没有使用的时候进行。如果在卷频繁使用的时候创建快照可能会造成数据文件的不一致。
4.4.2Cinder架构
- API
- 调度程序 (Scheduler)
- 存储适配 (Volume)
该服务运行在存储节点上,每个存储节点都有一个卷服务,若干个这样的存储节点联合起来可以构成一个存储资源池。
存储适配部署到多个节点上,调度程序根据服务寻找合适的卷服务节点,发送消息到该节点,由存储适配提供弹性云存储服务。