首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OpenStack 基础介绍04——各组件综述之镜像、存储和认证

今天,我们介绍 OpenStack 组件中有关镜像、存储和认证部分的内容。

1 哪些内容需要我们理解?

为了提高针对性,我们将带着对如下 17 个疑问来对 OpenStack 组件进行学习。

(1)OpenStack 云实例生命期所需的各种动作都将由那个组件来进行处理和支撑?

(2)Nova 是否具有虚拟能力?

(3)那个组件负责管理整个云的计算资源、网络、授权及测度?

(4)Nova 有几部分组成?

(5)消息队列的什么机制使得 OpenStack 整个系统高效?

(6)Nova 的那个组件负责实例的生命周期?

(7)调度器负责与 nova-API 的关系是什么?

(8)Nova 调度器使用了哪几种基本调度算法?

(9)Glance 的作用是什么?

(10)镜像都存储在什么位置?

(11)Glance 构件构成是什么?

(12)那个组件内建冗余和失效备援管理,也能够处理归档和媒体流,特别是对大数据(千兆字节)和大容量(多对象数量)的测度非常高效?

(13)Swift 组件包含机部分?

(14)Swift 中物理存储对象的位置信息由谁来管理?

(15)哪个组件提供 OpenStack 组件提供认证和访问策略服务?原理是什么?

(16)keystone 除了用户名和密码授权,另外一种授权是什么方式?

(17)OpenStack 管理的 Web 接口是什么?

2 OpenStack 镜像服务器 — Glance

提供云虚拟机上的服务镜像(Image)功能,该模块可看成车间里的模具生产部门,该模具最基本的使用方式就是在为云虚拟机实例提供安装操作系统的模式,比如 RedHat Linux、Ubuntu、Windows 等。同时云服务使用者也可以在已经生成和个性化安装后的云虚拟机实例来生成自定义的镜像。这样以后就可以根据该自定义镜像直接生成所需的虚拟机实例。

OpenStack 镜像服务器是一套虚拟机镜像发现、注册、检索系统,我们可以将镜像存储到以下任意一种存储中(问题 9 和 10):

(1)本地文件系统(默认)

(2)OpenStack 对象存储

(3)S3(Amazon Simple Storage Service,即 Amazon S3,是一种对象存储,它具有简单的 Web 服务接口,可用于在 Web 上的任何位置存储和检索任意数量的数据。) 直接存储

(4)S3 对象存储(作为 S3 访问的中间渠道)

(5)HTTP(只读)

功能及特点:提供镜像相关服务

Glance组件(问题 11)包括:Glance 控制器、Glance 注册器

3 OpenStack 存储设施 — Swift

Swift 为 OpenStack 提供一种分布式、持续虚拟对象存储,它类似于 Amazon Web Service 的 S3 简单存储服务。Swift 具有跨节点百级对象的存储能力。Swift 内建冗余和失效备援管理,也能够处理归档和媒体流,特别是对大数据(千兆字节)和大容量(多对象数量)的测度非常高效(问题 12)。

功能及特点:海量对象存储、大文件/大对象存储、数据冗余管理、归档能力(处理大数据集)、为虚拟机和云应用提供数据容器、处理流媒体、对象安全存储、备份与归档、良好的可伸缩性。

Swift 组件(问题 13)包括:Swift 代理、Swift 对象、Swift 容器、Swift 账户、Swift RING。

(1)Swift 代理服务器

用户都是通过 Swift-API 与代理服务器进行交互,代理服务器正是接收外界请求的门卫,它检测合法的实体位置并路由它们的请求。此外,代理服务器也同时处理实体失效而转移时,故障切换的实体重复路由请求。

(2)Swift 对象服务器

对象服务器是一种二进制存储,它负责处理本地存储中的对象数据的存储、检索和删除。对象都是文件系统中存放的典型的二进制文件,具有扩展文件属性的元数据(xattr)。

注意:xattr 格式被 Linux 中的 ext3/4,XFS,Btrfs,JFS 和 ReiserFS 所支持,但是并没有有效测试证明在 XFS,JFS,ReiserFS,Reiser4 和 ZFS下也同样能运行良好。不过,XFS 被认为是当前最好的选择。

(3)Swift 容器服务器

容器服务器列出一个容器中的所有对象,默认对象列表将存储为 SQLite 文件(也可以修改为 MySQL,安装中就是以 MySQL 为例)。容器服务器也会统计容器中包含的对象数量及容器的存储空间耗费。

(4)Swift 账户服务器

账户服务器与容器服务器类似,将列出容器中的对象。

(5)Swift Ring(索引环)

Ring 容器记录着 Swift 中物理存储对象的位置信息,它是真实物理存储位置的实体名的虚拟映射,类似于查找及定位不同集群的实体真实物理位置的索引服务(问题 14)。这里所谓的实体指账户、容器、对象,它们都拥有属于自己的不同的 Rings。

4 OpenStack 块存储 Cinder

块存储是虚拟基础架构的一个基本需求。它是存储虚机以及虚机使用的数据的基础。在引入块存储之前,OpenStack 虚拟机使用所谓的临时性存储(ephemeral storage),这意味着虚机的内容在它关闭之后会丢失。

Cinder 提供了块存储设备的访问以及管理,对于 OpenStack 的主机,存储以块设备的形式出现,使用 iSCSI(Internet Small Computer System Interface,即互联网小型计算机系统接口,区块存储)、FC(Fibre Channel,即光纤通道,区块存储)、NFS(Network File System,即网络文件系统,是 FreeBSD 支持的文件存储系统中的一种,它允许网络中的计算机之间通过 TCP/IP 网络共享资源) 或其他一些专有协议作为后端的连接。

