如何将 S3 存储与 ClickHouse 一起使用

本指南说明如何配置 Alauda Container Platform Log Storage for ClickHouse 使用 S3 存储日志数据。

ClickHouse 支持两种基于 S3 的使用模式:

  • 仅 S3:ClickHouse 将日志表数据存储在 S3 中。
  • 冷热分离:ClickHouse 将活动数据保留在本地,并根据配置的保留规则将冷数据转移到 S3 中。

开始之前

在目标存储集群的 cpaas-system 命名空间中准备一个 S3 Secret。

该 Secret 必须包含标签 cpaas.io/credentials: S3,因为插件安装页面会通过此标签筛选可选的 S3 凭据。

示例:

apiVersion: v1
kind: Secret
metadata:
  name: clickhouse-s3-config
  namespace: cpaas-system
  labels:
    cpaas.io/credentials: S3
type: Opaque
stringData:
  ACCESS_KEY_ID: <access-key-id>
  SECRET_ACCESS_KEY: <secret-access-key>
  ENDPOINT: https://<s3-endpoint>
  REGION: <region>
  BUCKET: <bucket-name>

Secret 字段说明:

字段说明
ACCESS_KEY_IDS3 服务的访问密钥。
SECRET_ACCESS_KEYS3 服务的密钥。
ENDPOINTS3 服务端点。
REGIONS3 服务的地域。仅在后端不要求时留空。
BUCKETClickHouse 使用的存储桶。

如果 S3 端点使用 https,请为 Alauda Container Platform Log Storage for ClickHouse 额外准备一个 CA 证书 Secret。

该 Secret 必须使用固定名称 clickhouse-ca-certificates,并且必须创建在 cpaas-system 命名空间中。不要更改 Secret 名称、命名空间或键名。仅替换 ca-certificates.crt 中的证书内容。

示例:

apiVersion: v1
kind: Secret
metadata:
  name: clickhouse-ca-certificates
  namespace: cpaas-system
type: Opaque
stringData:
  ca-certificates.crt: |
    -----BEGIN CERTIFICATE-----
    <ca-certificate-content>
    -----END CERTIFICATE-----

HTTPS S3 CA Secret 注意事项:

字段要求
metadata.name必须为 clickhouse-ca-certificates
metadata.namespace必须为 cpaas-system
stringData.ca-certificates.crt将此字段替换为 HTTPS S3 端点所需的 CA 证书链。

使用 S3 存储日志数据

在安装 Alauda Container Platform Log Storage for ClickHouse 时,将 Storage Policy 设置为 Separation of storage and compute

如果要使用仅 S3 模式,请保持 Cold and Hot Separate 关闭。

在此模式下:

  • ClickHouse 元数据保留在本地存储或所选的 StorageClass 中。
  • ClickHouse 日志表数据存储在 S3 中。
WARNING

当 ClickHouse 日志数据使用 S3 时,元数据存储性能仍然很重要。

  • 尽可能优先为 ClickHouse 元数据存储选择 LocalVolume
  • 如果无法使用 LocalVolume,且元数据必须使用 StorageClass,请选择高性能存储后端。
  • 作为工程建议,请规划持续高于 200 MiB/s 的读写吞吐量,以降低元数据相关性能瓶颈的风险。

安装期间配置以下字段:

字段说明
Storage Policy选择 Separation of storage and compute
Metadata Storage Type为 ClickHouse 元数据选择 LocalVolumeStorageClass
Metadata Storage Path选择 LocalVolume 时必填。默认路径为 /cpaas/data/clickhouse
Metadata StorageClass选择 StorageClass 时必填。
Metadata Capacity推荐值为 20 Gi
S3 for Log Data选择在 cpaas-system 中准备的 S3 Secret。
Cold and Hot Separate在仅 S3 模式下保持此开关关闭。

启用冷热分离

如果希望 ClickHouse 将活动数据保留在本地,并将冷数据转移到 S3,请在安装期间启用 Cold and Hot Separate

启用该开关后,请配置:

字段说明
S3 for Log Cold Data选择用于冷数据存储的 S3 Secret。
Log Platform / Log Workload / Log System / Log Kubernetes / Kubernetes Event / Audit配置每种日志类型在转移到冷存储之前的冷数据保留时长。

行为说明:

  • 活动数据保留在当前 ClickHouse 存储中。
  • 当配置的保留时长到期后,对应数据会转移到冷 S3 存储。
  • 值为 0 表示该日志类型不会转移到冷存储。

限制和说明

  • 当前插件安装流程支持为日志数据存储配置一个 S3 目标,以及为冷存储配置一个 S3 目标。
  • S3 凭据必须存储在 Kubernetes Secrets 中。不要在安装记录或截图中以明文形式暴露访问密钥。
  • 如果 S3 端点使用 https,还必须在 cpaas-system 中创建 clickhouse-ca-certificates Secret。仅应自定义 ca-certificates.crt 中的证书内容。
  • 存储策略类型和 Cold and Hot Separate 开关在安装后不能更改。
  • 冷数据保留设置可以在安装后调整。
  • 此功能不同于 How to Archive Logs to Third-Party Storage 中描述的日志导出或归档方案。归档指南描述的是将日志从平台导出,而本指南描述的是 ClickHouse 的原生存储行为。
  • 在灾难恢复场景中,不要将主备 ClickHouse 部署配置为使用同一个 S3 存储桶。

相关主题