OpenStack私有云详细介绍
引言
企业部署云计算服务的模式有公有云、私有云、混合云三大类。
公有云是云计算服务提供商为公众提供服务的云计算平台,理论上任何人都可以通过授权接入该平台。
私有云是云计算服务提供商为企业在其内部建设的专有云计算系统,私有云系统存在于企业防火墙之内,只为企业内部服务。
混合云则是同时提供公有和私有服务的云计算系统,它是介于公有云和私有云之间的一种折中方案。
本章主要介绍OpenStack的私有云技术
OpenStack介绍
1. 什么是OpenStack
OpenStack是一系列开源工具(或开源项目)的组合,主要使用池化虚拟资源来构建和管理私有云及公共云。其中的六个项目主要负责处理核心云计算服务,包括计算、网络、存储、身份和镜像服务。还有另外十多个可选项目,用户可把它们捆绑打包,用来创建独特、可部署的云架构
2. 云计算模式
OpenStack从一开始就是为了云计算服务的。简单来说,它就是一个操作系统,一套软件,一套laaS软件(基础设施即服务)
(云计算的三种服务模式:laaS、PaaS、SaaS)
3. OpenStack架构
1)管理“基础设施资源”,便于用户调用和使用,是OpenStack的首要任务
2)基础设施资源,主要包括三个方面:计算、存储、网络(说通俗点就是CPU、硬盘、网卡)
3)正是因为资源能够被灵活调用,所以用户使用资源时,这个云平台可以根据用户的需要,动态增加和删减资源,不用中断用户的使用,更无需全新申请。这就是“弹性”
4)那么是如何实现的呢?——通过它的众多组件
OpenStack拥有众多的组件,通过组件之间协同进行工作
服务 | 项目名称 | 描述 |
Computer (计算服务) | Nova | 负责实例生命周期的管理,计算资源的单位。对Hypervison进行屏蔽,支持多种虚拟化的技术(红帽默认为KVM),支持横向拓展 |
Network (网络服务) | Neutron | 负责虚拟网络的管理,为实例创建网络的拓扑结构,是面向租户的网络管理,可以自己定义自己的网络,各个租户之间互不影响 |
Idententity (身份认证服务) | Keystone | 类似于LDAP服务,对用户,租户和角色,服务进行认证与授权,且支持多认证机制 |
Dashboard (控制面板服务) | Horizon | 提供一个Web管理界面,与openstack底层服务进行交互 |
Image Service (镜像服务) | Glance | 提供虚拟机镜像模板的注册与管理,将做好的操作系统拷贝为镜像模板,在创建虚拟机时直接使用,可支持多格式的镜像 |
Block Storage (块存储服务) | Cinder | 负责为运行实例提供持久的块存储设备,可进行方便的拓展,按需付费,支持多种后端存储 |
Object Storge (对象存储服务) | swift | 为openstack 提供云的弹性存储,支持群集无单点故障 |
Telemetry (计量服务) | Ceilometer | 用于度量、监控和控制数据资源的集中来源,为openstack用户提供记账用途 |
4. 核心组件
OpenStack认证服务——Keystone
1)Keystone为所有的OpenStack组件提供认证和访问策略服务,它依赖自身REST(基于Identity API)系统进行工作,主要对(但不限于)Swift、Glance、Nova等进行认证与授权。事实上,授权通过对动作消息来源者请求的合法性进行鉴定
(身份认证流程)
2)Keystone采用两种授权方式:
一种基于用户名/密码,另一种基于令牌(Token)
3)Keystone提供以下三种服务:
令牌服务:含有授权用户的授权信息
目录服务:含有用户合法操作的可用服务列表
策略服务:利用Keystone具体指定用户或群组某些访问权限
OpenStack计算设施——Nova
1)Nova是OpenStack计算的弹性控制器。OpenStack云实例生命期所需的各种动作都将由Nova进行处理和支撑,这就意味着Nova以管理平台的身份登场,负责管理整个云的计算资源、网络、授权及测度。虽然Nova本身并不提供任何虚拟能力,但是它将使用libvirt API与虚拟机的宿主机进行交互。Nova通过Web服务API来对外提供处理接口,而且这些接口与Amazon的Web服务接口是兼容的
2)功能及特点:
实例生命周期管理
计算资源管理
网络与授权管理
基于REST的API异步连续通信
3)Nova弹性云(OpenStack计算部件)包含以下主要部分:
API Server (nova-api) | API服务器提供了云设施与外界交互的接口,它是外界用户对云实施管理的唯一通道。通过使用web服务来调用各种EC2的API,接着API服务器便通过消息队列把请求送达至云内目标设施进行处理。作为对EC2-api的替代,用户也可以使用OpenStack的原生API,我们把它叫做“OpenStack API” |
消息队列 (rabbit-mq server) | OpenStack内部在遵循AMQP(高级消息队列协议)的基础上采用消息队列进行通信。Nova对请求应答进行异步调用,当请求接收后便则立即触发一个回调。由于使用了异步通信,不会有用户的动作被长置于等待状态。例如,启动一个实例或上传一份镜像的过程较为耗时,API调用就将等待返回结果而不影响其它操作,在此异步通信起到了很大作用,使整个系统变得更加高效 |
运算工作站 (nova-compute) | 运算工作站的主要任务是管理实例的整个生命周期。他们通过消息队列接收请求并执行,从而对实例进行各种操作。在典型实际生产环境下,会架设许多运算工作站,根据调度算法,一个实例可以在可用的任意一台运算工作站上部署 |
网络控制器 (nova-network) | 网络控制器处理主机的网络配置,例如IP地址分配,配置项目VLAN,设定安全群组以及为计算节点配置网络 |
卷管理 (nova-volume) | 卷工作站管理基于LVM的实例卷,它能够为一个实例创建、删除、附加卷,也可以从一个实例中分离卷 卷管理为何如此重要?因为它提供了一种保持实例持续存储的手段,比如当结束一个实例后,根分区如果是非持续化的,那么对其的任何改变都将丢失。可是,如果从一个实例中将卷分离出来,或者为这个实例附加上卷的话,即使实例被关闭,数据仍然保存其中。这些数据可以通过将卷附加到原实例或其他实例的方式而重新访问。因此,为了日后访问,重要数据务必要写入卷中。这种应用对于数据服务器实例的存储而言,尤为重要 |
调度器 (nova-scheduler) | 调度器负责把nova-API调用送达给目标。调度器以名为“nova-schedule”的守护进程方式运行,并根据调度算法从可用资源池中恰当地选择运算服务器。有很多因素都可以影响调度结果,比如负载、内存、子节点的远近、CPU架构等等。强大的是nova调度器采用的是可插入式架构 目前nova调度器使用了几种基本的调度算法: 随机化:主机随机选择可用节点 可用化:与随机相似,只是随机选择的范围被指定 简单化:应用这种方式,主机选择负载最小者来运行实例。负载数据可以从别处获得,如负载均衡服务器 |
OpenStack镜像服务器——Glance
1)OpenStack镜像服务器是一套虚拟机镜像发现、注册、检索系统
可以将镜像存储到以下任意一种存储中:
本地文件系统(默认)
S3直接存储
S3对象存储(作为S3访问的中间渠道)
OpenStack对象存储等等
2)功能及特点:提供镜像相关服务
3)Glance构件:
1)Glance-API:
主要负责接收响应镜像管理命令的Restful请求,分析消息请求信息并分发其所带的命令(如新增,删除,更新等)。默认绑定端口是9292。
2)Glance-Registry:
主要负责接收响应镜像元数据命令的Restful请求。分析消息请求信息并分发其所带的命令(如获取元数据,更新元数据等)。默认绑定的端口是9191
OpenStack存储设施——Swift
1)Swift为OpenStack提供一种分布式、持续虚拟对象存储,它类似于Amazon Web Service的S3简单存储服务。Swift具有跨节点百级对象的存储能力。Swift内建冗余和失效备援管理,也能够处理归档和媒体流,特别是对大数据(千兆字节)和大容量(多对象数量)的测度非常高效
2)swift功能及特点:
海量对象存储
大文件(对象)存储
数据冗余管理
归档能力-----处理大数据集
为虚拟机和云应用提供数据容器
处理流媒体
对象安全存储
备份与归档
良好的可伸缩性
3)Swift服务器
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
1)Horizon是一个用以管理、控制OpenStack服务的Web控制面板,它可以管理实例、镜像、创建密匙对,对实例添加卷、操作Swift容器等。除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例
2)Horizon的特点
- 实例管理:创建、终止实例,查看终端日志,VNC连接,添加卷等
- 访问与安全管理:创建安全群组,管理密匙对,设置浮动IP等
- 偏好设定:对虚拟硬件模板可以进行不同偏好设定
- 镜像管理:编辑或删除镜像
- 查看服务目录
- 管理用户、配额及项目用途
- 用户管理:创建用户等
- 卷管理:创建卷和快照
- 对象存储处理:创建、删除容器和对象
- 为项目下载环境变量