联盟网关的配置

New in version 0.67: Dumpling

Ceph 从 0.67 Dumpling 起支持加入 Ceph 对象网关联盟,可加入多个 region 、或一个 region 内的多个域。

  • Region: region 是地理空间的逻辑划分,它包含一个或多个域。一个包含多个 region 的集群必须指定一个主 region 。
  • Zone: 域是一个或多个 Ceph 对象网关例程的逻辑分组。每个 region 有一个主域处理客户端请求。

Important

你可以从二级域读取对象,但只能写入 region 内的主域。当前,网关程序不会禁止你写入二级域,但是,别那样干!

背景

当你部署一个跨地理时区的 Ceph 对象存储服务时,即使 Ceph 对象网关例程运行在不同的地理时区、甚至不同的 Ceph 集群上,使用 Ceph 对象网关 region 功能和元数据同步代理都能实现全局统一的命名空间。如果你想多保留一个(或多个)数据副本,可以把一个 region 内的一或多个 Ceph 对象网关例程拆分到多个逻辑容器,然后配置 Ceph 对象网关域和数据同步代理,这样你就能多拥有一份或多份主域的数据副本了。额外的数据副本对于故障转移、备份和灾难恢复是很重要的。

如果你有低延时的网络连接(并非建议),可以把 Ceph 存储集群配置为联盟模式的单体集群。也可以在每 region 部署一套 Ceph 存储集群,然后把各存储池划分进各个域(典型部署)。如果资源充足、且冗余性要求严格,你也可以在每个域都部署一个独立的 Ceph 存储集群。

关于本指南

下面我们将演示如何用两个逻辑步骤配置联盟集群:

  • 配置主 region : 这一段描述了如何配置起包含多个域的一个 region ,以及如何同步主 region 内的主域和各二级域。
  • 配置二级 region : 这一段描述了如何重复前一段再配置一个包含多个域的主 region ,这样你就有了两个 region ,而且都实现了 region 内同步。最后,你会了解到如何配置元数据同步代理,以此统一各 region 命名空间。

配置主 region

本段提供的典型步骤可帮你配置起包含两个域的 region ,此集群将包含两个网关守护进程例程——每域一个。此 region 将作为主 region 。

为主 region 命名

配置集群前,规划良好的 region 、域和例程名字可帮你更好地管理集群。假设此 region 代表美国,那我们就引用她的标准缩写。

  • United States: us

假设各域分别为美国的东部和西部,为保持连贯性,命名将采用 {regionname}-{zonename} 格式,但你可以用自己喜欢的命名规则。

  • United States, East Region: us-east
  • United States, West Region: us-west

最后,我们假设每个域都配置了至少一个 Ceph 对象网关例程,为保持连贯性,我们将按 {regionname}-{zonename}-{instance} 格式命名,但你可以用自己喜欢的命名规则。

  • United States Region, Master Zone, Instance 1: us-east-1
  • United States Region, Secondary Zone, Instance 1: us-west-1

创建存储池

你可以把整个 region 配置为一个 Ceph 存储集群,也可以把各个域都配置为一个 Ceph 存储集群。

为保持连贯性,我们将按照 {regionname}-{zonename} 格式命名,并把它作为存储池名的前缀,但你可以用自己喜欢的命名规则。例如:

  • .us-east.rgw
  • .us-east.rgw.root
  • .us-east.rgw.control
  • .us-east.rgw.gc
  • .us-east.rgw.buckets
  • .us-east.rgw.buckets.index
  • .us-east.rgw.buckets.extra
  • .us-east.log
  • .us-east.intent-log
  • .us-east.usage
  • .us-east.users
  • .us-east.users.email
  • .us-east.users.swift
  • .us-east.users.uid
  • .us-west.rgw
  • .us-west.rgw.root
  • .us-west.rgw.control
  • .us-west.rgw.gc
  • .us-west.rgw.buckets
  • .us-west.rgw.buckets.index
  • .us-west.rgw.buckets.extra
  • .us-west.log
  • .us-west.intent-log
  • .us-west.usage
  • .us-west.users
  • .us-west.users.email
  • .us-west.users.swift
  • .us-west.users.uid

