配置传输加密

本主题介绍如何基于 msgr2 为 ACP 分布式存储启用或禁用传输加密。

概述

Ceph msgr2 是 Ceph messenger 协议的第二代。它支持两种连接模式:

  • crc:对等端身份验证并校验数据完整性,但不加密负载数据。
  • secure:对传输流量进行加密,并提供加密完整性保护。

在 ACP 分布式存储中,传输加密由 CephCluster.spec.network.connections.encryption.enabled 控制。

限制与前提条件

启用此功能前,请注意以下限制:

  • ACP 版本

    • v4.3.0 及以后版本。
  • 操作系统和内核(ceph 守护进程和客户端节点)

    • 内核版本 5.11 及以后。
    • Ubuntu 22.04 及以后。
WARNING

传输加密会增加 CPU 开销,可能降低吞吐量或增加延迟,尤其是在繁忙的存储节点或低频 CPU 上。请先在预发布环境评估影响。

为新集群启用传输加密

如果存储集群尚未创建,请在创建前在 CephCluster 清单中添加以下字段:

spec:
  network:
    connections:
      encryption:
        enabled: true

集群创建完成后,验证:

  • CephFS PVC 仍能成功挂载
  • 所有节点上的 RBD 和 CephFS 工作负载使用支持的内核版本

部署后启用传输加密

如果集群已运行,仅修改加密开关是风险最低的方式。

步骤 1. 确认节点内核版本

在所有挂载 Ceph 卷的 Kubernetes 节点上运行以下命令,确认内核版本满足前提条件:

uname -r

如果部分工作节点不满足要求,升级这些节点之前请勿在生产集群启用传输加密。

步骤 2. 在 CephCluster 中启用加密

kubectl patch cephcluster ceph-cluster -n rook-ceph --type merge -p '
spec:
  network:
    connections:
      encryption:
        enabled: true
'

步骤 3. 等待配置生效

配置更新后:

  • 检查相关 Pod 是否正常重启
  • 重新创建一个挂载 CephFS 或 RBD PVC 的测试 Pod
  • 确认 I/O 正常工作

禁用传输加密

在现有集群中禁用加密

仅禁用传输加密,同时保持 msgr2 可用:

kubectl patch cephcluster ceph-cluster -n rook-ceph --type merge -p '
spec:
  network:
    connections:
      encryption:
        enabled: false
'

验证

启用功能后,从 Kubernetes 和 Ceph 两方面验证集群状态。

检查 CephCluster 设置

kubectl get cephcluster ceph-cluster -n rook-ceph -o yaml

确认输出包含:

spec:
  network:
    connections:
      encryption:
        enabled: true

检查客户端兼容性

启用传输加密后:

  • 使用 msgr2 secure 的客户端应能正常连接
  • 配置为非加密模式(如 legacycrc)的客户端将无法连接

检查工作负载挂载

创建或重启一个挂载以下 PVC 的测试工作负载:

  • CephFS PVC
  • RBD PVC

然后验证:

  • Pod 成功启动
  • 文件系统可读写
  • CSI 或工作负载日志中无挂载相关错误

故障排查建议

启用加密导致挂载失败或服务中断时,优先检查:

  1. 节点内核版本不满足要求。
  2. 部分节点或外部客户端不支持 msgr2 secure,或仍配置为 ms_mode=legacyms_mode=crc
  3. 网络策略、防火墙或安全组未放通端口 3300
  4. 启用加密后 CPU 资源不足。

若变更影响生产工作负载,先禁用加密,再排查兼容性和性能瓶颈。

性能影响

ACP 无法给出 msgr2 secure 开销的固定百分比,实际影响取决于 CPU 型号、是否支持 AES 加速、网络带宽、I/O 大小,以及工作负载是 CPU 绑定还是网络绑定。

实际情况:

  • 延迟通常略有增加,且在小 I/O 或延迟敏感工作负载上更明显
  • 客户端和 Ceph 守护进程的 CPU 使用率通常都会增加,因为流量必须加密并保证完整性
  • 对高吞吐量工作负载、较慢 CPU 或无强 AES 加速环境影响更明显

作为运维估算,使用带 AES-NI 的现代 x86 CPU 时,合理的初始预期为:

  • 平均延迟增加约 5%15%
  • 处理重 I/O 的存储和客户端节点 CPU 使用率增加约 10%30%

以上数值为工程估算,非产品保证。生产环境启用加密前,请在预发布环境对代表性工作负载进行基准测试,至少对比以下指标:

  • 平均和 P99 读写延迟
  • 客户端节点 CPU 使用率
  • OSD 节点 CPU 使用率
  • 吞吐量和 IOPS