基准测试 Ceph 对象网关:深入了解安全、可扩展的对象存储性能。第三部分

Daniel Alexander Parkes, Anthony D'Atri

此前,在我们的性能博客系列文章的第二部分中

我们探讨了 IBM Storage Ceph RGW 如何随节点数量扩展,揭示了对于四、八和十二个节点,PUT 和 GET 操作的吞吐量几乎呈线性提升。我们还检查了资源使用趋势如何随着集群规模的变化而演变,确认了即使对于资源密集型擦除编码工作负载,扩展也能提高效率。如果您还没有查看,以下是第二部分的链接:第二部分

TLS 终止性能:S3 端点传输中的加密

为了评估 TLS 对 Ceph 对象网关 (RGW) S3 端点性能的影响,我们比较了三种常见的部署策略:端到端加密(RGW 上的 SSL)、在 cephadm 部署的入口服务(HAProxy)处终止 SSL,以及未加密的基线。HAproxy 服务与 Ceph 对象网关 (RGW) 服务共置。为每个节点配置一个虚拟 IP 地址 (VIP),基准测试客户端在所有配置的 VIP 上平衡请求。这些测试是在一个十二节点集群上使用 EC 8+3 进行的,对象工作负载为中等(4 MiB)和小型(64 KiB)。

中型/大型对象工作负载(4 MiB)

本节重点介绍 4 MiB 对象大小的结果,这代表了中到大型对象大小的典型案例。对于更大的对象,观察到的趋势通常会保持或进一步改善,因为每字节的开销较低,传输效率更高。

在 Ceph 对象网关 (RGW) 上使用 SSL 提供的吞吐量几乎与无 SSL 配置相同。对于 GET 请求,差异仅低 0.4%,而 PUT 吞吐量显示略有下降 4.2%。这种小的差异是可以预期的,因为集群受网络限制。尽管在这些测试期间,平均 Ceph 对象网关 (RGW) CPU 使用率对于 GET 增加了 40%,对于 PUT 增加了 71%,但每个 Ceph 主机的最大 CPU 利用率达到 ~83%,额外的负载对性能没有实质性影响,证实了在 RGW 上使用 SSL 是一种安全默认选项,对于大型对象工作负载几乎没有性能损失。

指标无 SSL(基线)RGW 上的 SSL与无 SSL 的 % 变化
GET 吞吐量(MiB/s)96,35195,965-0.4%
PUT 吞吐量(MiB/s)58,08655,651-4.2%
GET 延迟(ms)42420%
PUT 延迟(ms)6470+9.4%
RGW CPU(GET)3.19 核4.46 核+40%
RGW CPU(PUT)3.62 核6.19 核+71%

相反,在入口服务(HAProxy)处终止 SSL 显示出更明显的影响。GET 和 PUT 的吞吐量分别下降了约 27% 和 19%,并且延迟也相应增加。这种下降并非由于 SSL 开销本身,而是由于加密工作负载转移到 HAProxy 层。在高负载下,每个 HAProxy 守护进程消耗 3 到 6 个 vCPU(平均值),因为对象大小从 64 KiB 扩展到 1 GiB。Ceph 主机的峰值 CPU 利用率达到高达 90%,强调了适当的 HAProxy 调整和扩展以防止 CPU 成为瓶颈的必要性。

小型对象工作负载(64 KiB)

对于小型对象,吞吐量自然会从受网络限制变为受 CPU 限制,从而使加密开销更加明显。尽管如此,在 Ceph 对象网关 (RGW) 上启用 SSL 的影响仍然可控。GET IOPS 下降了 5.2%,PUT IOPS 下降了 10.7%,相对于无 SSL 基线。Ceph 对象网关 (RGW) CPU 使用率对于 GET 增加了 4.2%,对于 PUT 增加了 11.3%,表明加密工作已很好地分布在整个集群中。尽管小型对象工作负载对 CPU 使用率的敏感性较高,但端到端 SSL 仍然是实用的,在大多数情况下,性能下降控制在个位数百分比以内。

指标无 SSL(基线)RGW 上的 SSL与无 SSL 的 % 变化
GET IOPS137,226130,089-5.2%
PUT IOPS75,07467,013-10.7%
GET 延迟(ms)3.053.25+6.6%
PUT 延迟(ms)9.7510.00+2.5%
RGW CPU(GET)6.11 核6.37 核+4.2%
RGW CPU(PUT)2.20 核2.45 核+11.3%

