注意

本文档适用于 Ceph 开发版本。

云同步模块

Mimic 版本中的新功能。

该模块将区域数据同步到远程云服务。同步是单向的;数据不会从远程区域同步回来。该模块的目标是启用将数据同步到多个云提供商。目前支持的云提供商是与 AWS(S3)兼容的那些。

需要配置远程云对象存储服务的用户凭证。由于许多云服务对每个用户可以创建的存储桶数量施加限制,因此源对象和存储桶的映射是可配置的。可以将不同的目标配置到不同的存储桶和存储桶前缀。请注意,源 ACL 不会保留。可以将特定源用户的权限映射到特定目标用户。

由于 API 限制,没有办法保留原始对象的修改时间和 ETag。云同步模块将这些作为目标对象的元数据属性进行存储。

云同步层类型配置

简单配置

{
  "connection": {
    "access_key": <access>,
    "secret": <secret>,
    "endpoint": <endpoint>,
    "host_style": <path | virtual>,
  },
  "acls": [ { "type": <id | email | uri>,
              "source_id": <source_id>,
              "dest_id": <dest_id> } ... ],
  "target_path": <target_path>,
}

非简单配置

{
  "default": {
    "connection": {
      "access_key": <access>,
      "secret": <secret>,
      "endpoint": <endpoint>,
      "host_style" <path | virtual>,
    },
    "acls": [
      {
        "type" : <id | email | uri>,    # optional, default is id
        "source_id": <id>,
        "dest_id": <id>
      } ... ],
    "target_path": <path> # optional
  },
  "connections": [
      {
        "connection_id": <id>,
        "access_key": <access>,
        "secret": <secret>,
        "endpoint": <endpoint>,
        "host_style" <path | virtual>,  # optional
      } ... ],
  "acl_profiles": [
      {
        "acls_id": <id>, # acl mappings
        "acls": [ {
            "type": <id | email | uri>,
            "source_id": <id>,
            "dest_id": <id>
          } ... ],
      }
  ],
  "profiles": [
      {
        "source_bucket": <source>,
        "connection_id": <connection_id>,
        "acls_id": <mappings_id>,
        "target_path": <dest>,          # optional
      } ... ],
}

Note

简单配置可以与非简单配置一致。

  • connection(容器)

    表示与远程云服务的连接。包含connection_id, access_key, secret, endpoint, and host_style.

  • access_key(字符串)

    将用于特定连接的远程云访问密钥。

  • secret(字符串)

    远程云服务的密钥。

  • endpoint(字符串)

    远程云服务端点的 URL。

  • host_style(路径 | 虚拟)

    访问远程云端点时要使用的宿主机样式类型(默认:path).

  • acls(数组)

    包含一个列表的acl_mappings.

  • acl_mapping(容器)

    每个acl_mapping结构包含type, source_id, and dest_id。这些将定义对每个对象执行的 ACL 变更。ACL 变更允许将源用户 ID 转换为目标 ID。

  • type(ID | 邮箱 | URI)

    ACL 类型:id定义用户 ID,email通过邮箱定义用户,并且uri通过uri(组) 定义用户。

  • source_id(字符串)

    源区域中的用户 ID。

  • dest_id(字符串)

    目标中的用户 ID。

  • target_path(字符串)

    定义目标路径的字符串。目标路径指定源对象名要追加的前缀。可配置的目标路径可以包含以下任何变量:

    • sid: 表示同步实例 ID 的唯一字符串

    • zonegroup: 区域组名

    • zonegroup_id: 区域组 ID

    • zone: 区域名

    • zone_id: 区域 ID

    • bucket: 源存储桶名

    • owner: 源存储桶所有者 ID

    例如:target_path = rgwx-${zone}-${sid}/${owner}/${bucket}

  • acl_profiles(数组)

    一个acl_profile.

  • acl_profile(容器)

    每个配置文件包含acls_id(字符串) 表示配置文件,并且acls包含一个acl_mappings.

  • profiles(数组)

    一个配置文件列表。每个配置文件包含以下内容:

    • source_bucket: 要么是存储桶名,要么是存储桶前缀(如果以*结尾)定义此配置文件的源存储桶

    • target_path: 如上所述

    • connection_id: 将用于此配置文件的连接 ID

    • acls_id: 将用于此配置文件的 ACL 配置文件 ID

S3 特定可配置项

目前云同步仅适用于与 AWS S3 兼容的后端。有几种可配置项可用于调整访问这些云服务时的行为:

{
  "multipart_sync_threshold": {object_size},
  "multipart_min_part_size": {part_size}
}
  • multipart_sync_threshold(整数)

    大小等于或大于此值的对象将使用多部分上传同步到云端。

  • multipart_min_part_size(整数)

    使用多部分上传同步对象时使用的最小部件大小。

如何配置

请参阅多站点请参阅如何进行多站点配置说明。云同步模块需要一个新区域的创建。区域层类型需要定义为cloud:

radosgw-admin zone create --rgw-zonegroup={zone-group-name} \
                            --rgw-zone={zone-name} \
                            --endpoints={http://fqdn}[,{http://fqdn}] \
                            --tier-type=cloud

然后可以使用以下命令进行层配置

radosgw-admin zone modify --rgw-zonegroup={zone-group-name} \
                            --rgw-zone={zone-name} \
                            --tier-config={key}={val}[,{key}={val}]

The key在配置中指定需要更新的配置变量,并且val指定其新值。嵌套值可以使用点访问。例如:

radosgw-admin zone modify --rgw-zonegroup={zone-group-name} \
                            --rgw-zone={zone-name} \
                            --tier-config=connection.access_key={key},connection.secret={secret}

配置数组条目可以通过指定要引用的特定条目并用方括号括起来来访问,并且可以通过使用[]添加新的数组条目。索引值-1引用数组中的最后一个条目。目前无法在同一命令中创建新条目并再次引用它。{prefix}:

radosgw-admin zone modify --rgw-zonegroup={zone-group-name} \
                            --rgw-zone={zone-name} \
                            --tier-config=profiles[].source_bucket={prefix}'*'
radosgw-admin zone modify --rgw-zonegroup={zone-group-name} \
                            --rgw-zone={zone-name} \
                            --tier-config=profiles[-1].connection_id={conn_id},profiles[-1].acls_id={acls_id}

通过使用可以删除条目。--tier-config-rm={key}.

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.