This work is licensed under a Creative Commons Attribution 3.0
Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode

PACO 单进程部署

自从 DiskFile API 发布以来,已经出现了许多不同的实现,它们提供了将 Swift 对象存储在第三方存储系统中的能力。通常,这些系统提供对象的持久性和可用性(例如,GlusterFS、GPFS),因此对象环只需要使用一个副本创建。

这种配置的典型部署方式是“PACO”部署,其中代理、账户、容器和对象服务都在同一节点上运行。对象环的构建方式是代理服务器始终将请求发送到本地对象服务器。对象服务器(及其第三方 DiskFile)然后负责将数据写入底层存储系统,该系统将根据其自身的策略分发数据。

问题描述

在典型的 Swift 部署中,代理节点将数据发送到运行在不同节点上的对象服务器,对象服务器将数据直接写入磁盘。在第三方存储系统的情况下,对象服务器通常会建立另一个网络连接将对象发送到该存储系统,从而为数据路径增加一些延迟。

即使代理和对象服务器在同一节点上,由于通过本地网络进行 RPC 通信,仍然会引入延迟。

提议的变更

对于单副本 - PACO 部署的场景,代理服务器将直接将数据发送到第三方存储系统。为了实现这一点,我们希望直接从代理进程调用对象 WSGI 应用程序,而不是建立额外的网络连接。

此提议的解决方案侧重于减少代理到对象服务器的延迟。代理到账户和/或容器的通信将保持不变,稍后通过补丁解决。

负责人

主要负责人
thiago@redhat.com

工作项

已提交一个 WIP 补丁:https://review.openstack.org/#/c/159285/。最近对代理服务器中对象控制器所做的改进,提供了非常好的代码分离能力。

待办事项和需要进一步调查的地方

  • 如何在代理进程中加载对象 WSGI 应用程序实例?
  • 如何添加对多种存储策略的支持?

原型

要测试补丁 159285,请按照以下步骤操作

  1. 创建新的单副本存储系统。更新 swift.conf 并创建新的环。在环创建期间提供的端口将不会被用于任何目的。
  2. 创建一个对象服务器配置文件/etc/swift/single-process.conf. 此配置文件可以像任何其他对象服务器配置文件一样,只需确保它指定对象服务器应写入的正确设备即可。例如,对于 Swift-on-File 对象服务器,设备是共享文件系统的挂载点(例如,Gluster、GPFS)。
  3. 启动代理。

目录

上一主题

Swift 请求标记,用于详细的日志记录/跟踪

下一主题

Swift 符号链接

项目源代码

此页面