10.4. 使用 Ceph 编排器部署多站点 Ceph 对象网关

Ceph 编排器支持 Ceph 对象网关的多站点配置选项。

您可以将每个对象网关配置为在主动区域配置中工作,从而允许写入到非主要区域。多站点配置存储在名为 realm 的容器中。

realm 存储 zone group、区域和一个时间周期。rgw 守护进程处理同步消除了对独立同步代理的需求,因此使用主动-主动配置运行。

您还可以使用命令行界面(CLI)部署多站点区域。

注意

以下配置假定在地理上至少有两个 Red Hat Ceph Storage 集群。但是,配置也在同一站点工作。

先决条件

  • 至少两个正在运行的 Red Hat Ceph Storage 集群。
  • 至少两个 Ceph 对象网关实例,每个实例对应一个 Red Hat Ceph Storage 集群。
  • 所有节点的根级别访问权限。
  • 节点或容器添加到存储集群中。
  • 部署所有 Ceph 管理器、监控器和 OSD 守护进程。

流程

  1. cephadm shell 中,配置主区:

    1. 创建一个域:

      语法

      radosgw-admin realm create --rgw-realm=REALM_NAME --default

      示例

      [ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=test_realm --default

      如果存储集群只有一个域,则指定 --default 标志。

    2. 创建主要区组:

      语法

      radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME --endpoints=http://RGW_PRIMARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 --master --default

      示例

      [ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=us --endpoints=http://rgw1:80 --master --default

    3. 创建一个主要区:

      语法

      radosgw-admin zone create --rgw-zonegroup=PRIMARY_ZONE_GROUP_NAME --rgw-zone=PRIMARY_ZONE_NAME --endpoints=http://RGW_PRIMARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY

      示例

      [ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east-1 --endpoints=http://rgw1:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ

    4. 可选:删除默认 zone、zone group 和关联的池。

      重要

      如果您使用默认 zone 和 zone group 存储数据,则不要删除默认区域及其池。另外,删除默认 zone group 会删除系统用户。

      要访问 default zone 和 zonegroup 中的旧数据,请在 radosgw-admin 命令中使用 --rgw-zone default--rgw-zonegroup default

      示例

      [ceph: root@host01 /]# radosgw-admin zonegroup delete --rgw-zonegroup=default
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.log default.rgw.log --yes-i-really-really-mean-it
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.meta default.rgw.meta --yes-i-really-really-mean-it
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.control default.rgw.control --yes-i-really-really-mean-it
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.data.root default.rgw.data.root --yes-i-really-really-mean-it
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.gc default.rgw.gc --yes-i-really-really-mean-it

    5. 创建系统用户:

      语法

      radosgw-admin user create --uid=USER_NAME --display-name="USER_NAME" --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY --system

      示例

      [ceph: root@host01 /]# radosgw-admin user create --uid=zone.user --display-name="Zone user" --system

      记录 access_keysecret_key

    6. 在主区中添加 access key 和 system key:

      语法

      radosgw-admin zone modify --rgw-zone=PRIMARY_ZONE_NAME --access-key=ACCESS_KEY --secret=SECRET_KEY

      示例

      [ceph: root@host01 /]# radosgw-admin zone modify --rgw-zone=us-east-1 --access-key=NE48APYCAODEPLKBCZVQ --secret=u24GHQWRE3yxxNBnFBzjM4jn14mFIckQ4EKL6LoW

    7. 提交更改:

      语法

      radosgw-admin period update --commit

      示例

      [ceph: root@host01 /]# radosgw-admin period update --commit

    8. cephadm shell 外部,获取存储集群的 FSID 及进程:

      示例

      [root@host01 ~]#  systemctl list-units | grep ceph

    9. 启动 Ceph 对象网关守护进程:

      语法

      systemctl start ceph-FSID@DAEMON_NAME
      systemctl enable ceph-FSID@DAEMON_NAME

      示例

      [root@host01 ~]# systemctl start ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-1.host01.ahdtsw.service
      [root@host01 ~]# systemctl enable ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-1.host01.ahdtsw.service

  2. 在 Cephadm shell 中,配置 second zone。

    1. 从主机拉取主要域配置:

      语法

      radosgw-admin realm pull --rgw-realm=PRIMARY_REALM --url=URL_TO_PRIMARY_ZONE_GATEWAY --access-key=ACCESS_KEY --secret-key=SECRET_KEY --default

      示例

      [ceph: root@host04 /]# radosgw-admin realm pull --rgw-realm=test_realm --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ --default

    2. 从主机拉取主要 period 配置:

      语法

      radosgw-admin period pull --url=URL_TO_PRIMARY_ZONE_GATEWAY --access-key=ACCESS_KEY --secret-key=SECRET_KEY

      示例

      [ceph: root@host04 /]# radosgw-admin period pull --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ

    3. 配置 second zone:

      语法

      radosgw-admin zone create --rgw-zonegroup=ZONE_GROUP_NAME \
                   --rgw-zone=SECONDARY_ZONE_NAME --endpoints=http://RGW_SECONDARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 \
                   --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY \
                   --endpoints=http://FQDN:80 \
                   [--read-only]

      示例

      [ceph: root@host04 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east-2 --endpoints=http://rgw2:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ

    4. 可选:删除默认区。

      重要

      如果您使用默认 zone 和 zone group 存储数据,则不要删除默认区域及其池。

      要访问 default zone 和 zonegroup 中的旧数据,请在 radosgw-admin 命令中使用 --rgw-zone default--rgw-zonegroup default

      示例

      [ceph: root@host04 /]# radosgw-admin zone rm --rgw-zone=default
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.log default.rgw.log --yes-i-really-really-mean-it
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.meta default.rgw.meta --yes-i-really-really-mean-it
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.control default.rgw.control --yes-i-really-really-mean-it
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.data.root default.rgw.data.root --yes-i-really-really-mean-it
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.gc default.rgw.gc --yes-i-really-really-mean-it

    5. 更新 Ceph 配置数据库:

      语法

      ceph config set SERVICE_NAME rgw_zone SECONDARY_ZONE_NAME

      示例

      [ceph: root@host04 /]# ceph config set rgw rgw_zone us-east-2

    6. 提交更改:

      语法

      radosgw-admin period update --commit

      示例

      [ceph: root@host04 /]# radosgw-admin period update --commit

    7. 在 Cephadm shell 外,获取存储集群的 FSID 及进程:

      示例

      [root@host04 ~]#  systemctl list-units | grep ceph

    8. 启动 Ceph 对象网关守护进程:

      语法

      systemctl start ceph-FSID@DAEMON_NAME
      systemctl enable ceph-FSID@DAEMON_NAME

      示例

      [root@host04 ~]# systemctl start ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service
      [root@host04 ~]# systemctl enable ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service

  3. 可选:使用放置规格部署多站点 Ceph 对象网关:

    语法

    ceph orch apply rgw NAME --realm=REALM_NAME --zone=PRIMARY_ZONE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2"

    示例

    [ceph: root@host04 /]# ceph orch apply rgw east --realm=test_realm --zone=us-east-1 --placement="2 host01 host02"

验证

  • 检查同步状态以验证部署:

    示例

    [ceph: root@host04 /]# radosgw-admin sync status