Cinder 的接口指定了一系列的独立的功能,包括创建卷、删除卷、挂载卷等基本功能。还有一些高级功能如扩展卷、快照、从 VM 镜像克隆或创建卷。

OpenStack 的实现往往会构建大规模的服务器配置,FC 协议不是最佳的选择。因为随着存储节点规模的增大,硬件以及规模的增大会导致开销和复杂度的急剧上升。

对 NFS 的支持是在 Grizzly(G 版) 版本中引入的。虚拟机卷在 NFS 存储中被当做独立的文件,这与 VMware 的 NFS 存储以及 Hyper-V 中的 VHDs 实现是类似的。

一些初创公司使用它们自己的协议来支持 Cinder,例如 Scality 和 Coraid。也有一些开源的存储解决方案使用 Ceph 和 GlusterFS 提供 Cinder 的支持,Ceph RADOS Block Device (RBD)和本地 GlusterFS 协议。

Ceph 实现很有趣因为它使用的代码已经集成到 Linux kernel,这使得配置和支持很容易实现。Ceph 也可以被用作 Glance VM 镜像的后端。

4.1 Swift 和 Cinder 的区别

显然,对象和块存储有非常不同的特性,这使得他们分别适用存储不同类型的数据。

Swift 被设计为高可扩展,最终一致的对象存储,所以它适合存储大卷的数据,例如images,media,以及文件。它与 Amazon S3 平台类似,适用相同的协议和命令来存储和检索数据。Swift“不适合”存储虚拟机因为它只读取和写入整个对象,并不提供一致性保证(最终一致性)。

而 Cinder,提供了块存储接口,交付了更传统的存储资源,这使得它在 OpenStack 环境中对于存储持久性虚拟机拷贝更加适合。我们可以在内置了开源项目如 Ceph 和 GlusterFS 的本地服务器上部署 Cinder。使用内置的工具,如 server logical volume managers 或 NFS servers,来为 OpenStack 集群提供存储服务也成为可能。

在需要更具弹性或扩展性的块存储解决方案的地方,可以使用外部存储阵列(external storage arrays )。有很多提供商提供了 Cinder 的驱动。使用了外部存储阵列来提供Cinder 有如下优势:性能和可用性由阵列管理,阵列可以通过自动精简配置,压缩以及数据冗余等特性来提共镜像的保存

注意:关于存储类型的选择

例如,电子邮件、网页服务器、多媒体影音串流服务、档案分享等就适用于 NAS 等文件存储架构。但是若是与数据库有关的应用,则要采用 SAN 架构,包括 FC 与 iSCSI。

5 OpenStack 认证服务(Keystone)

为 OpenStack 其它几个模块提供认证服务,整个 keystone 其实就是在数据库中建立用户(user)、角色(role)、Tenant、服务(service)、endpoint 以及其相互对应关系。

Tenant 在之前的版本中叫做 Project,Tenant 是一个独立的资源容器。每个 Tenant 都可以定义独立的 VLAN, volumes, instances, images, keys, users 等。服务指的是 OpenStack 所提供的那几种服务(network, volume, image, identify, compute, swift)。

endpoint 是指各服务的内部、外部及管理接口(REST API)。这个模块可以看做是云系统车间的安全部门。

Keystone 为所有的 OpenStack 组件提供认证和访问策略服务,它依赖自身 REST(基于Identity API)系统进行工作,主要对(但不限于)Swift、Glance、Nova 等进行认证与授权(问题 15)。事实上,授权通过对动作消息来源者请求的合法性进行鉴定。

Keystone 采用两种授权方式,一种基于用户名/密码,另一种基于令牌(Token)(问题 16)。除此之外,Keystone 提供以下三种服务:

(1)令牌服务:含有授权用户的授权信息

(2)目录服务:含有用户合法操作的可用服务列表

(3)策略服务:利用 Keystone 具体指定用户或群组某些访问权限

认证服务组件

(1)服务入口:如 Nova、Swift 和 Glance 一样每个 OpenStack 服务都拥有一个指定的端口和专属的 URL,我们称其为入口(endpoints)。

(2)区位:在某个数据中心,一个区位具体指定了一处物理位置。在典型的云架构中,如果不是所有的服务都访问分布式数据中心或服务器的话,则也称其为区位。

(3)用户:Keystone 授权使用者。代表一个个体,OpenStack 以用户的形式来授权服务给它们。用户拥有证书(credentials),且可能分配给一个或多个租户。经过验证后,会为每个单独的租户提供一个特定的令牌。

(4)服务:总体而言,任何通过 Keystone 进行连接或管理的组件都被称为服务。举个例子,我们可以称 Glance 为 Keystone 的服务。

(5)角色:为了维护安全限定,就云内特定用户可执行的操作而言,该用户关联的角色是非常重要的。一个角色是应用于某个租户的使用权限集合,以允许某个指定用户访问或使用特定操作。角色是使用权限的逻辑分组,它使得通用的权限可以简单地分组并绑定到与某个指定租户相关的用户。

(6)租间:租间指的是具有全部服务入口并配有特定成员角色的一个项目。一个租间映射到一个 Nova 的“project-id”,在对象存储中,一个租间可以有多个容器。根据不同的安装方式,一个租间可以代表一个客户、帐号、组织或项目。

今天就聊到这里。

图片授权基于:CC0协议

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180324A0LZH400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券