网易首页 > 网易号 > 正文 申请入驻

Ceph 对象存储多站点复制:第二部分

0
分享至

新钛云服已累计为您分享833篇技术干货

系列回顾与目标

在本系列的第一部分中,我们介绍了Ceph对象存储的多站点特性,并准备好了用于部署和配置Ceph对象多站点异步复制的实验环境。

第二部分将详细讲解如何在两个Ceph集群之间建立初始的多站点复制配置,如下图所示:

Ceph 对象存储多站点初始配置概述

自Quincy版本起,Ceph引入了一个名为rgw的新管理器模块,集成在cephadm编排器中。该模块简化了多站点复制的配置流程。本节将指导您如何使用rgw管理器模块,通过CLI在两个独立Ceph集群(每个集群作为一个区域)之间配置对象存储多站点复制。

创建RGW模块配置文件

我们首先为cluster1创建一个RGW模块配置文件。通过主机标签来定义哪些节点可以托管每个服务。对于复制RGW服务,我们设置rgwsync标签。任何配置了此标签的主机都将启动一个RGW服务,并使用文件中定义的规格。

[root@ceph-node-00 ~]# cat << EOF >> /root/rgw.spec
placement:
label: rgwsync
count_per_host: 1
rgw_realm: multisite
rgw_zone: zone1
rgw_zonegroup: multizg
spec:
rgw_frontend_port: 8000
EOF

标记主机

在我们的第一个集群中,我们希望在节点ceph-node-00ceph-node-01上运行rgwsync服务,因此我们需要标记相应的节点:

[root@ceph-node-00 ~]# ceph orch host label add ceph-node-00.cephlab.com rgwsync
Added label rgwsync to host ceph-node-00.cephlab.com
[root@ceph-node-00 ~]# ceph orch host label add ceph-node-01.cephlab.com rgwsync
Added label rgwsync to host ceph-node-01.cephlab.com

启用RGW管理器模块并引导配置

标记节点后,我们启用RGW管理器模块并引导RGW多站点配置。引导多站点配置时,rgw管理器模块将执行以下步骤:

  • 创建领域、区域组和区域,并应用周期

  • 创建特定于区域名称的RGW RADOS池

  • 创建RGW多站点复制同步用户

  • 为每个RGW服务配置领域、区域组和区域

  • 使用cephadm Orchestrator创建RGW服务

[root@ceph-node-00 ~]# ceph mgr module enable rgw
[root@ceph-node-00 ~]# ceph rgw realm bootstrap -i rgw.spec
Realm(s) created correctly. Please use 'ceph rgw realm tokens' to get the token.

验证配置

我们可以通过以下命令检查领域、同步用户和RADOS池的创建情况:

[root@ceph-node-00 ~]# radosgw-admin realm list
{
"default_info": "d85b6eef-2285-4072-8407-35e2ea7a17a2",
"realms": [
"multisite"
]
}

多站点同步用户:

[root@ceph01 ~]# radosgw-admin user list | grep sysuser
"Sysuser-multisite"

Zone1 RGW RADOS 池:

[root@ceph01 ~]# ceph osd lspools | grep rgw
24 .rgw.root
25 zone1.rgw.log
26 zone1.rgw.control
27 zone1.rgw.meta

一旦我们创建了第一个桶,桶索引池就会自动创建。此外,一旦我们将第一个对象/数据上传到zone1中的存储桶,就会为我们创建数据池。默认情况下,副本为 3 的池是使用集群的预定义 CRUSH 规则replicated_rule创建的。如果我们想在数据池中使用纠删码 (EC) 或自定义故障域等,则需要在开始将数据上传到第一个存储桶之前,使用自定义内容手动预先创建池。

