3.3. 使用 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 守护进程。
流程
在
cephadmshell 中,配置主区:创建一个域:
语法
radosgw-admin realm create --rgw-realm=REALM_NAME --default示例
[ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=test_realm --default如果存储集群只有一个域,则指定
--default标志。创建主要区组:
语法
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创建一个主要区:
语法
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可选:删除默认 zone、zone group 和关联的池。
重要如果您使用默认 zone 和 zone group 存储数据,则不要删除默认区域及其池。此外,删除默认 zone group 也会删除系统用户。
要访问
defaultzone 和 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创建系统用户:
语法
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_key和secret_key。在主区中添加 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提交更改:
语法
radosgw-admin period update --commit示例
[ceph: root@host01 /]# radosgw-admin period update --commit在
cephadmshell 外部,获取存储集群的FSID及进程:示例
[root@host01 ~]# systemctl list-units | grep ceph启动 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
在 Cephadm shell 中,配置 second zone。
从主机拉取主要域配置:
语法
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从主机拉取主要 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配置 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可选:删除默认区。
重要如果您使用默认 zone 和 zone group 存储数据,则不要删除默认区域及其池。
要访问
defaultzone 和 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更新 Ceph 配置数据库:
语法
ceph config set SERVICE_NAME rgw_zone SECONDARY_ZONE_NAME示例
[ceph: root@host04 /]# ceph config set rgw rgw_zone us-east-2提交更改:
语法
radosgw-admin period update --commit示例
[ceph: root@host04 /]# radosgw-admin period update --commit在 Cephadm shell 外,获取存储集群的 FSID 及进程:
示例
[root@host04 ~]# systemctl list-units | grep ceph启动 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
可选:使用放置规格部署多站点 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