关于网关的默认存储池请参考配置参考——存储池。关于创建存储池见存储池。用下列命令创建存储池:

  1. ceph osd pool create {poolname} {pg-num} {pgp-num} {replicated | erasure} [{erasure-code-profile}] {ruleset-name} {ruleset-number}

Tip

创建大量存储池时,集群回到 active+clean 状态可能需要较多的时间。

完成这一步后,执行下列命令以确认你已经创建了前述所需的存储池:

  1. rados lspools

创建密钥环

各例程都必须有用户名和密钥才能与 Ceph 存储集群通信。在下面几步,我们用管理节点创建密钥环,然后为各例程创建客户端用户名及其密钥,再把这些密钥加入 Ceph 存储集群,最后,把密钥环分别发布给各网关节点。

  • 创建密钥环。
  1. sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring
  2. sudo chmod +r /etc/ceph/ceph.client.radosgw.keyring
  • 为各例程生成 Ceph 对象网关用户名及其密钥。
  1. sudo ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.us-east-1 --gen-key
  2. sudo ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.us-west-1 --gen-key
  1. sudo ceph-authtool -n client.radosgw.us-east-1 --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring
  2. sudo ceph-authtool -n client.radosgw.us-west-1 --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring
  • 创建密钥环及密钥,并授权 Ceph 对象网关访问 Ceph 存储集群之后,还需把各密钥导入存储集群。例如:
  1. sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.us-east-1 -i /etc/ceph/ceph.client.radosgw.keyring
  2. sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.us-west-1 -i /etc/ceph/ceph.client.radosgw.keyring

Note

按照以上步骤配置二级 region 时,需把 us- 替换为 eu- 。创建主 region 和二级 region ,你一共会拥有四个用户。

安装 Apache 和 FastCGI

每个运行 Ceph 对象网关守护进程例程的 Ceph 节点都必须安装 Apache 、 FastCGI 、 Ceph 对象网关守护进程( radosgw ),还有 Ceph 对象网关同步代理( radosgw-agent )。详情见安装 Ceph 对象网关

创建数据目录

分别为各主机上的各个守护进程例程创建数据目录。

  1. ssh {us-east-1}
  2. sudo mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.us-east-1
  3.  
  4. ssh {us-west-1}
  5. sudo mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.us-west-1

Note

按照以上步骤配置二级 region 时,需把 us- 替换为 eu- 。创建主 region 和二级 region ,你一共会拥有四个用户。

创建网关配置

