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

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

0
分享至

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

01

系列回顾与目标

在本系列的上一篇文章中,我们讨论了多站点同步策略并分享了粒度存储桶双向复制的实践示例。在今天的博客第六部分中,我们将配置其他多站点同步策略,包括从一个源到多个目标存储桶的单向复制。

02

单向桶同步

在上一篇文章中,我们探讨了具有双向配置的存储桶同步策略。现在,让我们通过一个示例来了解如何启用两个存储桶之间的单向同步。在示例中,我们目前将区域组同步策略设置为allowed,并在zonegroup级别配置了双向流。通过区域组同步策略允许我们以每个存储桶的粒度配置复制,我们可以从单向复制配置开始。

我们创建单向存储桶,然后创建一个 ID 为unidirectional-1同步组,然后将状态设置为Enabled。当我们将同步组策略的状态设置为enabled时,一旦管道应用到存储桶,复制就会开始。

[root@ceph-node-00 ~]# aws  --endpoint https://object.s3.zone1.dan.ceph.blue:443 s3 mb s3://unidirectional
make_bucket: unidirectional
[root@ceph-node-00 ~]# radosgw-admin sync group create --bucket=unidirectional --group-id=unidirectiona-1 --status=enabled

一旦同步组就位,我们需要为我们的存储桶创建一个管道。在此示例中,我们指定源区域和目标区域:源为zone1 ,目标为zone2 。这样,我们就为bucket unidirectional创建了一个单向复制管道,数据仅在一个方向复制:zone1 —> zone2。

[root@ceph-node-00 ~]# radosgw-admin sync group pipe create --bucket=unidirectional --group-id=unidirectiona-1 --pipe-id=test-pipe1 --source-zones='zone1' --dest-zones='zone2'

通过sync info,我们可以检查bucket复制的流程。可以看到,当我们从zone1中的节点运行命令时,sources 字段为空,并且我们没有从外部源接收数据。毕竟,从我们运行命令的区域,我们正在进行单向复制,因此我们将数据发送到目的地。我们可以看到unidirectional存储桶的源是zone1,目标是zone2 。

