在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
问题导读 Swift 架构包含三个组件:服务器、流程和环。
服务器 Swift 架构是分布式的,可防止所有单点故障和进行水平扩展。它包括以下四种服务器:
代理服务器为 OpenStack Object Storage 架构的其余部分提供一个统一的界面。它接收创建容器、上传文件或修改元数据的请求,还可以提供容器清单或展示存储的文件。当收到请求时,代理服务器会确定帐户、容器或对象在环中的位置,并将请求转发至相关的服务器。
对象服务器是一种简单的服务器,可以上传、修改和检索存储在它所管理的设备上的对象(通常为文件)。对象被存储在本地文件系统中,使用了扩展的属性保存所有的元数据。路径基于对象名称的散列和时间戳。
容器服务器实质上是对象的一个目录。它处理特定容器的对象的分配,并根据请求来提供容器清单。可以跨集群复制该清单,以提供冗余。
帐户服务器通过使用对象存储服务来管理帐户。它的操作类似于在内部提供了清单的容器服务器,在这种情况下,将会枚举分配到给定帐户的容器。 流程 有几种预定的内部管理流程可以管理数据存储,包括复制服务、审计程序(auditor)和更新程序(updater)。
复制服务是至关重要的流程:确保整个集群的一致性和可用性。由于对象存储的一个主要吸引点是其分布式存储,所以 OpenStack 必须在瞬态错误条件下确保获得一致的状态,例如断电或组件故障。复制服务通过定期对比本地数据与远程副本并确保所有副本都包含最新版本来做到这一点。
为了最大程度地减少进行对比所需的网络流量的数量,该服务创建了每个分区分段的一个散列(hash),并比较这些列表。容器和帐户复制也可以使用散列,但通过高水位标记(high-water mark)对这些散列进行了补充。实际的更新被推送,通常使用 rsync 来复制对象、容器和帐户。
在删除对象、容器或帐户时,复制器(replicator)还会执行垃圾收集来实施一致的数据删除。在删除时,系统会使用一个墓碑图片来标记最新版本,这是一个告诉复制器可以从所有重复的节点中删除对象、容器或帐户的信号。
即使是最好的复制设计,也只在拥有实现该复制的组件时有效,不过,无论是硬件故障还是软件故障,抑或只是因为产品能力不足,生产环境都必须能够重现这些故障。在 Swift 中,该操作是由更新程序和审计程序来完成的。
更新程序负责在系统面临故障时确保系统的完整性。当复制服务遇到一个问题,并且无法更新容器或帐户时,就会出现一段时间的不一致,在此其间,对象虽然存在于存储中,但并未列出在所有容器或帐户服务器上。在这种情况下,系统会在本地文件系统上对更新进行排队,并有一个更新程序会定期重试更新。
审计程序对这种不一致提供额外级别的保护。它们定期扫描本地存储库,验证帐户、容器和对象的完整性。在确认任何损坏时,审计程序会隔离该元素,并使用来自另一个复制物的副本替换它。如果发现了无法协调的不一致性(例如,对象不属于任何容器),审计程序就会将该错误记录在一个日志文件中。
环 用户和其他 OpenStack 项目会根据逻辑名称来引用存储实体,但最终,所有请求,无论是用于读取还是用于写入,都必须映射到某个物理位置。为了完成这一操作,代理服务器和后台流程(包括复制服务)都必须能够将逻辑名称映射到物理位置。这种映射就称为一个环(ring)。帐户、容器和对象都配有单独的环。环根据设备、分区、副本和专区来描述这一映射。
在此上下文中,术语分区 指的是环中所存储内容的逻辑子集。建议为每个参与设备分配 100 个分区。分区均匀地分布在分配给 OpenStack Object Storage 的所有设备上。如果集群使用了不同规格的驱动,那么有可能会分配权重,以便平衡各个设备上的分区的分布。
默认情况下,每个分区可被复制三次。有可能会使用一个较大的数字来优化可用性,但这显然会增加存储消耗。环还会指定在故障场景中使用哪些设备来接管工作负载,以及在向集群添加设备或从中删除设备时如何重新分配分区。
环映射的最后一个元素是专区,用于启用数据亲和性和反亲和性,一个专区可以表示一个存储设备、一个物理服务器或者一个位置,例如机架、通道或数据中心,专区是用户可用来满足其需求的一个逻辑概念,但通常反映的是物理元素,例如位置、电源和网络连接。
Cinder 架构 Cinder 比 Swift 简单得多,因为它不提供自动对象分布和复制。图 1 显示了 Cinder 架构。
图 1. Cinder architecture 与其他 OpenStack 项目类似,Cinder 的功能通过 API 暴露给仪表板和命令行。它能够通过具有具象状态传输 (Representational State Transfer, REST) 的 HTTP API 来访问对象存储,并使用一个名为 Auth Manager 的 Python 类将身份验证纳入 OpenStack Keystone。
API 解析所有传入的请求并将它们转发给消息队列,调度程序和卷服务器在该队列中执行实际的工作。在创建新的卷时,调度程序将会决定哪台主机应对该卷负责。默认情况下,它会选择拥有最多可用空间的节点。
卷管理程序管理着可动态附加的块存储设备,这些设备也被称为卷。它们可用作虚拟实例的启动设备,或作为辅助存储进行添加。Cinder 还为快照(卷的只读副本)提供了一种设备。然后可以使用这些快照来创建新的卷,以供读写使用。
卷通常通过 iSCSI 附加到计算节点。块存储也需要某种形式的后端存储,在默认情况下,该后端存储是本地卷组上的逻辑卷管理,但可以通过驱动程序将它扩展到外部存储阵列或设备。
设置 实际的安装指令在发行版和 OpenStack 版本之间极为不同。通常,它们可作为发行版的一部分。但是,必须完成相同的基本任务。本节将会介绍其中涉及的概念。
系统要求 OpenStack 依赖于一种 64 位 x86 架构;另外,它是为商用硬件而设计的,所以具有极低的系统要求。它可以在配有包含 8GB RAM 的单个系统上运行整套 OpenStack 项目。但是,对于大型的工作负载,它对于使用专用系统来实现存储至关重要。因为我们的重点在商用设备上,所以不需要独立磁盘冗余阵列 (redundant array of independent disks, RAID) 功能,但使用至少两个四核 CPU、8-12GB 的 RAM 和 1GB 的网络适配器是一种明智之举。显然,硬盘或固态磁盘的大小取决于要存储的数据量和希望的冗余级别。
安装 安装指令取决于发行版,更具体地讲,取决于您所选择的包管理实用程序。在许多情况下,必须声明存储库。所以,举例而言,如果您使用的是 Zypper,那么您要用 zypper ar 向 libzypp 公开:
然后,安装所需的 Swift 和/或 Cinder 包。包管理实用程序应自动安装所有依赖关系。整个安装程序取决于您所期望的配置和 OpenStack 的准确版本。请务必查看安装指南中的权威说明,为了演示之目的,下面提供了适用于 Debian(例如 Ubuntu)、Red Hat(例如,Red Hat Enterprise Linux®、CentOS、Fedora)和 openSUSE 的一些主要命令。
Debian:在所有主机上安装基础 Swift 包:
Cinder 包包含 API、调度程序和卷管理程序:
openSUSE:使用以下命令:
配置 配置 OpenStack Object Storage 安装涉及到为四个包的每一个包量身定制配置文件:
配置文件安装在 /etc/swift/ 中。默认的一组选项在标准安装中运作良好,但在有特殊需求时,有必要编辑该配置。
使用场景 如欲了解如何使用 OpenStack 存储,可以想象这样一个场景:在该场景中,有一项服务使用一个文件系统和新代码运行了遗留软件,您想在该文件系统和新代码中使用分布式对象存储。适用于此项目的环境应该包括 Swift 和 Cinder。
首先来看一看 Cinder。以具有 Member 角色的用户身份登录到 OpenStack Dashboard。 在导航面板中的 Manage Computer 下,单击 Volumes > Create Volume。 图 2. 创建一个卷 卷应出现在项目的列表中。 图 3. 项目中的卷 编辑附件,以便将卷连接到其中一个计算实例。 图 4. 管理卷附件 OpenStack 创建一个惟一的 iSCSI 合格名称,并将其显示给目前具有活动 iSCSI 会话的计算节点。如果实例是逻辑存储(通常是一个 /dev/sdX 磁盘),那么可以使用 Cinder 卷。 要想对您的项目使用 Swift,首先必须创建一个容器。
作为具有 Member 角色的用户身份登录到 OpenStack Dashboard,在导航面板的 Object Store 下,单击 Containers > Create Container。图 5. 创建容器 这是一个简单的操作,根本不会涉及提供任何数据。它只是一个名称而已。
当拥有容器之后,通常由应用程序使用对象填充它,并根据需要使用一个编程接口来检索这些对象。图 6. 已填充的容器不过,您还可以从仪表板上传对象。在 Object Store 下,单击 Containers > Upload Object 并提供一个包含存储内容的文件。图 7. 上传对象 您还可以使用界面来下载、复制或删除对象。
进一步补充:Swift——提供对象存储 (Object Storage),在概念上类似于Amazon S3服务,不过swift具有很强的扩展性、冗余和持久性,也兼容S3 API Glance——提供虚机镜像(Image)存储和管理,包括了很多与Amazon AMI catalog相似的功能。(Glance的后台数据从最初的实践来 |
请发表评论