[!CAUTION] 请务必仔细检查RGW池的Placement Groups(PG)数量是否正确,以确保所需的性能。我们可以选择为每个池启用带有批量标志(bulk flag)的PG自动扩展管理器模块,或者借助PG计算器(https://docs.ceph.com/en/squid/rados/operations/pgcalc/)预先静态计算池所需的PG数量。我们建议每个OSD的PG副本目标值为200,即"PG比例"。
[!CAUTION] 只有RGW数据池可以配置为使用纠删码(erasure coding)。RGW其他池必须配置为副本,默认复制因子为3(size=3)。

RGW 服务已启动并正在端口 8000 上为 S3 端点提供服务:

[root@ceph-node-00 ~]# curl http://ceph-node-00:8000
anonymous

RGW 管理器模块创建一个带有我们部署的编码信息的令牌。想要作为复制区域添加到我们的多站点配置的其他 Ceph 集群可以将此令牌导入到 RGW 管理器模块中,并使用单个命令配置和运行复制。

我们可以使用ceph rgw realm tokens命令检查令牌的内容,并使用base64命令对其进行解码。正如您所看到的,它提供了辅助区域连接到主区域组并提取领域和区域组配置所需的信息。

[root@ceph-node-00 ~]# TOKEN=$(ceph rgw realm tokens | jq .[0].token | sed 's/"//g')
[root@ceph-node-00 ~]# echo $TOKEN | base64 -d
{
"realm_name": "multisite",
"realm_id": "d85b6eef-2285-4072-8407-35e2ea7a17a2",
"endpoint": "http://ceph-node-00.cephlab.com:8000",
"access_key": "RUB7U4C6CCOMG3EM9QGF",
"secret": "vg8XFPehb21Y8oUMB9RS0XXXXH2E1qIDIhZzpC"
}

从提示中可以看到,我们已经切换到第二个 Ceph 集群,从第一个集群复制了令牌,并与第一个集群类似地定义了其余参数。

[root@ceph-node-04 ~]# cat rgw2.spec
placement:
label: rgwsync
count_per_host: 1
rgw_zone: zone2
rgw_realm_token: ewogICAgInJlYWxtX25hbWUiOiAibXVsdGlzaXRlIiwKICAgICJyZWFsbV9pZCI6ICIxNmM3OGJkMS0xOTIwLTRlMjMtOGM3Yi1lYmYxNWQ5ODI0NTgiLAogICAgImVuZHBvaW50IjogImh0dHA6Ly9jZXBoLW5vZGUtMDEuY2VwaGxhYi5jb206ODAwMCIsCiAgICAiYWNjZXNzX2tleSI6ICIwOFlXQ0NTNzEzUU9LN0pQQzFRUSIsCiAgICAic2VjcmV0IjogImZUZGlmTXpDUldaSXgwajI0ZEw4VGppRUFtOHpRdE01ZGNScXEyTjYiCn0=
spec:
rgw_frontend_port: 8000

我们标记将运行 Ceph RGW 同步服务的主机:

[root@ceph-node-04 ~]# ceph orch host label add ceph-node-04.cephlab.com rgwsync
Added label rgwsync to host ceph-node-04.cephlab.com
[root@ceph-node-04 ~]# ceph orch host label add ceph-node-05.cephlab.com rgwsync
Added label rgwsync to host ceph-node-05.cephlab.com

启用该模块,并使用我们刚才创建的规范文件运行ceph rgw zone create命令:

[root@ceph02 ~]# ceph mgr module enable rgw
[root@ceph02 ~]# ceph rgw zone create -i rgw2.spec --start-radosgw
Zones zone2 created successfully

rgw管理器模块将负责使用多站点同步用户的访问密钥和密钥来拉取领域和区域组周期。最后,它将创建zone2并进行最后一次更新,以便所有区域都具有最新的配置更改,并将zone2添加到 zonegroupmultizg中。在radosgw-adminzonegroup get命令的以下输出中,我们可以看到区域组端点。我们还可以看到zone1是我们的 zonegroup 的主区域以及zone1zone2的相应端点。

[root@ceph-node-00 ~]# radosgw-admin zonegroup get
{
"id": "2761ad42-fd71-4170-87c6-74c20dd1e334",
"name": "multizg",
"api_name": "multizg",
"is_master": true,
"endpoints": [
"http://ceph-node-04.cephlab.com:8000",
"http://ceph-node-05.cephlab.com:8000"
],
"hostnames": [],
"hostnames_s3website": [],
"master_zone": "66df8c0a-c67d-4bd7-9975-bc02a549f13e",
"zones": [
{
"id": "66df8c0a-c67d-4bd7-9975-bc02a549f13e",
"name": "zone1",
"endpoints": [
"http://ceph-node-00.cephlab.com:8000",
"http://ceph-node-01.cephlab.com:8000"
],
"log_meta": false,
"log_data": true,
"bucket_index_max_shards": 11,
"read_only": false,
"tier_type": "",
"sync_from_all": true,
"sync_from": [],
"redirect_zone": "",
"supported_features": [
"compress-encrypted",
"resharding"
]
},
{
"id": "7b9273a9-eb59-413d-a465-3029664c73d7",
"name": "zone2",
"endpoints": [
"http://ceph-node-04.cephlab.com:8000",
"http://ceph-node-05.cephlab.com:8000"
],
"log_meta": false,
"log_data": true,
"bucket_index_max_shards": 11,
"read_only": false,
"tier_type": "",
"sync_from_all": true,
"sync_from": [],
"redirect_zone": "",
"supported_features": [
"compress-encrypted",
"resharding"
]
}
],
"placement_targets": [
{
"name": "default-placement",
"tags": [],
"storage_classes": [
"STANDARD"
]
}
],
"default_placement": "default-placement",
"realm_id": "beeea955-8341-41cc-a046-46de2d5ddeb9",
"sync_policy": {
"groups": []
},
"enabled_features": [
"resharding"
]
}

为了验证复制是否正常工作,我们创建一个用户和一个存储桶:

[root@ceph-node-00 ~]# radosgw-admin user create --uid='user1' --display-name='First User' --access-key='S3user1' --secret-key='S3user1key'

[root@ceph-node-00 ~]# aws configure
AWS Access Key ID [None]: S3user1
AWS Secret Access Key [None]: S3user1key
Default region name [None]: multizg
Default output format [None]: json
[root@ceph-node-00 ~]# aws --endpoint http://s3.cephlab.com:80 s3 ls
[root@ceph-node-00 ~]# aws --endpoint http://s3.cephlab.com:80 s3 mb s3://firstbucket
make_bucket: firstbucket
[root@ceph-node-00 ~]# aws --endpoint http://s3.cephlab.com:80 s3 cp /etc/hosts s3://firstbucket
upload: ../etc/hosts to s3://firstbucket/hosts

如果我们从第二个 Ceph 集群zone2进行检查,我们可以看到所有元数据都已复制,并且我们在zone1中创建的所有用户和存储桶现在都存在于zone2中。

[!CAUTION] 注意:在此示例中,我们将使用radosgw-admin命令进行检查,但我们也可以使用 S3 API 命令将 AWS 客户端指向第二个区域内 RGW 的 IP/主机名。

[root@ceph-node-04 ~]# radosgw-admin user list
[
"dashboard",
"user1",
"sysuser-multisite"
]
[root@ceph-node-04 ~]# radosgw-admin bucket stats --bucket testbucket | jq .bucket
"testbucket"

要检查复制状态,我们可以使用radosgw-admin sync status命令。例如:

[root@ceph-node-00 ~]# radosgw-admin sync status
realm beeea955-8341-41cc-a046-46de2d5ddeb9 (multisite)
zonegroup 2761ad42-fd71-4170-87c6-74c20dd1e334 (multizg)
zone 66df8c0a-c67d-4bd7-9975-bc02a549f13e (zone1)
current time 2024-01-05T22:51:17Z
zonegroup features enabled: resharding
disabled: compress-encrypted
metadata sync no sync (zone is master)
data sync source: 7b9273a9-eb59-413d-a465-3029664c73d7 (zone2)
syncing
full sync: 0/128 shards
incremental sync: 128/128 shards
data is caught up with source

总 结

回顾一下,在本系列的第二部分中,我们详细讲解了如何使用rgw管理器模块在两个站点/区域之间部署Ceph对象存储多站点复制。这只是一个开始,我们的目标是构建一个完整的部署,包括必要的负载均衡。

如有相关问题,请在文章后面给小编留言,小编安排作者第一时间和您联系,为您答疑解惑。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
治疗一过性脑供血不足,这些“坑”您踩过没有?医生讲清楚

治疗一过性脑供血不足,这些“坑”您踩过没有?医生讲清楚

重症医生张伟
2026-05-27 06:42:44
向美捐8亿被骂叛徒,无锡唐氏21代掌门回应:我的钱只认文明归属

向美捐8亿被骂叛徒,无锡唐氏21代掌门回应:我的钱只认文明归属

人生录
2026-05-26 21:16:30
李多海宣布怀孕后,晒出了与丈夫崔东旭的露营近况

李多海宣布怀孕后,晒出了与丈夫崔东旭的露营近况

文娱没有圈
2026-05-27 09:51:44
亚泰主场0-4惨败,范晓冬:现在的亚泰队就是一个四不像

亚泰主场0-4惨败,范晓冬:现在的亚泰队就是一个四不像

懂球帝
2026-05-27 08:32:55
凯恩拜仁生涯第二次获欧洲金靴奖,追平盖德-穆勒和莱万纪录

凯恩拜仁生涯第二次获欧洲金靴奖,追平盖德-穆勒和莱万纪录

懂球帝
2026-05-26 20:40:30
黎家盈丈夫:我停了工作,带着三个孩子迁京,只为她上太空

黎家盈丈夫:我停了工作,带着三个孩子迁京,只为她上太空

云景侃记
2026-05-25 11:36:42
A股进入第三阶段!三个实战信号出现之前,千万不要轻举妄动

A股进入第三阶段!三个实战信号出现之前,千万不要轻举妄动

小白鸽财经
2026-05-27 10:51:29
我坐月子第28天,不闻不问的婆婆突然来电:你小姑子快生了,来帮忙

我坐月子第28天,不闻不问的婆婆突然来电:你小姑子快生了,来帮忙

新时代的两性情感
2026-05-27 14:16:30
超过一万名博士辞去美国公务员,浩荡回国,赴美留学暴跌28.6%!

超过一万名博士辞去美国公务员,浩荡回国,赴美留学暴跌28.6%!

鬼菜生活
2026-05-27 12:03:18
全国通缉犯藏上海9年,成身价3亿大佬,被捕时:放了我,给5000万

全国通缉犯藏上海9年,成身价3亿大佬,被捕时:放了我,给5000万

鉴史录
2026-05-23 12:44:00
热议!意大利公布24 人大名单:除多纳鲁马之外全员U23

热议!意大利公布24 人大名单:除多纳鲁马之外全员U23

林子说事
2026-05-26 18:09:36
父亲当了20年上门女婿,姥爷从不给好脸色,父亲离开时姥爷却笑了

父亲当了20年上门女婿,姥爷从不给好脸色,父亲离开时姥爷却笑了

人间百态大全
2026-05-27 06:45:03
马斯克和范冰冰什么关系?偷税8亿的范冰冰,如今在国外重回巅峰

马斯克和范冰冰什么关系?偷税8亿的范冰冰,如今在国外重回巅峰

追风小狗
2024-11-12 21:52:56
中国工程院撤销张尧学院士称号

中国工程院撤销张尧学院士称号

界面新闻
2026-05-25 21:36:51
主角:直到封导背刺龚丽丽,重用忆秦娥,才知古存孝死得有多冤

主角:直到封导背刺龚丽丽,重用忆秦娥,才知古存孝死得有多冤

慢半拍sir
2026-05-27 14:30:54
一人毁掉整部剧?央视剧《主角》唯一败笔,观众:看他演戏真别扭

一人毁掉整部剧?央视剧《主角》唯一败笔,观众:看他演戏真别扭

老黯谈娱
2026-05-26 12:47:27
家暴妻子致死,男子高清照曝光:3个姐姐1个妈挑拨他们夫妻的关系

家暴妻子致死,男子高清照曝光:3个姐姐1个妈挑拨他们夫妻的关系

汉史趣闻
2026-05-26 19:23:37
*ST闻泰录得5天4板

*ST闻泰录得5天4板

证券时报
2026-05-27 10:13:15
比亚迪认了:快充确实伤电池,反手甩出黑科技,直接碾压友商

比亚迪认了:快充确实伤电池,反手甩出黑科技,直接碾压友商

小怪吃美食
2026-05-26 11:58:05
美论坛曾言:如果中国发电量真的世界第一,为何夜晚没有印度亮?

美论坛曾言:如果中国发电量真的世界第一,为何夜晚没有印度亮?

粤语音乐喷泉
2026-05-27 15:14:11
2026-05-27 16:32:49
新钛云服
新钛云服
云管理服务专家
473文章数 30关注度
往期回顾 全部

科技要闻

韬定律:全球在卷纳米数 华为换了一把尺子

头条要闻

受害者多为中国女性 震惊全球的迷奸案细节披露

头条要闻

受害者多为中国女性 震惊全球的迷奸案细节披露

体育要闻

这群老阿姨,是最硬核的马刺球迷

娱乐要闻

王鹤棣风波连累父亲炸串店遭差评?

财经要闻

ST岩石退市背后:A股“炒壳”时代终结

汽车要闻

极狐问道V9今日将正式上市 搭载华为雪鸮增程系统

态度原创

游戏
本地
健康
数码
公开课

《DQ》123重制销量突破400万 HD-2D风大受欢迎

本地新闻

用剪纸的方式,打开江苏扬州

打外泌体会比干细胞更安全吗

数码要闻

惠普推出首款《无畏契约》联名游戏本,基于HyperX暗影精灵16

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版