OpenStack理论知识详细解析
作者:互联网
前言
OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。
OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。
OpenStack云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as a Service, IaaS)。OpenStack 包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块;后者是 Rackspace开发的分布式云存储模块,两者可以一起用,也可以分开单独用。OpenStack除了有 Rackspace 和 NASA 的大力支持外,还有包括 Dell、Citrix、 Cisco、 Canonical等重量级公司的贡献和支持,发展速度非常快,有取代另一个业界领先开源云平台 Eucalyptus 的态势。
目录
一、OpenStack概述
1.什么是OpenStack
- OpenStack 是一个利用虚拟资源池构建和管理私有云和公共云的平台。那些包含 OpenStack
平台的各个工具(称作“项目”)负责处理计算、网络、存储、身份和镜像服务等核心云计算服务。还可将十余个可选项目捆绑到一起,创建与众不同的可部署云 - 在虚拟化环境中,诸如存储、CPU 和 RAM
等资源都是从诸多供应商特定的项目中提取出来,然后由虚拟机监控程序进行拆分并按需进行分配。OpenStack
使用一组一致的应用编程接口(API),进一步将这些虚拟资源提取为离散池,用于辅助标准云计算工具,供管理员和用户直接交互使用
2.云计算服务模型
- IaaS(基础架构即服务)
- 提供底层IT基础设施服务,包括处理能力、存储空间、网络资源等
- 一般面向对象是IT管理人员
- PaaS(平台即服务)
- 把安装好开发环境的 系统平台作为一种服务通过互联网提供给用户
- 一般面向对象是开发人员
- SaaS(软件即服务)
- 直接通过互联网为用户提供软件和应用程序的服务
- 一般面向的对象是普通用户
3.OpenStack的优势
- OpenStack 在控制性、 兼容性、 可扩展性、 灵活性方面具备有优势, 它可能成为云计算领域的行业标准
- 控制性: 完全开源的平台, 模块化的设计, 提供相应的 API 接口, 方便与第三方技术集成, 从而满足自身业务需求
- 兼容性: OpenStack 兼容其他公有云, 方便用户进行数据迁移
- 可扩展性: Openstack 采用模块化的设计, 支持主流发行版本的 Linux, 可以通过横向扩展, 增加节点、 添加资源
- 灵活性: 用户可以根据自己的需要建立基础设施, 也可以轻松地为自己的群集增加规模
- Openstack 项目采用 Apache2 许可, 意味着第三方厂家可以重新发布源代码。行业标准: 众多 IT 领军企业都加入到 OpenStack 项目, 意味着 OpenStack 在未来可能形成云计算行业标准
二、Openstack节点类型
1.控制节点
- 是OpenStack中实现数据中心控制的节点,管理
OpenStack的所有服务组件,所有组件不管在哪里,都需要在控制节点上完成类似注册的工作 - 控制节点必须安装三种类型的软件
-
第一种:控制接节点上必须安装的是一些相对于
Openstack服务来说的底层的软件,这些底层的软件需要为openstock组件来提供服务,这些软件有DB软件,消息队列软件,
Memorycache和Etcd等 -
第二种
-
除了底层软件之外,控制节点上必须安装三个 OpenStack的核心组件
-
Keystone和glance是完整的安装在控制节点上的,Nova安装了一部分,Nova的安装是为了节点上的计算服务
-
Glance服务是可以控制节点上剥离的,一般 Glance占用资源小。一般大家都安装在控制节点上的 控制节点是可以安装 Nova
-
computed的,但是生产环境是不会这么干的
-
-
第三种
- 除了底层服务软件和核心组件之外,OpenStack还支持其他可选的组件,比如你的集群中有存储接口,那么在
OpenStack上需要安装管理存储节点和对应的服务组件等等,类似核心组件Nova的套路
- 除了底层服务软件和核心组件之外,OpenStack还支持其他可选的组件,比如你的集群中有存储接口,那么在
-
2.网络节点
网络节点只有Neutron组件,网络节点上的neutron安装core plugin(ML2)和service plugin(L3 service),具体的 Service Plugin可以根据你的需求选择
3.计算节点
包含Nova部分组件和 Neutron部分组件Nova- compute.,Neutron agent
4.存储节点
安装存储组件的节点,一般有代表性的 Cinder(块存储)和 Swift(对象存储)
三、OpenStack框架
- OpenStack由多种服务组成,每种服务具有独立的命名。在整个OpenStack架构中,
Keystone提供认证服务,接收来自用户和服务的认证请求,并对其身份进行认证 - 各个服务之间通过公用的API接口进行交互。大部分服务均包含一个API进程,用于侦听API请求,根据服务的性质选择处理请求或转发请求。服务进程之间的通讯通过消息队列实现,如AMQP
- 在部署完成的云系统平台上,用户通过 Dashboard或 RestaRt方式在经
Keystone模块认证授权后,可以执行创建虚拟机服务。通过Nova模块创建虚拟机实例,Nova调用
Glance模块提供的镜像服务,然后调用 Neutron模块提供网络服务。根据需要可以选择给虚拟机増加存储卷,卷功能由
Cinder模块提供服务。整个过程在Ceilometer模块的资源监控下完成。同时 Cinder提供的 Volume和
Glance提供的镜像可以诵讨 Swift对象存储机制讲行保存
1.核心项目
服务 | 项目名称 | 方法描述 |
---|---|---|
Dashboard | Horizon | 提供了一个基于web的自服务门户,与OpenStack底层服务交互,诸如启动一个实例,分配IP地址以及配置访问控制 |
Compute | Nova | 在OpenStack环境中计算实例的生命周期管理。按需响应包括生成、调度、回收虚拟机等操作。 |
Networking | Neutron | 确保为其它OpenStack服务提供网络连接即服务 “Quantum”–>Neutron |
Identity Management | Keystone | 为其他OpenStack服务提供认证和授权服务,为所有的OpenStack服务提供一个端点目录。 |
Object Storage | Swift | 通过一个 RESTful,基于HTTP的应用程序接口存储和任意检索的非结构化数据对象。它拥有高容错机制,基于数据复制和可扩展架构。它的实现并像是一个文件服务器需要挂载目录。在此种方式下,它写入对象和文件到多个硬盘中,以确保数据是在集群内跨服务器的多份复制 |
Block Storage | Cinder | 为运行实例而提供的持久性块存储。它的可插拔驱动架构的功能有助于创建和管理块存储设备 |
Image Service | Glance | 存储和检索虚拟机磁盘镜像,OpenStack计算会在实例部署时使用此服务。 |
Telemetry | Ceilometer | 为OpenStack云的计费、基准、扩展性以及统计等目的提供监测和计量。 |
Database Service | Trove | 提供管理数据库即服务配置关系和非关系数据库引擎节点的Trove相关,同时提供Trove在Horizon中的管理面板 |
Bare Metal Provisioning | Ironic | 提供裸金属管理服务,Nova Baremetal驱动程序 |
Orchestration | Heat | 提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。 |
Data Processing Service | Sahara | 使用用户能够在Openstack平台上便于创建和管理Hadoop以及其他计算框架集群, |
2.OpenStack- ironic裸金属
- OpenStack Ironic就是一个进行裸机部署安装的项目 所谓裸机,就是指没有配置操作系统的计算机。从裸机到应用还需要进行以下操作:
硬盘RAID、分区和格式化;
安装操作系统、驱动程序;
安装应用程序。
- ronic实现的功能,就是可以很方便的对指定的一台或多台裸机,执行以上一系列的操作。例如部署大数据群集需要同时部署多台物理机,就可以使用Ironic来实现
- Ironic可以实现硬件基础设施资源的快速交付
四、OpenStack重要组件
1.OpenStack认证服务(Keystone)
Keystone为所有的OpenStack组件提供认证和访问策略服务,它依赖自身REST(基于Identity API)系统进行工作,主要对(但不限于)Swift、Glance、Nova等进行认证与授权。事实上,授权通过对动作消息来源者请求的合法性进行鉴定。下图显示了身份认证服务流程图:
- Keystone采用两种授权方式,一种基于用户名/密码,另一种基于令牌(Token)
- 除此之外,Keystone提供以下三种服务:
令牌服务:含有授权用户的授权信息
目录服务:含有用户合法操作的可用服务列表
策略服务:利用Keystone具体指定用户或群组某些访问权限
1.1keystone涉及概念
用户(user)
- 使用服务的用户,可以是人,服务或者系统,只要是使用了openstack服务的对象都可以称为用户。当User对OpenStack进行访问时,Keystone会对其身份进行验证
- 在 OpenStack中,用户是使用 OpenStack云服务的人、系统或服务。用户可以登录或使用指定的oken访问云中的资源,并可以被指派到指定的项目或角色。认证服务通过对用户身份的确认,来判断一个请求是否被允许。用户通过认证信息如密码、API Keys等进行验证
项目(project)
- 租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源
- 项目是各个服务中的一些可以访问的资源集合,用来分组或隔离资源或身份对象。不同服务中,项目所涉及的资源不同。在Nova服务中项目可以是云主机,在Swift和 Glance中项目可以是镜像存储,在Neutron中项目可以是网络资源。默认情况下,用户总是被绑定到项目中。一个项目中可以有多个用户,一个用户可以属于一个或多个项目
角色(role)
- 角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。安全包含两部分:Authentication(认证)和Authorization(鉴权)
- 角色是一组用户可以访问的资源权限集合,这些资源包含虛拟机、镜像、存储资源等
- 用户既可以被添加到全局的角色,也可以被添加到指定项目内的角色中。其区别是,全局的角色适用于所有项目中的资源权限,而项目内的角色只适用于某个项目内的资源权限
服务(service) - OpenstackService,即Openstack中运行的组件服务。nova,glance都是属于一个服务,需要在keystone上进行创建,指定类型
- 用户使用云中的资源是通过访问服务的方式实现, OpenStack中包含许多服务,如提供计算服务的Nova、提供镜像服务的Glance以及提供对象存储服务的 Swift。一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个用户尝试访问其项目内的
service时,该用户必须知道这个服务是否存在以及如何访问这个服务 - 创建服务有一个服务,就创建一个endpoint,会根据服务类型去查找那个服务。Service 决定每个 Role 能做什么事情 ,Service 通过各自policy.json 文件对 Role 进行访问控制
令牌(token)
- 指的是一串比特值或者字符串,用来作为访问资源的令牌。Token中含有可访问资源的范围和有效时间
- 是一串数字字符串,用于访问0 penStock服务的API以及资源。一个令牌可以在特定的时间内生效,并可以在任意时间释放。在keystone中主要是引入令牌机制来保护用户对资源的访问
端点(endpoint) - 一个可以通过网络来访问和定位某个Openstack
Service的地址,通常是一个URL。例如,Nova需要访问Glance服务去获取Image时,Nova通过访问Keystone拿到Glance的Endpoint,然后通过访问该Endpoint去获取Glance服务,我们可以通过Endpoint的region属性去定义多个region。Endpoint该使用对象分为三类:- Admin URL:给admin用户使用,被从常规的访问中分离。
- Internal URL:Openstack内部服务使用来跟别的服务通信,只能被局域网访问。
- Public URL:其它用户可以访问的地址,可以被全局访问。
- User 通过 Endpoint 访问资源和执行操作
- 所谓端点,是指用于访问某个服务的网络地址或URL。如果需要访问一个服务,则必须知道该服务的端点。在keystone中包含一个端点模板,这个模板提供了所有已存在的服务的端点信息。一个端点模板包含一个URL列表,列表中的每个URL都对应一个服务实例的访问地址,并且具有public、 private和 admin这三种权限。其中 public类型的端点可以被全局访问, private类型的端点只能被OpenStack内部服务访问, admin类型的端点只能被管理员访问
- OpenStack身份认证服务将管理认证、授权以及服务目录整合为一个访问点,同时也是用户需要和OpenStack进行交互的第一个服务。一旦认证通过,终端用户使用其身份访问OpenStack其他服务。同样的,其他服务也将利用身份认证服务确认来访用户身份是否合法以及是否具备相应的权限。此外,OpenStack身份认证服务可以集成其他的身份认证管理系统
2.控制台 Dashboard
- Dashboard(项目名称为 horizon)是一个Web接口,使得云平台管理员以及用户可以管理不同的OpenStack资源以及服务
- Dashboard通过 Apache的 mod_uwgis搭建,并通过 python模块实现和不同的 OpenStack API进行交互,从而实现管理目的
- Dashboard是一个用以管理、控制OpenStack服务的Web控制面板,通过它可以实现绝大多数OpenStack的管理任务。如实例、镜像、密匙对,卷等
- 通过Dashboard,管理员无需记忆繁琐复杂的OpenStack命令。除此之外,用户还可以在控制面板中使用终端或VNC直接访问实例控制台Dashboard可以实现以下管理任务
- 实例管理:创建、删除实例,查看终端日志,远程连接实例,管理卷等
- 访问与安全管理:创建安全组,管理密匙对,设置浮动IP地址等
- 偏好设定:对虚拟硬件模板可以进行不同程度的偏好设定
- 镜像管理:导入、编辑或删除镜像
- 用户管理:创建用户、管理用户、设置配额、查看服务目录等
- 卷管理:管理卷和快照
- 对象存储处理:创建、删除容器和对象
3.计算模块 Nova
概述
- Nova是负责提供计算资源的模块,也是OpenStack中的核心模块,其主要功能是负责虚拟机实例的生命周期管理、网络管理、存储卷管理、用户管理以及其他的相关云平台管理功能
- OpenStack使用计算服务来托管和管理云计算系统。 OpenStack计算服务是基础设施服务(IaaS)系统的主要组成部分,模块主要由Python实现
- OpenStack计算组件请求 OpenStack Identity服务进行认证,请求 OpenStack Image服务提供磁盘镜像,为OpenStackDashboard提供用户和管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定,例如,每个项目下可以创建多少实例。OpenStack组件可以在标准硬件上横向大规模扩展,并且下载磁盘镜像启动虚拟机实例
组件
Nova-api服务
- 接收和响应来自最终用户的计算API请求,对外提供一个与云基础设施交互的接口,也是外部可用于管理基础设施的唯一组件
- 此服务支持Openstack计算服务API 、Amazon EC2 API 以及特殊的管理API,用于接收用户管理操作请求,管理使用EC2 API通过 Web Services调用实现
- 然后 API Server通过消息队列( Message Queue)轮流与云基础设施的相关组件通信。作为EC2API的另外一种选择,OpenStack也提供一个内部使用的“ OpenStack API
Nova-api-metadata服务 - 接收来自虚拟机发送的元数据请求。Nova-api-metadata服务一般在安装Nova-Network服务的多主机模式下使用
Nova-Compute服务 - 一个持续工作的守护进程,通过 Hypervisor的API来创建和销毁虚拟机实例
- Xen Server/XCP 的XenAPI
- KVM或QEMU的libvirt
- Vmware的WwareAPI
- 这个过程通常比较复杂。守护进程同意了来自队列的动作请求,转换为一系列的系统命令,如启动一个KVM实例,然后到数据库中更新它们的状态
Nova- placement-api服务 - Nova- placement-api用于追踪记录资源提供者目录和资源使用情况,这些资源包括计算、存储以及IP地址池等
Nova-Conductor模块
- Nova- Conductor模块作用于Nova- Compute服务与数据库之间,避免了由Nova-Compute服务对云数据库的直接访问。它可以横向扩展。但是,不要将它部署在运行Nova- Compute服务的主机节点上
Nova- Scheduler服务
-
接收到一个来自队列的运行虚拟机实例请求,然后决定在哪台计算服务器主机来运行该虚拟机。通过恰当的调度算法从可用资源池获得一个计算服务。Nova-Scheduler服务将根据负载、内存、可用域的物理距离、CPU构架等信息,并运行调度算法,最终做出调度决策
-
最终OpenStack计算模块Nova中的各个组件是以数据库和队列为中心进行通信的
4.网络模块 Neutron
概述
OpenStack早期的网络模块是Nova- Network,而 Neutron则是Nova- Network的更新换代产品,也是目前 OpenStack重要组件之一;以下是几个概念
网络
- 类似于实际的物理环境中的网络,OpenStack网络用于连接云主机或路由器。除此之外,还包含子网、网关以及DHCP服务等。OpenStack网络分为内部网络和外部网络,内部网络一般用于连接虚拟机,而外部网络一般用于连接宿主机外面的网络
子网
- OpenStack中的子网是一个IP地址段,用于定义实际的IP地址范围
端口
- 端口类似于实际网络中的网络接口,用于连接终端设备或另外一个网络。不同的是,OpenStack中端口连接的一般都是虚拟设备接口,如虚拟机的虚拟网卡或者路由器的虚拟接口等。端口还描述了相关的网络配置,例如可以在端口上配置MAC地址和IP地址
路由器
- 路由器用于连接 OpenStack的内部网络和外部网络。类似实际路由器功能,支NAT功能,通过绑定浮动IP地址还可以实现地址映射 Neutron分别提供了二层(L2)交换和三层(L3)路由抽象的功能,对应于物理网络环境中的交换机和路由器
linux虚拟网络
Neutron中最为核心的工作便是对网络的抽象与管理。在 OpenStack环境中对网络的抽象主要有以下几种形式
虚拟交换机/网桥
- OpenStack网络中,对于二层交换机有两种的抽象方式,一种是通过 Linux
bridge实现,另外一种是通过OpenvSwitch实现。在一些早期opeNstack版本中,默认使用的是OpenvSwitch,而在Ocata版本中,多节点手动安装默认使用的是 Linux bridge。从功能上来说openvSwitch更加强大,但是 Linuxbridge实现比较简单,更加适合初学者 - 虚拟交换机/网桥主要实现以下功能
- 连接虚拟机
- 通过vlan功能隔离虚拟机网络
- 连接虚拟网络到宿主机外部网络
OpenvSwitch
- 类似于 Linux bridge,OpenvSwitch也可以实现对二层网络的抽象,对虚拟网络提供分布式交换机功能。它支持各种组网类型,功能全面,支持基本的vlan功能,也支持QOS以及NetFlow、 sFlow标准的管理接口和协议。从而,通过这些接口可以实现VM流量监控的任务
- 运行在云环境中各种或相同虚拟化平台上的多个 vSwitch实现了分布式架构的虚拟交换机。一个物理服务器上的 vSwitch可以透明的与其他服务器上的 vSwitch连接通信
虚拟路由器
- OpenStack中的虚拟路由器是对网络设备的一种抽象,实现了租户间的多网络构建以及内部网络和外部网络之间的通信问题。其实现原理和真实路由器一致,根据路由表转发数据包,同时还支持NAT地址转换以及浮动IP地址设置
namespace - 二层网络通过van对租户网络进行隔离,而三层网络是通过 nanespace进行隔离,每个namespace都有自己的独立网络栈,包括路由表、防火墙规则、网络接口等
- 同时, Neutron为每个 namespace提供DHCP和路由服务。所以各个租户之间的网络地址允许重叠,因为它们在不同的namespace中进行抽象
DHCP server
- Neutron提供DHCP服务的组件是 DHCPagent,默认通过 dnsmasq实现DHCP功能
组网模型
- Neutron提供了多种组网模型供不同的租户搭建各种网络拓扑
local网络
- Local网络网络模型有如下特点
- 不具备vlan特性,不能对二层网络进行隔离
- 同一个local网络的虚拟机实例会连接到相同的虚拟交换机上, instance之间可以通信
- 虚拟交换机没有绑定任何物理网卡,无法与宿主机之外的网络通信
Flat网络
- Flat组网模型不支持vlan,属于扁平化的网络模型。 Linux bridge直接绑定物理网卡,并连接虚拟机。每个F1at网络都会独占一个物理网卡,该物理网卡不能配置IP地址,所有连接到此网络的虚拟机共享一个私有IP网段
- Flat组网模型适用于以下应用场景
- Flat网络直接连接虚拟机和外部网络
- Flat网络连接路由器和外部网络
VLAN网络
- VXLAN网络使用的是隧道技术,是目前 Openstack广泛使用的网络技术
- 相比于vlan模型有以下改进
- 租户数量从4K增加到16M
- 租户内部通信可以跨越任意IP网络,支持虚拟机任意迁移
- 一般来说,每个租户逻辑上都有一个网关实例,IP地址可以在租户间进行复用
- 能够结合SDN技术对流量进行优化
- VXLAN网络是在传统的IP网络中传输以太网数据帧。主要涉及到以下几个概念
- VTEP( VXLAN Tunnel end point,简称TEP):VXLAN隧道的端点,用于VXLAN报文的封装和解封装。类似于IPsec VPN中的加密点。传统的以太网帧在发送TEP端将封装新的VXLAN、UDP、IP以及以太网头部。而接收VTEP端将数据解封装。 VXLAN报文中源IP地址为本节点的VTEP地址,VXLAN报文中目的IP地址为对端节点的VTEP地址,一对VTEP地址就对应着一个 VXLAN隧道
- VNI( VXLAN Network Identifier,简称VNI):用来标识一个
VXLAN段,在VXLAN网络中,通过VNI标识一个租户,类似vlan网络中的 vlanID。不同VXLAN段的虚拟机之间不能直接二层相互通信。VNI由24比特组成,支持多达16M的租户
5.镜像模块 Glance
概述
- 镜像服务允许用户发现、注册和获取虚拟机镜像。它提供了一个 REST
API,允许查询虚拟机镜像的元数据,并获取一个现存的镜像。可以将虚拟机镜像存放到各种位置,从简单的文件系统到对象存储系统,如OpenStack Swift项目,默认是存储在本地文件系统上的 - 其实在生产环境中这个模块本身不存储大量的数据,需要挂载后台存储 swift来存放实际的镜像数据
- 在OpenStack环境中,镜像是用于在计算节点生成虛拟机。脱离了镜像服务,就无法创建虚拟机,所以镜像服务是0
penstock的一个核心服务
主要组件
glance-api
- glance-api用于接收镜像API的调用,诸如镜像发现、恢复以及存储等。作为一个后台进程, glance-api对外提供 RESTAPI接口,响应用户发起的镜像查询、获取和存储的调用
glance- registry
- glance- registry用于存储、处理和恢复镜像的元数据,元数据包括镜像的的大小和类型等属性,registry是一个内部服务接口,不建议暴露给普通用户
database
- database用于存放镜像的元数据,可以根据需要选择数据库,如MySQL、 SQLite等
storage repository for image files
- 一般情况下, glance并不需要存储任何镜像,而是将镜像存储在后端仓库中。 Glance支持多种 repository。主要包括对象存储Swift、块存储 Cinder、 VMware的ESX/ESXi或者vCenter、亚马逊的S3、HTTP可用服务器、Ceph等
格式
- Glance支持多种镜像格式,包括磁盘格式和容器格式。 OpenStack中可以支持多种虚拟化的技术,如KVM、 Xen Server、Hyper-V和VMware等。用户在上传镜像时,需要指定上传镜像文件的格式。除了磁盘格式,在Glance中还有容器的格式。一般在上传镜像时只需指定容器格式为bare,即为空。因为Glance中并没有真正使用到容器格式。容器格式用来表示虚拟机镜像文件是否包含了元数据,例如OVF格式。下面列出了G1ance中常用的几种镜像文件格式
RAW
- RAW是一种没有格式或裸格式的磁盘文件类型,RAW对数据不做任何修饰和处理,直接保存最原始的状态,所以在性能方面非常出色。由于RAW格式保存原始数据,因此更容易和其他镜像格式进行转换
QCOW2
- QCOW2是QCOW的升级版本,其主要特性是磁盘文件大小可以动态按需增长,并且不会占用所有的实际磁盘空间大小。例如创建了100GB的QCOW2格式的磁盘,而实际只保存了2GB数据,那么将只占用了实际物理磁盘的2GB空间。与RAW相比,使用这种格式可以节省磁盘容量
VHD
- VHD是微软公司产品使用的磁盘格式。 Virtual PC(微软早期虚拟化产品)和 Hyper-V使用的就是VHD格式VirtualBox也提供了对VHD的支持。如需在 OpenStack上使用 Hyper-V类型的虚拟化,就应上传VHD格式的镜像文件
VMDK
- VMDK是 VMware公司产品使用的磁盘格式。目前也是一个开放的通用格式,除了 VMware自家的产品外,QEM和Virtualbox也提供了对VMDK格式的支持
VDI
- VDI是Oracle公司的 VirtualBox虚拟软件所使用的格式
ISO
- ISO是指一种存档数据文件在光盘上的格式
AKI,ARI,AMI
- Amazon公司的AWS所使用的镜像格式
6.块存储 Cinder
概述
- 块存储服务(
Cinder)提供块存储。存储的分配和消耗是由块存储驱动器或者多后端配置的驱动器决定的。还有很多驱动程序可用:NAS/SAN、NFS、 ISCSI、CEPH等。块存储适合性能敏感性业务场景,例如数据库存储大规模可扩展的文件系统或服务器需要访问到块级的裸设备存储。典型情况下,块服务API和调度器服务运行在控制节点上。取决于使用的驱动卷服务器可以运行在控制节点、计算节点或单独的存储节点之上 - 块存储服务为OpenStack中的实例提供持久的存储,块存储提供一个基础设施,用于管理卷以及和OpenStack计算服务交互,为实例提供卷、快照、卷类型等功能。站在实例的角度,挂载的每个卷都是一块独立的硬盘。Cinder提供了从创建卷到删除卷整个生命周期的管理。其具体功能是:
- 提供 REST API接口,使用户能够查询和管理卷、卷快照以及卷类型
- 协调卷的创建请求,合理优化存储资源的分配
- 通过驱动架构支持多种后端存储方式,包括LVM、NFS、Ceph和其他诸如EMC、IBM等商业存储产品和方案
组件
Cinder-api
- Cinder-api用来接受API请求,并将其路由到 Cinder-Volume执行
Cinder-Volume
- Cinder-Volume用来与块存储服务和 Cinder-Scheduler进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。 Cinder-Volume服务响应送到块存储服务的读写请求来维持状态,它也可以和多种存储提供者在驱动架构下进行交互。当用户请求一个存储资源时,由Cinder-API负责接受请求, Cinder- Scheduler负责调度资源,而真正执行存储任务的是Cinder-Volume。这样的工作机制使得存储架构非常容易扩展。当存储资源不足时,可以增加存储节点(运行Cinder-Volume)。当客户的请求量太大调度不过来时,可以增加调度(运行Cinder- Scheduler)
Cinder- Scheduler
- Cinder- Scheduler守护进程会选择最优存储节点来创建卷,其工作机制与Nova- Scheduler类似。当需要创建卷时,Cinder- Scheduler根据存储节点的资源使用情况选择一个最合适的节点来创建卷
Cinder- Backup守护进程
- Cinder- Backup服务提供任何种类备份卷到一个备份存储提供者。就像 Cinder-Volume服务,它与多种存储提供者在驱动架构下进行交互
消息队列
- 消息队列作用是在块存储的进程之间路由信息。 Cinder各个子服务通过消息队列实现进程间通信和相互协作
- 以创建卷为例, Cinder的工作流程如下
1.用户向 Cinder-API发送创建卷请求:“帮我创建一个卷“
2.Cinder-API对请求做一些必要处理后,向消息队列发送一条消息:“让Cinder- Scheduler创建一个卷”
3.Cinder- Scheduler从消息队列获取到消息,然后执行调度算法,从若干存储节点中选出节点A
4.Cinder- Scheduler向消息队列发送一条消息:“让存储节点A创建这个卷”
5.存储节点A的 Cinder- Volume从消息队列中获取到消息,然后通过卷提供者的驱动创建卷
7.Swift对象储存
- 这是对象存储的组件。对于大部分用户来说,swift不是必须的。你只有存储数量到一定级别,而且是非结构化数据才有这样的需求。很多人都问一个相同的问题:是否可以把虚拟机的存储放在swift上。简单回答:不行。你需要搞明白对象存储是干啥,擅长那些地方,那些是不行的。
- swift是Openstack所有组件了最成熟的,可以在线升级版本,各种版本可以混合在一起,也就是说,1.75版本的swift可以和1.48的在一个群集里.这个是很难得的.
8.Ceilometer
提供用量统计服务,通过它可以方便地实现 OpenStack 计费功能。
9.Heat
整合了 OpenStack 中的众多组件,类似 AWS 的 CloudFormation,让用户能够通过模板来管理资源
标签:存储,服务,Nova,理论知识,Cinder,OpenStack,解析,节点 来源: https://blog.csdn.net/weixin_49228721/article/details/110923863