OpenStack框架
- 一、OpenStack发展版本
- 二、版本核心组件说明
- Compute ( Nova )计算服务
- Nova主要功能
- Nova包含以下主要部分
- ImageserVice ( Glance )镜像服务
- 功能及特点
- Glance包含以下构件
- objectstorage ( Swift 》 对象存储
- slock storage ( cinder )块存储
- Networking 《 Neutron )网络服务
- Dashboard ( Horizon )仪表板
- Identitv service ( Kevstone )认证服务
- orchestration ( Heat )编排
- TeIemetry( ceilometer )监控
- Databaseservice ( Trove )数据库服务
- DataProcessing ( Sahara )数据处理
- 三、openstack创建一台虚拟机需要哪些步骤?
一、OpenStack发展版本
二、版本核心组件说明
Compute ( Nova )计算服务
Nova是OpenStack计算的弹性控制器。OpenStack云实例生命期所需要的各种动作都将由Nova进行处理和支撑,这就意味着Nova以管理平台的身份登场,负责管理整个云的计算资源,网络、授权及测读。虽然Nova本身并不提供任务虚拟能力,但是它将使用libvirt API与虚拟机的宿主机进行交互。Nova通过Web服务API来对外提供处理接口,而且这些接口与Amazon的Web服务接口是兼容的。
Nova它提供了一种配置计算实例(即虚拟服务器)的方法。Nova支持创建虚拟机、裸机服务器,并且对系统容器的支持有限。Nova在现有linux服务器之上作为一组守护进程运行,已提供该服务。
它需要以下额外的OpenStack服务来实现基本功能:
- Keystone:这是为OpenStack服务提供身份和身份验证
- Glance:这提供了计算镜像存储库。所有计算实例都是从Glance镜像启动的。
- Neutron:他负责提供计算机实例在引导时连接到的虚拟或物理网络。
Nova主要功能
实例生命周期管理
计算资源的管理
向外提供REST风格的API
这三个组件组件通过消息中间件传输通信
Nova包含以下主要部分
- API Server(nova-api)位于表示层。用于接受外部请求
- 消息队列服务(Rabbit MQ)
- 运算工作站(nova-comoute)负责虚拟机的创建和分配
- 网络控制器(nova-network)
- 卷管理(nova-volume)
- 调度器(nova-scheduler)调度如何选择哪个主机创建VM
详细说明:
1)API服务(nova-api)
API服务提供了云设施与外界交互的接口,它是外界用户对云实施管理的唯一通道。通过使用Web服务来调用各种EC2的API,接着API服务便通过消息队列把请求发送达至云内目标实施进行出路。作为对EC2-api的替代,用户也可以使用OpenStack的原生API,我们把它叫做"OpenStack API".
2)消息队列(Rabbit MQ )
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的实例卷,它能够为一个实例创建、删除、附加卷、也可以从一个实例中分离卷。卷管理为何如此重要?因为它提供了一中保持实例持续存储的手段,比如当结束一个实力后,根分区如果是非持续化的,那么对其的任何改变都将丢失。可是。如果从一个实例中将卷分离出来,或者为这个实例附加上的卷的话,及时实例被关闭,数据仍保存其中。这些数据可以通过将卷附加到原实例或其他实例的方式而重新访问。
因此,为了日后访问,重要数据必要写入卷中。这种应用对于数据服务器实例的存储而言,尤为重要。
ImageserVice ( Glance )镜像服务
OpenStack镜像服务器是一套虚拟机镜像发现、注册、检索系统,我们可以将镜像存储到以下任意一种存储中:
本地文件系统(默认)
S3直接存储
S3对象存储(作为S3访问的中间渠道)
OpenStack对象存储等等。
功能及特点
提供镜像相关服务。
Glance包含以下构件
1、Glance-API:主要负责接收相应镜像管理命令的Resrful请求,分析消息请求信息并分发其所带的命令(如新增,删除,更新等)默认绑定端口是9292.
2、Glance-Registry:主要负责接收响应镜像元数据命令的Restful请求。分析消息请求信息并分发其所带的命令(如获取元数据,更新元数据等)。more绑定的端口号是9191.
objectstorage ( Swift 》 对象存储
Swift是OpenStack提供一种分布式,持续虚拟对象存储,它类似于Amazon Web Service的S3简单存储服务。Swift具有跨节点百级对象存储的能力。Swift内建冗余和失效备源管理,也能欧处理归档和媒体流,特别是对大数据(千兆字节)和大容量(多对象数量)的测度非常高效。
Swift的功能及特点:
海量对象存储
大文件(对象)存储
数据冗余管理
归档能力----处理大数据集
为虚拟机和云应用提供数据容器
处理流媒体
对象安全存储
备份与归档
良好的可伸缩性
系统架构
Swift采用完全对称、面向资源的分布式存储架构设计,所有组件都可扩展,避免因单点失效而扩散并影响整个系统运转;通信方式采用非阻塞式I/O模式,提高了系统吞吐和响应能力。
Swift组件包括:
1)代理服务(Proxy Server):对外提供对象服务API,会根据环的信息来查找服务地址并转发用户请求至相应的账户、容器或者对象服务;由采用无状态的REST请求协议,可以进行横向扩展来均衡负载。
2)认证服务(Authentication Server):验证访问用户的身份信息,并获得一个对象方位令牌(Token),在一定的时间内会一直有效;验证访问令牌的有效性并缓存下来直至过期时间。
3)缓存服务(Cache Server):缓存的内容包括对象服务令牌,账户和容器的存在信息,但不会缓存对象本身的数据;缓存服务可采用Memcached集群,Swift会使用一致性三列算法来分配缓存地址。
4)账户服务(Account Server):提供账户元数据和统计信息,并维护所包含容器列表的服务,每个账户的信息被存储在一个SQLite数据库中。
5)容器服务(Container Server):提供容器元数据和统计信息,并维护所含对象列表的服务,每个容器的信息也存储在一个SQLlite数据库中。
6)对象服务(Object Server):提供对象元数据和内容服务,每个对象的内容会以文件的形式存储在文件系统中,元数据会作为文件属性来存储,建议采用支持扩展属性的XFS文件系统。
7)复制服务(Replicator):会检测本地分区副本和远程副本是否一致,具体是通过对比散列文件和高级水印来完成,发现不一致时会采用推式(Push)更新远程副本,例如对象复制服务会使用远程文件拷贝工具rsync来同步;另外一个任务是确保被标记删除的对象从文件系统中移除。
8)更新服务(Updater):当对象由于高负载的原因而无法立即更新时,任务将会被序列化到本地文件系统中进行排队,以便服务恢复后进行异步更新;例如成功创建对象后容易服务器没有及时更新对象列表,这个时候容器的跟新操作就会进入排队中,更新服务会在系统恢复正常后扫描队列并进行相应的更新处理。
9)审计服务(Auditor):检查对象,容器和账户的完整性,如果发现比特级的错误,文件将被隔离,并复制其他的副本以覆盖本地损坏的副本;其他类型的错误会被记录到日志中。
10)账户清理服务(Account Reaper):移除被标记为删除的账号,删除其所包含的所有容器对和对象。
slock storage ( cinder )块存储
Cinder 是OpenStack Block Storage服务,用于为Nova虚拟机,lronic裸机主机,容器等提供卷。
Cinder的一些目标是:
基于组组件体系结构:快速添加新的行为
高度可用:扩展到非常严重的工作负载
容错:隔离进程避免级联失败
可恢复的:故障应该易于诊断,调试和纠正
开放标准:成为社区驱动api的参考实现
作为Cinder的最终用户,我们将使用Cinder创建和管理使用欧冠Horizen用户界面,命令行工具, 如python-cinderclient,或者直接使用REST API。
Cinder的所有功能都是通过REST API公开,可用于使用Cinder构建更复杂的逻辑或自动化, 这可以直接使用或者通过各种SDK使用。
Cinder服务通过一系列守护进程的交互来工作,这些进程名称cinder-*永久驻留在主机或机器上,我们可以从单个节点运行所有二进制文件,也可以分布在多个节点上,我们也可以在与其他OpenStack服务想用的节点上运行他们。
Cinder特性
- 默认的Cinder服务实现是一种iscsi解决方案,它使用linux的逻辑卷管理器(LVM)。
PS:Cinder服务还提供驱动程序,我们可以使用除基本LVM实现之外的多个供应商的后端存储设备。也可以使用这些存储设备代替基本LVM安装。
- 网络模式不会干扰Cinder操作,但您必须为块存储设置网络才能工作。
- 在某些情况下我们也可以从内部卷中存储和运行实例。
- Cinder同时还支持使用NFS存储。
- 可以创建多个后端存储。这些后端存储为相同的OpenStack Compute配置提供服务,并为每个后端存- 储或后端存储池启动一个cinder-volume
- 通过lvm快照备份块存储服务磁盘
- 能够在支持其卷类型的后端之间前一卷(目前不允许迁移具有快照的卷)
- volume number weigher调度器。OpenStack允许用户创建云盘时根据后端存储剩余容量和已分配容量来选择后端。而volume number weigher调度器是根据不同存储后端的云盘数量来选择后端,调度到存储后端上云盘数量最少的节点来处理用户有关云盘生命周期的请求,这样做的好处是可以使用不同存储厚点的I/O负载均衡并提高IO性能。
- 一致性组;Cinder提供了一致性组支持。添加了支持以创建一致性组的快照。此功能利用存储级别的一致性技术。它允许在同一时间点采集同一一致性组中的多个卷的快照,以确保数据一致性。可以使用块存储命令行执行。
- DriverFilter和GoodnessWeigher调度器;根据后端特定属性选择卷后端。可以帮助确保调度程序根据请求的卷属性以及各种后端特定属性选择最佳后端。
- 速率限制卷复制带宽;从映像或现有卷创建新卷时,或者将卷映像上传到映像服务时,大型数据复制可能会对磁盘和网络带宽造成压力。为了减轻来自实例的数据访问速度,OpenStack块存储支持对卷数据复制带宽进行速率限制。
PS:此功能不支持使用远程文件系统(如NFS)的某些后端
- 精简配置中的超额订阅;Cinder可以使用超额配置比率, 根据虚拟容量选择卷后端,以进行精简配置为默认LVM驱动程序提供了参考实现。
- 镜像卷缓存;Cinder具有可选的镜像卷缓存,可以显著提高从镜像创卷卷的性能。改进取决于许多因素,主要是配置的后端克隆卷的速度。
- Volume-backed image;Cinder能够快速的从保存镜像数据的云盘创建新的云盘,与镜像数据保存到File和Swift相比,如果后端存储克隆性能比较好,从Volume-backed image创建新的云盘速度会更快,如果镜像属性是public,那么这个volume-backed image中的数据可以在所有的项目中共享。该功能要求在镜像服务中增加Cinder的locations信息。为了允许镜像服务使用Cinder作为后端存储,需要增加Cinder到允许存储的配置项中。
- 通用卷组;自Nweton发布以来,Cinder中提供了通用卷组支持,添加了支持、用于创建组类和组规范、创建卷组以及创建组的快照,可以使用块存储命令行执行组操作。
Networking 《 Neutron )网络服务
OpenStack的网络服务,现已由之前的Quantum改名为Neutron。Neutron提供云计算环境下的虚拟网络功能,目的是为OpenStack云更灵活地划分物理网络,在多租户的环境下提供给每个租户独立的网络环境。
用户可以创建自己的网路,控制网络流量,也可以控制服务器和设备链接一到多个网络。
Neutron的网络管理的三种模式:
- FlatDHCP模式。
- Flat模式
- VLAN模式
Dashboard ( Horizon )仪表板
Horizon是一个用以管理、控制OpenStack服务的Web控制面板,它可以管理实例、镜像、创建密匙对,对实例添加卷、操作Swift容器等。除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例。总之,Horizon具有如下一些特点:
(1)实例管理:创建、终止实例,查看终端日志,VNC连接,添加卷等
(2)访问与安全管理:创建安全群组,管理密匙对,设置浮动IP等
(3)偏好设定:对虚拟硬件模板可以进行不同偏好设定
(4)镜像管理:编辑或删除镜像
(5)查看服务目录
(6)管理用户、配额及项目用途
(7)用户管理:创建用户等
(8)卷管理:创建卷和快照
(9)对象存储处理:创建、删除容器和对象
(10)为项目下载环境变量
Identitv service ( Kevstone )认证服务
Keystone为所有的OpenStack组件提供认证和访问策略服务,它依赖资深REST(基于Identity API)系统进行工作主要对(单不限于)Swift、Glance、Nova等进行认证与授权。事实上,授权通过对动作消息来源者请求的合法性进行鉴定,下图显示了身份认证服务的流程:
Keystone采用两种授权方式,一种基于用户名/密码,另一种基于令牌(Token)。
除此之外,Keystone提供一下三种服务:
令牌服务:含有授权用户的授权信息
目录服务:含有用户合法操作的可用服务列表
策略服务:利用Keystone具体制定用户或群组某些访问权限
Keystion认证服务注意点:
服务入口:如Nova、Swift和Glance一样每个OpenStack服务都拥有一个制定的端口和专属的URL,我们称其为入口(endpoints)。
区位:在某个数据中心,一个区位具体制定了一处物理位置。在典型的云架构中,如果不是所有的服务都访问分布式数据中心或服务其的话,则也称其为区位。
用户:Keystone授权使用者
PS:代表一个个体,OpenStack以用户的形式来授权服务给它们。用户拥有证书(credentials),且可能分配个一个或多个租户。经过验证后,会为每个单独的租户提供一个特定的令牌。
服务:总体而言,任何通过Keystone进行连接或管理的组件都被称为服务。举个例子,我们可以称Glance为Keystone的服务
角色:为了维护安全限定,就云内特定用户可执行的操作而言,该用户关联的角色是非常重要的。
PS:一个角色是应用于某个租户的使用权限集合,以允许某个指定用户访问或使用特定操作。角色是使用权限的逻辑分组、它使得通过的权限可以简单的分组并绑定到与某个指定租户相关的用户。
租间:租间指的是具有全部服务入库并配有特定成员角色的一个项目。
PS:一个租间映射到一个Nova的"project-id",在对象存储中,一个租间可以有多个容器。根据不同的安装方式,一个租间可以代表一个客户、账号、组织或项目。
orchestration ( Heat )编排
- 部署编排服务。
- 提供了一种通过模板定义的协同部署方式。
- 模板驱动的引擎,允许应用开发人员使用提供的模板语言描述云环境的架构,并且以自动化的方式进行部署云计算资源。
- 通过和Telemetry Service结合,可以更好的实现云计算资源扩展的自动化。
TeIemetry( ceilometer )监控
Databaseservice ( Trove )数据库服务
- 为用户在OpenStaack的环境提供可扩展和可靠的关系型和非关系型数据库引擎服务。
- 主要用于帮助用户在复杂管理时进行资源的隔离,方便进行自动化的管理操作
- 用户可以根据自己的需要创建多个数据库。
DataProcessing ( Sahara )数据处理
三、openstack创建一台虚拟机需要哪些步骤?
在web界面创建Vm任务
通过MQ转发给Nova-api
Nova-api 接收rest消息
Nova-conductor 进行数据库操作
Nova-schedule 选择合适的主机
Nova-computer 虚拟机生命周期管理
netutron-server 接受rest消息 想keystone鉴权 与数据库交互 提供网络对象API
neutron-dhcp-agent 提供网络功能
cinder-api 接受rest消息
cinder-schedule 选择合适的存储后端
cinder-volume 负责与后端存储对接 创建存储卷
glance-api 接受rest消息
glance-registry 用于与guass DB数据库进行交互 用于存储或获取镜像
image store 存储的接口层