OpenStack 基础理论
云计算概述
概念
狭义的云计算是指 IT 基础设施的交付和使用模式
广义的云计算是指服务的交付和使用模式
云资源
网络资源
存储资源
服务器资源
云计算服务模型
IaaS(基础架构即服务)
提供底层 IT 基础设施服务, 包括处理能力, 存储空间, 网络资源等
一般面向对象是 IT 管理人员
PaaS(平台即服务)
把安装好开发环境的 系统平台作为一种服务通过互联网提供给用户
一般面向对象是开发人员
SaaS(软件即服务)
直接通过互联网为用户提供软件和应用程序的服务
一般面向的对象是普通用户
OpenStack 概述
一款云计算模型中的一个项目
NASA 和 Rackspace 合作研发并发起
以 Apache 许可证授权的自由软件和开放式源代码项目
旨在为公共及私有云的建设与管理提供软件的开源项目
覆盖了网络, 虚拟化, 操作系统, 服务器等各个方面
OpenStack 服务框架
服务 | 项目名称 | 描述 |
---|---|---|
Compute (计算服务) | Nove | 负责实例生命周期的管理,计算资源的单位。对 Hypervisor 进行屏蔽,支持多种虚拟化技术(红帽默认为 KVM),支持横向扩展 |
Network(网络服务) | Neutron | 负责虚拟网络的管理,为实例创建网络的拓扑结构。是面向租户的网络管理,可以自己定义自己的网络,各个租户之间互不影响 |
Identity(身份认证服务) | Keystone | 类似于 LDAP 服务,对用户、租户和角色、服务进行认证与授权,且支持多认证机制 |
Dashboard(控制面板服务) | Horizon | 提供一个 web 管理界面,与 OpenStack 底层服务进行交互 |
Image Service (镜像服务) | Glance | 提供虚拟机镜像模板的注册和管理,将做好的操作系统拷贝为镜像模板,在创建虚拟机时直接使用,可支持多格式的镜像 |
Block Storage(块存储服务) | Cinder | 负责为运行实例提供持久的快存储设备,可进行方便的扩展,按需付费,支持多种后端存储 |
Object Storage(对象存储服务) | Swift | 为 OpenStack 提供基础云的弹性存储,支持集群无单点故障 |
Telemetry(计量服务) | Ceilometer | 用于度量、监控和控制数据资源的集中来源, |
OpenStack 重要组件介绍
OpenStack 认证服务(Keystone)
Keystone 为所有的 OpenStack 组件提供认证和访问策略服务, 它依赖自身 REST(基于 Identity API)系统进行工作, 主要对(但不限于)Swift,Glance,Nova 等进行认证与授权. 事实上, 授权通过对动作消息来源者请求的合法性进行鉴定. 下图显示了身份认证服务流程图:
Keystone 采用两种授权方式, 一种基于用户名 / 密码, 另一种基于令牌(Token).
除此之外, Keystone 提供以下三种服务:
令牌服务: 含有授权用户的授权信息
目录服务: 含有用户合法操作的可用服务列表
策略服务: 利用 Keystone 具体指定用户或群组某些访问权限
keystone 认证服务注意事项:
服务入口: 如 Nova,Swift 和 Glance 一样每个 OpenStack 服务都拥有一个指定的端口和专属的 URL, 我们称其为入口(endpoints).
区位: 在某个数据中心, 一个区位具体指定了一处物理位置. 在典型的云架构中, 如果不是所有的服务都访问分布式数据中心或服务器的话, 则也称其为区位.
用户: Keystone 授权使用者
PS: 代表一个个体, OpenStack 以用户的形式来授权服务给它们. 用户拥有证书(credentials), 且可能分配给一个或多个租户. 经过验证后, 会为每个单独的租户提供一个特定的令牌.
服务: 总体而言, 任何通过 Keystone 进行连接或管理的组件都被称为服务. 举个例子, 我们可以称 Glance 为 Keystone 的服务.
角色: 为了维护安全限定, 就云内特定用户可执行的操作而言, 该用户关联的角色是非常重要的.
PS: 一个角色是应用于某个租户的使用权限集合, 以允许某个指定用户访问或使用特定操作. 角色是使用权限的逻辑分组, 它使得通用的权限可以简单地分组并绑定到与某个指定租户相关的用户.
租间: 租间指的是具有全部服务入口并配有特定成员角色的一个项目.
PS: 一个租间映射到一个 Nova 的 "project-id", 在对象存储中, 一个租间可以有多个容器. 根据不同的安装方式, 一个租间可以代表一个客户, 帐号, 组织或项目.
OpenStack 计算设施 ----Nova
Nova 是 OpenStack 计算的弹性控制器. OpenStack 云实例生命期所需的各种动作都将由 Nova 进行处理和支撑, 这就意味着 Nova 以管理平台的身份登场, 负责管理整个云的计算资源, 网络, 授权及测度. 虽然 Nova 本身并不提供任何虚拟能力, 但是它将使用 libvirt API 与虚拟机的宿主机进行交互. Nova 通过 Web 服务 API 来对外提供处理接口, 而且这些接口与 Amazon 的 Web 服务接口是兼容的.
功能及特点:
实例生命周期管理
计算资源管理
网络与授权管理
基于 REST 的 API
异步连续通信
支持各种宿主: Xen,XenServer/XCP,KVM,UML,VMware vSphere 及 Hyper-V
Nova 弹性云 (OpenStack 计算部件) 包含以下主要部分:
API Server(nova-API)
消息队列(rabbit-mq server)
运算工作站(nova-compute)
网络控制器(nova-network)
卷管理(nova-volume)
调度器(nova-scheduler)
解释如下:
1)API 服务器(nova-API)
API 服务器提供了云设施与外界交互的接口, 它是外界用户对云实施管理的唯一通道. 通过使用 Web 服务来调用各种 EC2 的 API, 接着 API 服务器便通过消息队列把请求送达至云内目标设施进行处理. 作为对 EC2-API 的替代, 用户也可以使用 OpenStack 的原生 API, 我们把它叫做 "OpenStack API".
2)消息队列(Rabbit MQ Server)
OpenStack 内部在遵循 AMQP(高级消息队列协议)的基础上采用消息队列进行通信. Nova 对请求应答进行异步调用, 当请求接收后便则立即触发一个回调. 由于使用了异步通信, 不会有用户的动作被长置于等待状态. 例如, 启动一个实例或上传一份镜像的过程较为耗时, API 调用就将等待返回结果而不影响其它操作, 在此异步通信起到了很大作用, 使整个系统变得更加高效.
3)调度器(nova-scheduler)
调度器负责把 nova-API 调用送达给目标. 调度器以名为 "nova-schedule" 的守护进程方式运行, 并根据调度算法从可用资源池中恰当地选择运算服务器. 有很多因素都可以影响调度结果, 比如负载, 内存, 子节点的远近, CPU 架构等等. 强大的是 nova 调度器采用的是可插入式架构.
目前 nova 调度器使用了几种基本的调度算法:
随机化: 主机随机选择可用节点;
可用化: 与随机相似, 只是随机选择的范围被指定;
简单化: 应用这种方式, 主机选择负载最小者来运行实例. 负载数据可以从别处获得, 如负载均衡服务器.
4)运算工作站(nova-compute)
运算工作站的主要任务是管理实例的整个生命周期. 他们通过消息队列接收请求并执行, 从而对实例进行各种操作. 在典型实际生产环境下, 会架设许多运算工作站, 根据调度算法, 一个实例可以在可用的任意一台运算工作站上部署.
5)网络控制器(nova-network)
网络控制器处理主机的网络配置, 例如 IP 地址分配, 配置项目 VLAN, 设定安全群组以及为计算节点配置网络.
6)卷工作站(nova-volume)
卷工作站管理基于 LVM 的 实例卷, 它能够为一个实例创建, 删除, 附加卷, 也可以从一个实例中分离卷. 卷管理为何如此重要? 因为它提供了一种保持实例持续存储的手段, 比如当结束一个 实例后, 根分区如果是非持续化的, 那么对其的任何改变都将丢失. 可是, 如果从一个实例中将卷分离出来, 或者为这个实例附加上卷的话, 即使实例被关闭, 数据 仍然保存其中. 这些数据可以通过将卷附加到原实例或其他实例的方式而重新访问.
因此, 为了日后访问, 重要数据务必要写入卷中. 这种应用对于数据服务器实例的存储而言, 尤为重要
OpenStack 镜像服务器 ----Glance
OpenStack 镜像服务器是一套虚拟机镜像发现, 注册, 检索系统, 我们可以将镜像存储到以下任意一种存储中:
本地文件系统(默认)
S3 直接存储
S3 对象存储(作为 S3 访问的中间渠道)
OpenStack 对象存储等等.
功能及特点:
提供镜像相关服务.
Glance 构件:
1)Glance-API:
主要负责接收响应镜像管理命令的 Restful 请求, 分析消息请求信息并分发其所带的命令(如新增, 删除, 更新等). 默认绑定端口是 9292.
2)Glance-Registry:
主要负责接收响应镜像元数据命令的 Restful 请求. 分析消息请求信息并分发其所带的命令(如获取元数据, 更新元数据等). 默认绑定的端口是 9191.
OpenStack 存储设施 ----Swift
Swift 为 OpenStack 提供一种分布式, 持续虚拟对象存储, 它类似于 Amazon Web Service 的 S3 简单存储服务. Swift 具有跨节点百级对象的存储能力. Swift 内建冗余和失效备援管理, 也能够处理归档和媒体流, 特别是对大数据 (千兆字节) 和大容量 (多对象数量) 的测度非常高效.
swift 功能及特点:
海量对象存储
大文件 (对象) 存储
数据冗余管理
归档能力 ----- 处理大数据集
为虚拟机和云应用提供数据容器
处理流媒体
对象安全存储
备份与归档
良好的可伸缩性
Swift 组件
Swift 账户
Swift 容器
Swift 对象
Swift 代理
Swift RING
Swift 代理服务器
用户都是通过 Swift-API 与代理服务器进行交互, 代理服务器正是接收外界请求的门卫, 它检测合法的实体位置并路由它们的请求.
此外, 代理服务器也同时处理实体失效而转移时, 故障切换的实体重复路由请求.
Swift 对象服务器
对象服务器是一种二进制存储, 它负责处理本地存储中的对象数据的存储, 检索和删除. 对象都是文件系统中存放的典型的二进制文件, 具有扩展文件属性的元数据(xattr).
注意: xattr 格式被 Linux 中的 ext3/4,XFS,Btrfs,JFS 和 ReiserFS 所支持, 但是并没有有效测试证明在 XFS,JFS,ReiserFS,Reiser4 和 ZFS 下也同样能运行良好. 不过, XFS 被认为是当前最好的选择.
Swift 容器服务器
容器服务器将列出一个容器中的所有对象, 默认对象列表将存储为 SQLite 文件(译者注: 也可以修改为 MySQL, 安装中就是以 MySQL 为例). 容器服务器也会统计容器中包含的对象数量及容器的存储空间耗费.
Swift 账户服务器
账户服务器与容器服务器类似, 将列出容器中的对象.
Ring(索引环)
Ring 容器记录着 Swift 中物理存储对象的位置信息, 它是真实物理存储位置的实体名的虚拟映射, 类似于查找及定位不同集群的实体真实物理位置的索引服务. 这里所谓的实体指账户, 容器, 对象, 它们都拥有属于自己的不同的 Rings.
OpenStack 管理的 Web 接口 ----Horizon
Horizon 是一个用以管理, 控制 OpenStack 服务的 Web 控制面板, 它可以管理实例, 镜像, 创建密匙对, 对实例添加卷, 操作 Swift 容器等. 除此之外, 用户还可以在控制面板中使用终端 (console) 或 VNC 直接访问实例.
总之, Horizon 具有如下一些特点:
实例管理: 创建, 终止实例, 查看终端日志, VNC 连接, 添加卷等
访问与安全管理: 创建安全群组, 管理密匙对, 设置浮动 IP 等
偏好设定: 对虚拟硬件模板可以进行不同偏好设定
镜像管理: 编辑或删除镜像
查看服务目录
管理用户, 配额及项目用途
用户管理: 创建用户等
卷管理: 创建卷和快照
对象存储处理: 创建, 删除容器和对象
为项目下载环境变量
Openstack 网络结构图
整个 OpenStack 是由控制节点, 计算节点, 网络节点, 存储节点四大部分组成.(这四个节点也可以安装在一台机器上, 单机部署)
其中:
控制节点负责对其余节点的控制, 包含虚拟机建立, 迁移, 网络分配, 存储分配等等
计算节点负责虚拟机运行
网络节点负责对外网络与内网络之间的通信
存储节点负责对虚拟机的额外存储管理等等
### 控制节点架构:
控制节点包括以下服务
- 管理支持服务
- 基础管理服务
- 扩展管理服务
#### 1)管理支持服务包含 MySQL 与 Qpid 两个服务
- MySQL: 数据库作为基础 / 扩展服务产生的数据存放的地方
- Qpid: 消息代理 (也称消息中间件) 为其他各种服务之间提供了统一的消息通信服务
#### 2)基础管理服务包含 Keystone,Glance,Nova,Neutron,Horizon 五个服务
- Keystone: 认证管理服务, 提供了其余所有组件的认证信息 / 令牌的管理, 创建, 修改等等, 使用 MySQL 作为统一的数据库
- Glance: 镜像管理服务, 提供了对虚拟机部署的时候所能提供的镜像的管理, 包含镜像的导入, 格式, 以及制作相应的模板
- Nova: 计算管理服务, 提供了对计算节点的 Nova 的管理, 使用 Nova-API 进行通信
- Neutron: 网络管理服务, 提供了对网络节点的网络拓扑管理, 同时提供 Neutron 在 Horizon 的管理面板
- Horizon: 控制台服务, 提供了以 Web 的形式对所有节点的所有服务的管理, 通常把该服务称为 DashBoard
#### 3)扩展管理服务包含 Cinder,Swift,Trove,Heat,Centimeter 五个服务
- Cinder: 提供管理存储节点的 Cinder 相关, 同时提供 Cinder 在 Horizon 中的管理面板
- Swift: 提供管理存储节点的 Swift 相关, 同时提供 Swift 在 Horizon 中的管理面板
- Trove: 提供管理数据库节点的 Trove 相关, 同时提供 Trove 在 Horizon 中的管理面板
- Heat: 提供了基于模板来实现云环境中资源的初始化, 依赖关系处理, 部署等基本操作, 也可以解决自动收缩, 负载均衡等高级特性.
- Centimeter: 提供对物理资源以及虚拟资源的监控, 并记录这些数据, 对该数据进行分析, 在一定条件下触发相应动作
- ##### 控制节点一般来说只需要一个网络端口用于通信 / 管理各个节点
- ### 网络节点架构
- ##### 网络节点仅包含 Neutron 服务
Neutron: 负责管理私有网段与公有网段的通信, 以及管理虚拟机网络之间的通信 / 拓扑, 管理虚拟机之上的防火等等
##### 网络节点包含三个网络端口
- eth0: 用于与控制节点进行通信
- eth1: 用于与除了控制节点之外的计算 / 存储节点之间的通信
- eth2: 用于外部的虚拟机与相应网络之间的通信
- ### 计算节点架构
- ##### 计算节点包含 Nova,Neutron,Telemeter 三个服务
1)基础服务
- Nova: 提供虚拟机的创建, 运行, 迁移, 快照等各种围绕虚拟机的服务, 并提供 API 与控制节点对接, 由控制节点下发任务
- Neutron: 提供计算节点与网络节点之间的通信服务
2)扩展服务
- Telmeter: 提供计算节点的监控代理, 将虚拟机的情况反馈给控制节点, 是 Centimeter 的代理服务
##### 计算节点包含最少两个网络端口
- eth0: 与控制节点进行通信, 受控制节点统一调配
- eth1: 与网络节点, 存储节点进行通信
- ### 存储节点架构
- ##### 存储节点包含 Cinder,Swift 等服务
- Cinder: 块存储服务, 提供相应的块存储, 简单来说, 就是虚拟出一块磁盘, 可以挂载到相应的虚拟机之上, 不受文件系统等因素影响, 对虚拟机来说, 这个操作就像是新加了一块硬盘, 可以完成对磁盘的任何操作, 包括挂载, 卸载, 格式化, 转换文件系统等等操作, 大多应用于虚拟机空间不足的情况下的空间扩容等等
- Swift: 对象存储服务, 提供相应的对象存储, 简单来说, 就是虚拟出一块磁盘空间, 可以在这个空间当中存放文件, 也仅仅只能存放文件, 不能进行格式化, 转换文件系统, 大多应用于云磁盘 / 文件
##### 存储节点包含最少两个网络接口
- eth0: 与控制节点进行通信, 接受控制节点任务, 受控制节点统一调配
- eth1: 与计算 / 网络节点进行通信, 完成控制节点下发的各类任务
来源: http://www.bubuko.com/infodetail-3377844.html