[root@ceph-node-00 ~]# radosgw-admin sync info --bucket unidirectional
{
"sources": [],
"dests": [
        {
"id": "test-pipe1",
"source": {
"zone": "zone1",
"bucket": "unidirectional:89c43fae-cd94-4f93-b21c-76cd1a64788d.34955.1"
            },
"dest": {
"zone": "zone2",
"bucket": "unidirectional:89c43fae-cd94-4f93-b21c-76cd1a64788d.34955.1"
….
}

当我们在zone2中运行相同的命令时,我们会看到相同的信息,但源字段显示从zone1接收数据。单向存储桶zone2未发送任何复制数据,这就是sync info命令的输出中目标字段为空的原因。

[root@ceph-node-00 ~]# radosgw-admin sync info --bucket unidirectional
{
"sources": [],
"dests": [
        {
"id": "test-pipe1",
"source": {
"zone": "zone1",
"bucket": "unidirectional:89c43fae-cd94-4f93-b21c-76cd1a64788d.34955.1"
            },
"dest": {
"zone": "zone2",
"bucket": "unidirectional:89c43fae-cd94-4f93-b21c-76cd1a64788d.34955.1"
….
}

一旦我们的配置准备就绪,我们就可以进行一些检查,看看一切是否都按预期工作。让我们将三个文件放入zone1 :

[root@ceph-node-00 ~]# for i [1..3] do ; in aws --endpoint https://object.s3.zone1.dan.ceph.blue:443 s3 cp   /etc/hosts s3://unidirectional/fil${i}
upload: ../etc/hosts to s3://unidirectional/fil1
upload: ../etc/hosts to s3://unidirectional/fil2
upload: ../etc/hosts to s3://unidirectional/fil3

我们可以检查它们是否已同步到zone2 :

[root@ceph-node-00 ~]# aws --endpoint https://object.s3.zone2.dan.ceph.blue:443 s3 ls s3://unidirectional/
2024-02-0217:56:09233 fil1
2024-02-0217:56:10233 fil2
2024-02-0217:56:11233 fil3

现在让我们检查一下当我们将一个对象放入zone2时会发生什么。我们不应该看到文件复制到zone1,因为我们的存储桶的复制配置是单向的。

[root@ceph-node-00 ~]# aws --endpoint https://object.s3.zone2.dan.ceph.blue:443 s3 cp   /etc/hosts s3://unidirectional/fil4
upload: ../etc/hosts to s3://unidirectional/fil4
[root@ceph-node-00 ~]# aws --endpoint https://object.s3.zone2.dan.ceph.blue:443 s3 ls s3://unidirectional/
2024-02-0217:56:09233 fil1
2024-02-0217:56:10233 fil2
2024-02-0217:56:11233 fil3
2024-02-0217:57:49233 fil4

一段时间后,我们检查了 zone1,发现该文件不存在,这意味着它没有按预期从 zone2 复制。

[root@ceph-node-00 ~]# aws --endpoint https://object.s3.zone1.dan.ceph.blue:443 s3 ls s3://unidirectional
2024-02-0217:56:09233 fil1
2024-02-0217:56:10233 fil2
2024-02-0217:56:11233 fil3

在此示例中,我们将通过添加名为backupbucket新复制目标存储桶来修改之前的单向同步策略。一旦我们设置了同步策略,上传到zone1unidirectional存储桶的每个对象都将被复制到zone2unidirectional存储桶和backupbucket中。

首先,让我们创建存储桶backupbucket

[root@ceph-node-00 ~]# aws  --endpoint https://object.s3.zone2.dan.ceph.blue:443 s3 mb s3://backupbucket
make_bucket: backupbucket

我们将向现有同步组策略添加一个名为backupbucket的新管道。我们在之前的unidirectional示例中创建了组同步策略。

再次,我们指定源区域和目标区域,因此我们的同步将是单向的。主要区别在于,现在我们使用--dest-bucket参数指定名为backupbucket的目标存储桶。

[root@ceph-node-00 ~]# radosgw-admin sync group pipe create --bucket=unidirectional --group-id=unidirectiona-1 --pipe-id=test-pipe2 --source-zones='zone1' --dest-zones='zone2' --dest-bucket=backupbucket

再次,让我们检查同步信息输出,它向我们显示了我们已配置的复制流的表示。源字段为空,因为在zone1中我们没有从任何其他源接收数据。在目的地,我们现在有两个不同的pipes。我们在前面的示例中创建的第一个test-pipe1。第二个管道将backupbucket设置为zone2中的复制目标。

[root@ceph-node-00 ~]# radosgw-admin sync info --bucket unidirectional
{
"sources": [],
"dests": [
        {
"id": "test-pipe1",
"source": {
"zone": "zone1",
"bucket": "unidirectional:66df8c0a-c67d-4bd7-9975-bc02a549f13e.36430.1"
            },
"dest": {
"zone": "zone2",
"bucket": "unidirectional:66df8c0a-c67d-4bd7-9975-bc02a549f13e.36430.1"
            },
"params": {
"source": {
"filter": {
"tags": []
                    }
                },
"dest": {},
"priority": 0,
"mode": "system",
"user": "user1"
            }
        },
        {
"id": "test-pipe2",
"source": {
"zone": "zone1",
"bucket": "unidirectional:66df8c0a-c67d-4bd7-9975-bc02a549f13e.36430.1"
            },
"dest": {
"zone": "zone2",
"bucket": "backupbucket"
            },
"params": {
"source": {
"filter": {
"tags": []
                    }
                },
"dest": {},
"priority": 0,
"mode": "system",
"user": "user1"
            }
        }
    ],
"hints": {
"sources": [],
"dests": [
"backupbucket"
        ]
    },

让我们检查一下:在前面的示例中,我们的zone1包含三个文件:

[root@ceph-node-00 ~]# aws --endpoint https://object.s3.zone2.dan.ceph.blue:443 s3 ls s3://unidirectional/
2024-02-0217:56:09233 fil1
2024-02-0217:56:10233 fil2
2024-02-0217:56:11233 fil3

在有四个文件的zone2中,fil4不会复制到zone1因为复制是单向的。

[root@ceph-node-00 ~]# aws --endpoint https://object.s3.zone2.dan.ceph.blue:443 s3 ls s3://unidirectional/
2024-02-0217:56:09233 fil1
2024-02-0217:56:10233 fil2
2024-02-0217:56:11233 fil3
2024-02-0217:57:49233 fil4

让我们向zone1添加另外三个文件。我们希望将它们复制到zone2中的unidirectional存储桶和backupbucket

[root@ceph-node-00 ~]# for i [5..7] do ; in aws --endpoint https://object.s3.zone1.dan.ceph.blue:443 s3 cp   /etc/hosts s3://unidirectional/fil${i}
upload: ../etc/hosts to s3://unidirectional/fil5
upload: ../etc/hosts to s3://unidirectional/fil6
upload: ../etc/hosts to s3://unidirectional/fil7
[root@ceph-node-00 ~]# aws --endpoint https://object.s3.zone1.dan.ceph.blue:443 s3 ls s3://unidirectional
2024-02-0217:56:09233 fil1
2024-02-0217:56:10233 fil2
2024-02-0217:56:11233 fil3
2024-02-0218:03:51233 fil5
2024-02-0218:04:37233 fil6
2024-02-0218:09:08233 fil7
[root@ceph-node-00 ~]# aws --endpoint http://object.s3.zone2.dan.ceph.blue:80 s3 ls s3://unidirectional
2024-02-0217:56:09233 fil1
2024-02-0217:56:10233 fil2
2024-02-0217:56:11233 fil3
2024-02-0217:57:49233 fil4
2024-02-0218:03:51233 fil5
2024-02-0218:04:37233 fil6
2024-02-0218:09:08233 fil7
[root@ceph-node-00 ~]# aws --endpoint http://object.s3.zone2.dan.ceph.blue:80 s3 ls s3://backupbucket
2024-02-0217:56:09233 fil1
2024-02-0217:56:10233 fil2
2024-02-0217:56:11233 fil3
2024-02-0218:03:51233 fil5
2024-02-0218:04:37233 fil6
2024-02-0218:09:08233 fil7

我们将所有对象复制到所有存储桶中——除了fil4。这是满足预期的,因为文件已上传到zone2,并且我们的复制是单向的,因此从zone2zone1没有同步。

如果我们查询backupbucketsync info会输出什么?此存储桶仅在另一个存储桶策略中引用,但存储桶backupbucket没有自己的同步策略:

[root@ceph-node-00 ~]# ssh ceph-node-04 radosgw-admin sync info --bucket backupbucket
{
"sources": [],
"dests": [],
"hints": {
"sources": [
"unidirectional:66df8c0a-c67d-4bd7-9975-bc02a549f13e.36430.1"
        ],
"dests": []
    },
"resolved-hints-1": {
"sources": [
            {
"id": "test-pipe2",
"source": {
"zone": "zone1",
"bucket": "unidirectional:66df8c0a-c67d-4bd7-9975-bc02a549f13e.36430.1"
                },
"dest": {
"zone": "zone2",
"bucket": "backupbucket"
                },

对于这种情况,我们使用hints ,因此即使备份没有直接参与unidirectionalbucket同步策略,也会通过hint来引用。

[!CAUTION] 请注意,在输出中,我们可以看到,存储桶backupbucket间接找到了有关存储桶unidirectional信息,而不是从其自己的策略中发现:backupbucket本身的策略为空。

03

存储桶同步策略注意事项

有一点需要注意,元数据始终会同步到其他区域,与存储桶同步策略无关。因此,每个用户和存储桶,即使未配置复制,也会显示在属于区域组的所有区域中。

举个例子,让我们创建一个名为newbucket的新存储桶:

[root@ceph-node-00 ~]# aws  --endpoint http://object.s3.zone2.dan.ceph.blue:80 s3 mb s3://newbucket
make_bucket: newbucket

我们确认此存储桶没有配置任何复制:

[root@ceph-node-00 ~]# radosgw-admin bucket sync checkpoint --bucket newbucket
Sync is disabled for bucket newbucket

但所有元数据都会同步到辅助区域,以便存储桶将出现在zone2中。无论如何,桶内的数据都不会被复制。

[root@ceph-node-00 ~]# aws  --endpoint https://object.s3.zone2.dan.ceph.blue:443 s3 ls | grep newbucket
2024-02-0202:22:31 newbucket

另一件需要注意的事情是,在为存储桶配置同步策略之前上传的对象不会同步到其他区域,直到我们在启用存储桶同步后上传对象。当我们将新对象上传到存储桶时,此示例会同步:

[root@ceph-node-00 ~]# aws  --endpoint https://object.s3.zone1.dan.ceph.blue:443 s3 ls  s3://objectest1/
2024-02-0204:03:47233 file1
2024-02-0204:03:50233 file2
2024-02-0204:03:53233 file3
2024-02-0204:27:19233 file4

[root@ceph-node-00 ~]# ssh ceph-node-04 radosgw-admin bucket sync checkpoint --bucket objectest1
2024-02-02T04:17:15.596-05007fc00c51f800  1 waiting to reach incremental sync..
2024-02-02T04:17:17.599-05007fc00c51f800  1 waiting to reach incremental sync..
2024-02-02T04:17:19.601-05007fc00c51f800  1 waiting to reach incremental sync..
2024-02-02T04:17:21.603-05007fc00c51f800  1 waiting to reach incremental sync..

[root@ceph-node-00 ~]# aws  --endpoint https://object.s3.zone1.dan.ceph.blue:443 s3 cp /etc/hosts  s3://objectest1/file4
upload: ../etc/hosts to s3://objectest1/file4
[root@ceph-node-00 ~]# radosgw-admin bucket sync checkpoint --bucket objectest1
2024-02-02T04:27:29.975-05007fce4cf11800  1 bucket sync caught up with source:
      local status: [00000000001.569.6, , 00000000001.47.6, , , , 00000000001.919.6, 00000000001.508.6, , , ]
    remote markers: [00000000001.569.6, , 00000000001.47.6, , , , 00000000001.919.6, 00000000001.508.6, , , ]
[root@ceph-node-00 ~]# aws --endpoint https://object.s3.zone2.dan.ceph.blue:443 s3 ls s3://objectest1
2024-02-0204:03:47233 file1
2024-02-0204:03:50233 file2
2024-02-0204:03:53233 file3
2024-02-0204:27:19233 file4

当存储桶同步策略处于allowedforbidden状态时创建、修改或删除的对象,再次启用该策略时将不会自动同步。

我们需要运行bucket sync run命令来同步这些对象并使两个区域中的存储桶保持同步。例如,我们禁用存储桶objectest1的同步,并将几个对象放入zone1中,即使我们再次启用复制,这些对象也不会复制到zone2中。

[root@ceph-node-00 ~]# radosgw-admin sync group create --bucket=objectest1 --group-id=objectest1-1 --status=forbidden
[root@ceph-node-00 ~]# aws  --endpoint https://object.s3.zone1.dan.ceph.blue:443 s3 cp /etc/hosts  s3://objectest1/file5
upload: ../etc/hosts to s3://objectest1/file5
[root@ceph-node-00 ~]# aws  --endpoint https://object.s3.zone1.dan.ceph.blue:443 s3 cp /etc/hosts  s3://objectest1/file6
upload: ../etc/hosts to s3://objectest1/file6
[root@ceph-node-00 ~]# radosgw-admin sync group create --bucket=objectest1 --group-id=objectest1-1 --status=enabled
[root@ceph-node-00 ~]# aws --endpoint http://object.s3.zone2.dan.ceph.blue:80 s3 ls s3://objectest1
2024-02-0204:03:47233 file1
2024-02-0204:03:50233 file2
2024-02-0204:03:53233 file3
2024-02-0204:27:19233 file4
[root@ceph-node-00 ~]# aws  --endpoint https://object.s3.zone1.dan.ceph.blue:443 s3 ls  s3://objectest1/
2024-02-0204:03:47233 file1
2024-02-0204:03:50233 file2
2024-02-0204:03:53233 file3
2024-02-0204:27:19233 file4
2024-02-0204:44:45233 file5
2024-02-0204:45:38233 file6

为了使存储桶恢复同步,我们从目标区域使用radosgw-admin sync run命令。

[root@ceph-node-00 ~]# ssh ceph-node-04 radosgw-admin bucket sync run --source-zone zone1 --bucket objectest1
[root@ceph-node-00 ~]# aws --endpoint http://object.s3.zone2.dan.ceph.blue:80 s3 ls s3://objectest1
2024-02-0204:03:47233 file1
2024-02-0204:03:50233 file2
2024-02-0204:03:53233 file3
2024-02-0204:27:19233 file4
2024-02-0204:44:45233 file5
2024-02-0204:45:38233 file6

04

总 结

在本系列的第六部分中,我们继续深入探讨了多站点同步策略,并通过实践示例展示了包括单源到多目标桶的单向复制在内的多种配置方案。

在本系列的下一篇中,我们将介绍归档区域(Archive Zone)功能,该功能能够为生产区域中的所有对象版本维护不可变的副本。

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

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

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-09-02 19:25:06
汽车停在路边车位线内轮胎被放气 始作俑者“霸气喊话”:“就是我放的 你怎么着!”

汽车停在路边车位线内轮胎被放气 始作俑者“霸气喊话”:“就是我放的 你怎么着!”

闪电新闻
2026-09-02 18:25:15
离婚的妇人都是咋和前夫相处的?网友:我就好奇,有没有睡在一起

离婚的妇人都是咋和前夫相处的?网友:我就好奇,有没有睡在一起

带你感受人间冷暖
2026-08-31 00:05:16
日本对华展开报复!中国拒买水产品,日关闭数十年经贸对话窗口

日本对华展开报复!中国拒买水产品,日关闭数十年经贸对话窗口

跳跳历史
2026-09-03 06:26:03
官方:前甲A球员、中甲体能教练拉雷阿于8月22日去世,享年59岁

官方:前甲A球员、中甲体能教练拉雷阿于8月22日去世,享年59岁

懂球帝
2026-09-02 08:47:08
意甲赛季最佳阵容出炉:国米5人入选

意甲赛季最佳阵容出炉:国米5人入选

懂球帝
2026-09-03 05:29:06
老公花18万买电车跑滴滴3年赚18万?车值5万妻破防,网友评论炸锅

老公花18万买电车跑滴滴3年赚18万?车值5万妻破防,网友评论炸锅

林子说事
2026-09-03 00:14:54
一匹会说话的马,如何从被拒到改写美剧史

一匹会说话的马,如何从被拒到改写美剧史

追星雷达站
2026-09-02 03:04:15
威少退役光速转型:出任Project B联合创始人兼首席战略官 不会参赛

威少退役光速转型:出任Project B联合创始人兼首席战略官 不会参赛

醉卧浮生
2026-09-03 07:20:07
原来她是陈观泰第一任妻子,竟是我们熟悉的她,曾未婚生女反被弃

原来她是陈观泰第一任妻子,竟是我们熟悉的她,曾未婚生女反被弃

娱说瑜悦
2026-09-02 18:58:19
女星深夜爆猛料:4女共侍1夫,连61岁也不放过

女星深夜爆猛料:4女共侍1夫,连61岁也不放过

让心灵得以栖息
2026-07-29 12:05:14
大戏开场!印尼首都陷入骚乱,中方海警登船检查,日本集体沉默

大戏开场!印尼首都陷入骚乱,中方海警登船检查,日本集体沉默

一簌月光
2026-09-03 05:09:47
两种鱼最好都戒掉,已被正式列入致癌清单,再馋嘴也要忍住

两种鱼最好都戒掉,已被正式列入致癌清单,再馋嘴也要忍住

王医生健康讲坛
2026-09-01 21:05:03
欧盟就莱比锡机场袭击未遂事件召见俄罗斯大使

欧盟就莱比锡机场袭击未遂事件召见俄罗斯大使

新华社
2026-09-02 16:48:05
吉格斯:11年巴萨在我心中最强,如果无梅西我们当年有能力赢

吉格斯:11年巴萨在我心中最强,如果无梅西我们当年有能力赢

懂球帝
2026-09-02 17:04:32
我出差回家从背后抱住妻子,她无意间的一句话,让身体一僵松开手

我出差回家从背后抱住妻子,她无意间的一句话,让身体一僵松开手

晓艾故事汇
2026-04-29 10:11:56
折腾一年多,莎拉的弹劾大戏,居然以一个极其离谱的姿势收场了

折腾一年多,莎拉的弹劾大戏,居然以一个极其离谱的姿势收场了

阿嘵田侃故事
2026-09-01 15:20:21
吴艳妮日本劲敌福部真子:目标是成为男人 秀大腿和腹肌引网友惊呼

吴艳妮日本劲敌福部真子:目标是成为男人 秀大腿和腹肌引网友惊呼

劲爆体坛
2026-09-02 10:19:19
CCTV5直播亚运揭幕战,最强U23国足首秀,输球恐难小组出线

CCTV5直播亚运揭幕战,最强U23国足首秀,输球恐难小组出线

玫瑰刺青渗毒液q
2026-09-02 05:54:26
桂圆和它是绝配!立秋开水一冲,虚火降了气血足,一觉睡到大天亮

桂圆和它是绝配!立秋开水一冲,虚火降了气血足,一觉睡到大天亮

华庭讲美食
2026-09-02 12:13:25
2026-09-03 08:00:49
新钛云服
新钛云服
云管理服务专家
484文章数 30关注度
往期回顾 全部

科技要闻

凌晨最强模型上新,Claude Fable 5.1发布

头条要闻

大量游客在上海外滩看到刺眼绿光:照得眼睛很不舒服

头条要闻

大量游客在上海外滩看到刺眼绿光:照得眼睛很不舒服

体育要闻

一次有奖问答,让他成为欧冠主帅

娱乐要闻

香港武打影星陈观泰离世,终年80岁

财经要闻

星宇股份的麻烦,才刚开始

汽车要闻

配双腔空悬+机械差速锁 传祺越7预售权益价17.18万起

态度原创

艺术
本地
数码
健康
公开课

艺术要闻

法国现代艺术大师,马蒂斯作品欣赏!

本地新闻

昆明的雨,解锁汪曾祺的浪漫雨季

数码要闻

配备摄像头的AirPods或将进一步提升空间音频头部追踪效果

越吃越爆痘?医生讲清7大真相

公开课

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

无障碍浏览 进入关怀版