再次,入口终止的 SSL 引入了更大的性能差距。与无 SSL 相比,GET IOPS 下降了约 18%,PUT IOPS 下降了 8%。这伴随着入口 CPU 消耗增加和请求延迟略微升高。虽然这些数字表明性能差异更大,但这种设置仍然适用于生产部署,其中安全策略规定 TLS 卸载,前提是入口扩展与并发性和吞吐量目标保持一致。

结论 – SSL/TLS S3 端点安全性

总而言之,Ceph 对象网关 (RGW) 上的 SSL/TLS 为大多数对象工作负载提供了安全性和性能之间的出色平衡。它为大型对象提供接近基线的吞吐量,并为小型对象提供适度的性能下降,同时保持端到端加密。

集群服务传输中加密:大规模保护内部流量

随着安全标准不断发展,保护 Ceph 守护进程之间的内部通信对于生产部署(尤其是在受监管的环境中)正成为一种最佳实践。在 Ceph 中,此内部加密通过 Messenger v2 安全模式启用,也称为集群网络加密或传输中的内部加密。与 TLS 不同,TLS 保护外部客户端与 S3 Ceph 对象网关 (RGW) 端点之间的流量,而 Messenger v2 确保所有守护进程间流量(包括 RGW 到 OSD、OSD 到监视器以及管理器通信)都经过加密和身份验证。

本节检查启用 Messenger v2 安全模式对 Ceph 对象网关 (RGW) SSL 启用基线性能的影响。两种配置——启用和禁用安全模式——均在客户端加密方面使用 RGW 上的 SSL。这些测试是在一个十二节点集群上使用 8+3 擦除编码和中到大型对象大小(1 MiB 到 256 MiB)进行的。

高级概述:更强的安全性带来的最小开销

我们评估了启用和禁用 Messenger v2 安全性的 GET 和 PUT 操作的吞吐量和延迟。如以下图表和表格所示,对于读写操作,性能差异可以忽略不计,这表明传输中的内部加密与高吞吐量对象存储用例兼容。

接下来是一个表格,提供了使用我们参考的 4 MiB 对象大小测量的百分比变化的完整比较。

指标无加密安全 Messenger v2% 变化
GET 吞吐量95,965 MiB/s95,671 MiB/s-0.3%
PUT 吞吐量55,651 MiB/s52,994 MiB/s-4.8%
GET 延迟42 ms42 ms0%
PUT 延迟70 ms71 ms+1.4%
RGW CPU(GET)4.46 核4.38 核-1.8%
RGW CPU(PUT)6.19 核6.55 核+5.8%
RGW 内存(GET)313 MiB336 MiB+7.3%
RGW 内存(PUT)308 MiB329 MiB+6.8%

分析

  • 吞吐量影响:在所有测试的对象大小(1 MiB 到 256 MiB)中,启用 Messenger v2 安全模式后,GET 吞吐量基本保持不变。PUT 吞吐量显示出适度的下降,最明显的是 1 MiB 对象(−3.1%),并且在较大的尺寸下趋于平稳(例如,在 64 MiB 和 256 MiB 时为 −0.4%)。这种趋势与预期一致,因为较小的对象会放大协调和加密开销,而较大的对象更受吞吐量限制,并且可以摊销成本。

  • 延迟影响:GET 和 PUT 延迟在所有情况下均保持稳定。观察到的变化很小(通常为 ±1 毫秒),证实启用 Messenger v2 安全模式不会引入有意义的排队或处理延迟,即使在高并发和不同对象大小下也是如此。

  • 资源利用率:RGW 级别的 CPU 使用率对于 PUT 操作略有增加(~2–6%,具体取决于对象大小),而 GET CPU 使用率基本保持不变。内存消耗显示出类似的适度变化(在 ~5–7% 以内),没有出现资源耗尽或饱和的迹象。

结论 – Messenger v2 用于内部加密

启用 Messenger v2 安全模式以可忽略的性能影响为内部 Ceph 守护进程通信添加了密码保护。我们的测试显示,在所有对象大小上,吞吐量和延迟均保持稳定,RGW 内存和 CPU 使用率仅略有增加,主要针对 PUT 操作。Messenger v2 的设计确保了强大的安全保证,且权衡最小,使其与高吞吐量、企业级对象存储部署高度兼容。