在装了 Ceph 对象网关守护进程的主机上,为各例程创建 Ceph 对象网关配置文件,并放到 /etc/apache2/sites-available 目录下。典型的网关配置见下文:

  1. FastCgiExternalServer /var/www/s3gw.fcgi -socket /{path}/{socket-name}.sock
  2.  
  3.  
  4. <VirtualHost *:80>
  5.  
  6. ServerName {fqdn}
  7. <!--Remove the comment. Add a server alias with *.{fqdn} for S3 subdomains-->
  8. <!--ServerAlias *.{fqdn}-->
  9. ServerAdmin {email.address}
  10. DocumentRoot /var/www
  11. RewriteEngine On
  12. RewriteRule ^/(.*) /s3gw.fcgi?%{QUERY_STRING} [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
  13.  
  14. <IfModule mod_fastcgi.c>
  15. <Directory /var/www>
  16. Options +ExecCGI
  17. AllowOverride All
  18. SetHandler fastcgi-script
  19. Order allow,deny
  20. Allow from all
  21. AuthBasicAuthoritative Off
  22. </Directory>
  23. </IfModule>
  24.  
  25. AllowEncodedSlashes On
  26. ErrorLog /var/log/apache2/error.log
  27. CustomLog /var/log/apache2/access.log combined
  28. ServerSignature Off
  29.  
  30. </VirtualHost>
  • 把 /{path}/{socket-name} 条目分别替换为套接字的路径和名字,例如 /var/run/ceph/client.radosgw.us-east-1.sock ,确保 ceph.conf 里也要写入相同的套接字路径和名字。
  • 用服务器的全资域名替换 {fqdn} 条目。
  • 用服务器管理员的邮件地址替换 {email.address} 条目。
  • 如果你想用 S3 风格的子域,需添加 ServerAlias 配置(当然想)。
  • 把这些配置另存到一文件,如 rgw-us-east.conf 。在二级域上重复这些步骤,如 rgw-us-west.conf

Note

按照以上步骤配置二级 region 时,需把 us- 替换为 eu- 。创建主 region 和二级 region ,你一共会拥有四个用户。

最后,如果你想启用 SSL ,确保端口要设置为 SSL 端口(通常是 443 ),而且配置文件要包含这些:

  1. SSLEngine on
  2. SSLCertificateFile /etc/apache2/ssl/apache.crt
  3. SSLCertificateKeyFile /etc/apache2/ssl/apache.key
  4. SetEnv SERVER_PORT_SECURE 443

启用配置

启用各例程的网关配置、并禁用默认站点。

  • 启用网关站点配置。
  1. sudo a2ensite {rgw-conf-filename}
  • 禁用默认站点。
  1. sudo a2dissite default

Note

默认站点禁用失败会导致其他问题。

添加 FastCGI 脚本

要启用 S3 兼容接口,各 Ceph 对象网关例程都需要一个 FastCGI 脚本。按如下过程创建此脚本。

  • 进入 /var/www 目录。
  1. cd /var/www
  • 用编辑器打开名为 s3gw.fcgi 的文件。注:配置文件里也要指定此文件名。
  1. sudo vim s3gw.fcgi
  • 添加 shell 脚本头,然后是 exec 、网关的二进制文件、 Ceph 配置文件路径、还有用户名( -n 所指,就是创建密钥环里第二步所创建的),把下面的复制进编辑器。
  1. #!/bin/sh
  2. exec /usr/bin/radosgw -c /etc/ceph/ceph.conf -n client.radosgw.{ID}

例如:

  1. #!/bin/sh
  2. exec /usr/bin/radosgw -c /etc/ceph/ceph.conf -n client.radosgw.us-east-1
  • 保存文件。

  • 增加可执行权限。

  1. sudo chmod +x s3gw.fcgi

在二级域上重复以上步骤。

Note

按照以上步骤配置二级 region 时,需把 us- 替换为 eu- 。创建主 region 和二级 region ,你一共会拥有四个 FastCGI 脚本。

把各例程加入 Ceph 配置文件

在管理节点上,把各例程的配置写入 Ceph 存储集群的配置文件。例如:

  1. ...
  2.  
  3. [client.radosgw.us-east-1]
  4. rgw region = us
  5. rgw region root pool = .us.rgw.root
  6. rgw zone = us-east
  7. rgw zone root pool = .us-east.rgw.root
  8. keyring = /etc/ceph/ceph.client.radosgw.keyring
  9. rgw dns name = {hostname}
  10. rgw socket path = /var/run/ceph/$name.sock
  11. host = {host-name}
  12.  
  13. [client.radosgw.us-west-1]
  14. rgw region = us
  15. rgw region root pool = .us.rgw.root
  16. rgw zone = us-west
  17. rgw zone root pool = .us-west.rgw.root
  18. keyring = /etc/ceph/ceph.client.radosgw.keyring
  19. rgw dns name = {hostname}
  20. rgw socket path = /var/run/ceph/$name.sock
  21. host = {host-name}

然后,把更新过的 Ceph 配置文件推送到各 Ceph 节点如:

  1. ceph-deploy --overwrite-conf config push {node1} {node2} {nodex}

Note

按照以上步骤配置二级 region 时,需把 region 、存储池和域的名字都从 us 替换为 eu 。创建主 region 和二级 region ,你一共会有四条类似配置。

创建 region

  • 为 us region 创建个 region 配置文件,名为 us.json 。

把下列实例的内容复制进文本编辑器,把 is_master 设置为 true ,用终结点的全资域名替换 {fqdn} 。这样,主域就是 us-east ,另外 zones 列表中还会有 us-west 。详情见配置参考——region

  1. { "name": "us",
  2. "api_name": "us",
  3. "is_master": "true",
  4. "endpoints": [
  5. "http:\/\/{fqdn}:80\/"],
  6. "master_zone": "us-east",
  7. "zones": [
  8. { "name": "us-east",
  9. "endpoints": [
  10. "http:\/\/{fqdn}:80\/"],
  11. "log_meta": "true",
  12. "log_data": "true"},
  13. { "name": "us-west",
  14. "endpoints": [
  15. "http:\/\/{fqdn}:80\/"],
  16. "log_meta": "true",
  17. "log_data": "true"}],
  18. "placement_targets": [
  19. {
  20. "name": "default-placement",
  21. "tags": []
  22. }
  23. ],
  24. "default_placement": "default-placement"}
  • 用刚刚创建的 us.json 输入文件创建 us region 。
  1. radosgw-admin region set --infile us.json --name client.radosgw.us-east-1
  • 删除默认 region (如果有的话)。
  1. rados -p .us.rgw.root rm region_info.default
  • 把 us region 设置为默认 region 。
  1. radosgw-admin region default --rgw-region=us --name client.radosgw.us-east-1

一套集群只能有一个默认 region 。

  • 更新 region 图。
  1. radosgw-admin regionmap update --name client.radosgw.us-east-1

如果你把 region 配置到不同的 Ceph 存储集群上,可以加 —nameclient.radosgw-us-west-1 选项重复上述的第二、四、五步。也可以从初始网关例程导出 region 图,并按更新步骤导入。

Note

按照以上步骤配置二级 region 时,需把 us 替换为 eu 。创建主 region 和二级 region ,你一共会有两个 region 。

创建域

  • 为 us-east 域创建名为 us-east.json 的配置导入文件。

把以下实例的内容复制到文本编辑器。本配置里的存储池名字用 region 名和域名作为前缀。关于网关存储池见配置参考——存储池,关于域请参考配置参考——域

  1. { "domain_root": ".us-east.rgw",
  2. "control_pool": ".us-east.rgw.control",
  3. "gc_pool": ".us-east.rgw.gc",
  4. "log_pool": ".us-east.log",
  5. "intent_log_pool": ".us-east.intent-log",
  6. "usage_log_pool": ".us-east.usage",
  7. "user_keys_pool": ".us-east.users",
  8. "user_email_pool": ".us-east.users.email",
  9. "user_swift_pool": ".us-east.users.swift",
  10. "user_uid_pool": ".us-east.users.uid",
  11. "system_key": { "access_key": "", "secret_key": ""},
  12. "placement_pools": [
  13. { "key": "default-placement",
  14. "val": { "index_pool": ".us-east.rgw.buckets.index",
  15. "data_pool": ".us-east.rgw.buckets",
  16. "data_extra_pool": ".us-east.rgw.buckets.extra"}
  17. }
  18. ]
  19. }
  • 把刚创建的 us-east 域的配置文件 us-east.json 加入东部和西部的存储池,需分别指定其用户名(即 —name )。
  1. radosgw-admin zone set --rgw-zone=us-east --infile us-east.json --name client.radosgw.us-east-1
  2. radosgw-admin zone set --rgw-zone=us-east --infile us-east.json --name client.radosgw.us-west-1

重复步骤一,为 us-west 创建配置导入文件,然后把 us-east.json 加入东部和西部的存储池,需分别指定其用户名(即 —name )。

  1. radosgw-admin zone set --rgw-zone=us-west --infile us-west.json --name client.radosgw.us-east-1
  2. radosgw-admin zone set --rgw-zone=us-west --infile us-west.json --name client.radosgw.us-west-1
  • 删除默认域(如果有的话)。
  1. rados -p .rgw.root rm zone_info.default
  • 更新 region 图。
  1. radosgw-admin regionmap update --name client.radosgw.us-east-1

Note

按照以上步骤配置二级 region 时,需把 us- 替换为 eu- 。在各 region 创建完主域和二级域,你一共会有四个域。

创建域用户

Ceph 对象网关的域用户存储在域存储池中,所以配置完域之后还必须创建域用户。为各用户填充 access_keysecret_key 字段,然后再次更新域配置信息。

  1. radosgw-admin user create --uid="us-east" --display-name="Region-US Zone-East" --name client.radosgw.us-east-1 --system --gen-access-key --gen-secret
  2. radosgw-admin user create --uid="us-west" --display-name="Region-US Zone-West" --name client.radosgw.us-west-1 --system --gen-access-key --gen-secret

Note

按照以上步骤配置二级 region 时,需把 us- 替换为 eu- 。在各 region 创建完主域和二级域,你一共会有四个域用户。这些用户不同于创建密钥环那里创建的用户。

更新域配置

必须以域用户身份更新域配置,这样同步代理才能通过域的认证。

  • 打开 us-east.json 域配置文件,把创建域用户时输出的 access_key 和 secret_key 的内容粘帖进配置文件的 system_key 字段。
  1. { "domain_root": ".us-east.rgw",
  2. "control_pool": ".us-east.rgw.control",
  3. "gc_pool": ".us-east.rgw.gc",
  4. "log_pool": ".us-east.log",
  5. "intent_log_pool": ".us-east.intent-log",
  6. "usage_log_pool": ".us-east.usage",
  7. "user_keys_pool": ".us-east.users",
  8. "user_email_pool": ".us-east.users.email",
  9. "user_swift_pool": ".us-east.users.swift",
  10. "user_uid_pool": ".us-east.users.uid",
  11. "system_key": {
  12. "access_key": "{paste-access_key-here}",
  13. "secret_key": "{paste-secret_key-here}"
  14. },
  15. "placement_pools": [
  16. { "key": "default-placement",
  17. "val": { "index_pool": ".us-east.rgw.buckets.index",
  18. "data_pool": ".us-east.rgw.buckets",
  19. "data_extra_pool": ".us-east.rgw.buckets.extra"}
  20. }
  21. ]
  22. }
  • 保存 us-east.json 文件,然后更新域配置文件。
  1. radosgw-admin zone set --rgw-zone=us-east --infile us-east.json --name client.radosgw.us-east-1
  2. radosgw-admin zone set --rgw-zone=us-east --infile us-east.json --name client.radosgw.us-west-1
  • 重复步骤一更新 us-west 的域配置文件,然后更新域配置。
  1. radosgw-admin zone set --rgw-zone=us-west --infile us-west.json --name client.radosgw.us-east-1
  2. radosgw-admin zone set --rgw-zone=us-west --infile us-west.json --name client.radosgw.us-west-1

Note

按照以上步骤配置二级 region 时,需把 us- 替换为 eu- 。在各 region 创建完主域和二级域,你一共会有四个域。

重启服务

再次发布 Ceph 配置文件后,我们建议重启 Ceph 存储集群和 Apache 例程。

对于 Ubuntu ,可在各 Ceph 节点上执行此命令:

  1. sudo restart ceph-all

对于 Red Hat/CentOS 是此命令:

  1. sudo /etc/init.d/ceph restart

确保所有组件都重载了各自的配置,对于网关例程,我们建议重启 apache2 服务,例如:

  1. sudo service apache2 restart

启动网关例程

启动 radosgw 服务。

  1. sudo /etc/init.d/radosgw start

如果你在同一主机上运行了多个例程,那么还必须指定用户名。

  1. sudo /etc/init.d/radosgw start --name client.radosgw.us-east-1

打开浏览器检查各域的终结点,向其域名发起一个简单的 HTTP 请求应该会得到下面的回应:

  1. <ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  2. <Owner>
  3. <ID>anonymous</ID>
  4. <DisplayName/>
  5. </Owner>
  6. <Buckets/>
  7. </ListAllMyBucketsResult>

配置二级 region

本段所述的典型步骤可帮你配置起一个拥有多个 region 的集群。配置一个跨 region 集群要求维护一个全局命名空间,这样分布于不同 region 的对象名就不会存在命名空间冲突问题了。

本段对配置主 region 里的步骤有所扩展,还更改了 region 名称、修改了一些步骤,详情见下文。

为二级 region 命名

配置集群前,规划良好的 region 、域和例程名字可帮你更好地管理集群。假设此 region 代表欧盟,那我们就引用她的标准缩写。

  • European Union: eu

假设各域分别为欧盟的东部和西部,为保持连贯性,命名将采用 {regionname}-{zonename} 格式,但你可以用自己喜欢的命名规则。

  • European Union, East Region: eu-east
  • European Union, West Region: eu-west

最后,我们假设每个域都配置了至少一个 Ceph 对象网关例程,为保持连贯性,我们将按 {regionname}-{zonename}-{instance} 格式命名,但你可以用自己喜欢的命名规则。

  • European Union Region, Master Zone, Instance 1: eu-east-1
  • European Union Region, Secondary Zone, Instance 1: eu-west-1

二级 region 的配置

重复执行配置主 region 里的典型步骤,不同之处如下:

radosgw-admin region set --infile us.json --name client.radosgw.eu-east-1
  • 创建域,用 eu 取代 us 。一定要换成正确的用户名(即 —name ),这样才会把域创建到正确的集群。

  • 更新域配置,用 eu 取代 us 。

  • 在(所有?)二级 region 里,创建主 region 的各个域。

radosgw-admin zone set --rgw-zone=us-east --infile us-east.json --name client.radosgw.eu-east-1
radosgw-admin zone set --rgw-zone=us-east --infile us-east.json --name client.radosgw.eu-west-1
radosgw-admin zone set --rgw-zone=us-west --infile us-west.json --name client.radosgw.eu-east-1
radosgw-admin zone set --rgw-zone=us-west --infile us-west.json --name client.radosgw.eu-west-1
  • 在主 region 里,创建二级 region 的各个域。
radosgw-admin zone set --rgw-zone=eu-east --infile eu-east.json --name client.radosgw.us-east-1
radosgw-admin zone set --rgw-zone=eu-east --infile eu-east.json --name client.radosgw.us-west-1
radosgw-admin zone set --rgw-zone=eu-west --infile eu-west.json --name client.radosgw.us-east-1
radosgw-admin zone set --rgw-zone=eu-west --infile eu-west.json --name client.radosgw.us-west-1

多站点数据复制

数据同步代理会把主域数据复制到二级域。一个 region 的主域会自动选择某 region 的二级域,并作为它的数据源。../../_images/zone-sync.png配置同步代理需找出源和目的地的访问密钥、私钥、以及目的 URL 和端口。

你可以用 radosgw-adminzonelist 获取域名称列表,用 radosgw-adminzoneget 找出此域的访问密钥和私钥。端口号可以在创建网关配置时创建的网关配置文件里找到。

一例程只需准备主机名和端口号即可(假设一 region 或域内的所有网关例程都访问同一 Ceph 存储集群);配置文件(如 cluster-data-sync.conf )里的以下这些选项要填上,还要给 log_file 指定一个日志文件。

例如:

src_access_key: {source-access-key}
src_secret_key: {source-secret-key}
destination: https://zone-name.fqdn.com:port
dest_access_key: {destination-access-key}
dest_secret_key: {destination-secret-key}
log_file: {log.filename}

实例类似这样:

src_access_key: DG8RE354EFPZBICHIAF0
src_secret_key: i3U0HiRP8CXaBWrcF8bbh6CbsxGYuPPwRkixfFSb
destination: https://us-west.storage.net:80
dest_access_key: U60RFI6B08F32T2PD30G
dest_secret_key: W3HuUor7Gl1Ee93pA2pq2wFk1JMQ7hTrSDecYExl
log_file: /var/log/radosgw/radosgw-sync-us-east-west.log

(在哪里执行)要启动数据同步代理,在终端内执行以下命令:

radosgw-agent -c region-data-sync.conf

同步代理运行时,你应该能从输出里看到数据片段正在同步。

INFO:radosgw_agent.sync:Starting incremental sync
INFO:radosgw_agent.worker:17910 is processing shard number 0
INFO:radosgw_agent.worker:shard 0 has 0 entries after ''
INFO:radosgw_agent.worker:finished processing shard 0
INFO:radosgw_agent.worker:17910 is processing shard number 1
INFO:radosgw_agent.sync:1/64 shards processed
INFO:radosgw_agent.worker:shard 1 has 0 entries after ''
INFO:radosgw_agent.worker:finished processing shard 1
INFO:radosgw_agent.sync:2/64 shards processed
...

Note

每个源、目的对都要运行代理。

region 间元数据复制

数据同步代理会把主 region 内主域的元数据复制到二级 region 的主域。元数据包含网关用户和桶信息、但不包含桶内的对象——为确保跨集群统一的命名空间,主 region 内的主域是数据源,它会自动选择二级 region 的主域。../../_images/region-sync.png按照与多站点数据复制相同的步骤,并把主 region 的主域作为源域、二级 region 的主域作为二级域。启动 radosgw-agent 时加上 —metadata-only 参数,这样它就只会复制元数据。例如:

radosgw-agent -c inter-region-data-sync.conf --metadata-only

完成前述各步骤之后,你就会拥有一套包含两个 region 的集群,其内的主 region us 和二级 region eu 的命名空间是统一的。