最终建议 – 安全设计:TLS + Messenger v2

对于需要对客户端和集群服务之间的流量进行强数据保护的环境,S3 端点上的 TLS 和内部加密的 Messenger v2 的组合提供了强大的安全性,且对性能的影响最小。

无论您是保护 AI 管道、分析平台还是多租户对象存储服务,Ceph RGW 都证明了可以自信地部署全栈加密,而不会影响吞吐量、延迟或可扩展性。

静态加密(SSE-S3):上下文和 4 MiB 结果

为什么选择 SSE-S3?

静态加密可确保对象数据在持久化之前被加密,并且仅在访问时才被解密。在 Ceph RGW 中,SSE-S3 使用信封加密:每个对象的密钥加密有效负载;该数据密钥本身由 KMS 存储和保护:我们使用 Vault Transit 通过 Vault 代理进行令牌管理和身份验证卸载期间的基准测试。这种设计提供了强大的安全保证和集中式密钥控制。

权衡是可预测的:每个对象 PUT/GET 都会增加加密工作和(对于 KMS 保护的密钥)密钥解包步骤。对象越小,固定的每对象成本就越占主导地位。对于较小的对象大小,我们观察到预期的模式:对象越小,来自每对象密钥操作和加密的相对开销越大

我们测量的内容(12 个节点,EC 8+3,512 个客户端线程,4 MiB 对象)

配置

  • 基线:RGW + TLS + msgr_v2(无 SSE)
  • RGW 上的 SSE:基线 + SSE-S3(TLS 在 RGW 处终止)
  • SSE @ 入口:SSE-S3,TLS 卸载在 HAProxy 处(msgr_v2)

SSE 与基线性能的吞吐量和延迟比较

指标基线(无 SSE)RGW 上的 SSE与基线的 ΔSSE @ 入口与基线的 Δ
PUT 吞吐量(MiB/s)44,12139,643-10.1%33,922-23.1%
PUT 延迟(ms)4450+13.6%57+29.5%
GET 吞吐量(MiB/s)85,95146,815-45.5%63,574-26.0%
GET 延迟(ms)2325+8.7%32+39.1%

如何阅读此内容:

  • 在 4 MiB 时,RGW 上的 SSE 保持约 90% 的 PUT 吞吐量,并具有适度的延迟增加——对于大型对象、写入密集型管道来说是个好消息。
  • GET 路径显示出更大的敏感性,因为每次读取都需要解包对象的数据密钥(KMS 往返 + 解密),这成为更高并发时的限制因素。将 TLS 卸载到入口可以释放 RGW 上的 CPU 并恢复部分 GET 差距,但 KMS/密钥解包成本仍然占主导地位。

结论 – 静态加密(SSE-S3)

SSE-S3 提供强大的静态加密,且具有可预测的开销:它对于较大的对象(PUT 保持接近基线)是高效的,并且对于小型、繁忙的工作负载,KMS 敏感,您可以通过对象大小、KMS 扩展以及 RGW/入口容量规划来缓解。

接下来是什么

我们的未来基准测试目标

  • 探索 Ceph 9.x 的快速 EC 改进,以提高小型对象 EC 性能。
  • 使用 200/400 GbE 重新运行大型对象测试,以突破当前的 NIC 天花板。
  • 研究在终止 SSL 时,Ingress 服务可能的更好的默认可调参数

结论

在这一系列三篇文章中,我们展示了启用安全性的可预测的扩展性:一个 12 节点集群提供约 111 GiB/s 的 GET 和 66 GiB/s 的 PUT,从 4→8→12 节点获得近乎线性的收益,延迟更低或保持稳定,并在 64 KB 时达到高达 ~391K/86K IOPS。在 RGW 上的 TLS 性能接近基线,Messenger v2 添加的开销可以忽略不计,而 SSE-S3 显示出大小相关的、可调的成本——这些强有力的结果证明了 IBM Storage Ceph Object 具备在规模上处理高吞吐量和低延迟工作负载的准备就绪。

作者感谢 IBM 对社区的支持,为我们提供时间来创建这些帖子。