- Ceph物件閘道器,多區域閘道器
- 1. 檔案系統與物件儲存的區別
- 1.1 物件儲存使用場景
- 1.2 物件儲存的介面標準
- 1.3 桶(bucket)
- 2. rgw
- 2.1 物件儲存認證
- 2.2 物件閘道器所涉概念
- 2.3 可用區和ceph叢集的關係
- 3. 部署物件閘道器
- 3.1 建立realm
- 3.1.1 列出所有的realm
- 3.1.2 列出某個realm的詳細資訊
- 3.1.3 刪除某個realm
- 3.2 建立zonegroup
- 3.2.1 修改zonegroup為主
- 檢視zonegroup
- 3.3 建立zone
- 3.3.1 檢視儲存池
- 3.3.2 更新配置
- 3.3.3 驗證id是否變更
- 3.4 建立rgw
- 3.4.1 訪問埠
- 3.1 建立realm
- 4. 使用物件儲存
- 4.1 使用者管理
- 4.1.1 建立使用者
- 4.1.2 給使用者生成key
- 4.1.3 檢視使用者列表
- 4.1.3 建立子使用者
- 4.1.4 子使用者許可權
- 4.2 bucket管理
- 4.2.1 測試子使用者許可權
- 4.2.2 列出桶
- 4.3 資料操作
- 4.3.1 上傳物件
- 4.3.2 檢視容器內容
- 4.3.3 使用s3協議
- 4.1 使用者管理
- 5. 物件儲存多區域閘道器
- 5.1 配置多區域閘道器 (原叢集操作)
- 5.1.1 建立系統賬戶
- 5.1.2 繫結使用者與zone
- 5.1.3 宣告 realm,zonegroup,zone
- 5.1.4 更新叢集period
- 5.1.5 重啟rgw
- 5.2 secondary 配置
- 5.2.1 拉取realm
- 5.2.2 同步period
- 5.2.3 建立zone
- 5.2.4 建立rgw閘道器
- 5.2.5 將閘道器加入zone
- 5.2.6 更新period
- 5.2.7 重啟服務
- 5.2.8 驗證同步
- 5.1.1 建立系統賬戶
- 1. 檔案系統與物件儲存的區別
Ceph物件閘道器,多區域閘道器
ceph最基礎的元件是mon,mgr,osd,有了這3個元件之後ceph就可以提供塊儲存的能力,但是僅僅只有這一個能力,如果需要提供檔案系統儲存,那麼就需要部署mds
如果還需要提供物件儲存的話,那麼就需要部署rgw (rados gateway)對外提供物件儲存
1. 檔案系統與物件儲存的區別
檔案系統是允許使用者進行增刪改查這4個操作的,但是物件儲存只允許增,刪,查,並不允許修改,在ceph叢集中,物件儲存預設會將檔案切分成4M的大小,不足4M的按原大小
物件儲存的概念最早是由AWS提出,並且也搞了一個標準叫做s3(Simple Storage Service )
1.1 物件儲存使用場景
- 圖片
- 影片
- 映象檔案
- 大檔案,修改少(基本不修改)
1.2 物件儲存的介面標準
-
- s3(來源於AWS)
-
- swift(來源於OpenStack)
1.3 桶(bucket)
桶是物件儲存裡的一個邏輯概念,所有的物件都是存放在桶裡的,但是之前說過,ceph上所有的資料都屬存放在pg上,那他到底是存在桶裡還是存在pg裡?那pg是在桶上呢還是桶在pg上呢?
要搞清楚這個問題還得回到ceph,因為pg這個概念是存在於ceph上的,而如果我們底層的儲存系統不是用的ceph呢?是minio呢,他是不是也有pg呢?很顯然,答案是不對的,所以物件儲存不管你底層儲存是把資料往哪放,反正我,就只往桶裡放,至於你把我的桶放在哪,那是你的事,你自己安排就好
2. rgw
- 負責接收http請求(s3,swift)
- 實現桶的邏輯
- 物件
- 資料
- 後設資料
- 物件ID
rgw不屬於ceph的服務端元件,是屬於ceph的客戶端元件,這樣做是因為物件儲存是提供的http地址,然而ceph服務端是沒有提供http地址的,所以將rgw放在客戶端,當使用者請求http地址時,使用者此時並不需要安裝ceph客戶端,只需要發起http請求,客戶端此時再去請求服務端。
2.1 物件儲存認證
物件儲存認證是基於桶的認證,這個與cephx的認證是不一樣的
他需要使用者提供AK,SK。
也就是說現在某個使用者需要存放一個檔案到ceph的物件儲存裡面,他需要請求ceph客戶端,並於ceph客戶端rgw完成認證,此時ceph客戶端再去與ceph服務端完成cephx的認證
2.2 物件閘道器所涉概念
- Realm 領域
- 一個realm中可以有一個或多個區域,但是有且僅有一個 master zonegroup,同一個Realm下的同一個zonegroup下的多個zone之間的資料是自動同步的
- Zonegroup 區域組
- 一個zonegroup中有一個或多個zone,但是有且僅有一個master zone,同一個zonegroup下的多個zone會同步資料
- zone 區域
- 一個zone中有一個或多個rgw
- rgw
2.3 可用區和ceph叢集的關係
- 一個zone一定只屬於一個ceph叢集
- 一個ceph叢集當中可以有多個zone
3. 部署物件閘道器
3.1 建立realm
[root@ceph01 ~]# radosgw-admin realm create --rgw-realm=for_swift
{
"id": "286f9296-569d-45e0-b690-4069e3f0d6bc",
"name": "for_swift",
"current_period": "89a157fc-baf4-4f5f-a4c7-884dc87c0be0",
"epoch": 1
}
現在建立了realm,有realm他後面肯定會有他的zonegroup,那麼這些資訊記錄在哪呢?肯定是配置檔案裡面啊,每一個realm會有自己的配置檔案來記錄他這裡面的zonegroup,zone,rgw。他的配置檔案就叫peri,而peri會有一個ID,而現在這個配置檔案裡面是沒有東西的,當後面建立了zonegroup之後這個配置檔案就需要更新,那麼這個ID也是會隨著更新的,那麼會更新就會有一個東西來記錄他的版本,也就是更新了多少次
這裡顯示的current_period 就是他配置檔案的ID
epoch就是配置檔案的版本
3.1.1 列出所有的realm
[root@ceph01 ~]# radosgw-admin realm list
{
"default_info": "286f9296-569d-45e0-b690-4069e3f0d6bc",
"realms": [
"for_swift"
]
}
3.1.2 列出某個realm的詳細資訊
[root@ceph01 ~]# radosgw-admin realm get --rgw-realm for_swift
{
"id": "286f9296-569d-45e0-b690-4069e3f0d6bc",
"name": "for_swift",
"current_period": "89a157fc-baf4-4f5f-a4c7-884dc87c0be0",
"epoch": 1
}
3.1.3 刪除某個realm
# 先建立一個
[root@ceph01 ~]# radosgw-admin realm create --rgw-realm test
{
"id": "3d366d9c-b948-4d4d-8e15-d19a72579d77",
"name": "test",
"current_period": "d38a8be8-0d85-4244-8879-9e222761defb",
"epoch": 1
}
# 刪掉他
[root@ceph01 ~]# radosgw-admin realm delete --rgw-realm test
3.2 建立zonegroup
[root@ceph01 ~]# radosgw-admin zonegroup create --rgw-realm for_swift --rgw-zonegroup for_swift
{
"id": "2b382a98-0c66-4ec3-b7d5-8cdbf1f6b93c",
"name": "for_swift",
"api_name": "for_swift",
"is_master": "false",
"endpoints": [],
"hostnames": [],
"hostnames_s3website": [],
"master_zone": "",
"zones": [],
"placement_targets": [],
"default_placement": "",
"realm_id": "286f9296-569d-45e0-b690-4069e3f0d6bc",
"sync_policy": {
"groups": []
}
}
3.2.1 修改zonegroup為主
[root@ceph01 ~]# radosgw-admin zonegroup modify --rgw-realm for_swift --rgw-zonegroup for_swift --default --master
{
"id": "2b382a98-0c66-4ec3-b7d5-8cdbf1f6b93c",
"name": "for_swift",
"api_name": "for_swift",
"is_master": "true",
"endpoints": [],
"hostnames": [],
"hostnames_s3website": [],
"master_zone": "",
"zones": [],
"placement_targets": [],
"default_placement": "",
"realm_id": "286f9296-569d-45e0-b690-4069e3f0d6bc",
"sync_policy": {
"groups": []
}
}
現在他的is-master就是true
檢視zonegroup
[root@ceph01 ~]# radosgw-admin zonegroup get --rgw-realm for_swift --rgw-zonegroup for_swift
{
"id": "2b382a98-0c66-4ec3-b7d5-8cdbf1f6b93c",
"name": "for_swift",
"api_name": "for_swift",
"is_master": "true",
"endpoints": [],
"hostnames": [],
"hostnames_s3website": [],
"master_zone": "",
"zones": [],
"placement_targets": [],
"default_placement": "",
"realm_id": "286f9296-569d-45e0-b690-4069e3f0d6bc",
"sync_policy": {
"groups": []
}
}
3.3 建立zone
[root@ceph01 ~]# radosgw-admin zone create --rgw-realm for_swift --rgw-zonegroup for_swift --rgw-zone for_swift --master --default
{
"id": "5ee18ff4-9b1d-41fd-83bb-3f363634fb1f",
"name": "for_swift",
"domain_root": "for_swift.rgw.meta:root",
"control_pool": "for_swift.rgw.control",
"gc_pool": "for_swift.rgw.log:gc",
"lc_pool": "for_swift.rgw.log:lc",
"log_pool": "for_swift.rgw.log",
"intent_log_pool": "for_swift.rgw.log:intent",
"usage_log_pool": "for_swift.rgw.log:usage",
"roles_pool": "for_swift.rgw.meta:roles",
"reshard_pool": "for_swift.rgw.log:reshard",
"user_keys_pool": "for_swift.rgw.meta:users.keys",
"user_email_pool": "for_swift.rgw.meta:users.email",
"user_swift_pool": "for_swift.rgw.meta:users.swift",
"user_uid_pool": "for_swift.rgw.meta:users.uid",
"otp_pool": "for_swift.rgw.otp",
"system_key": {
"access_key": "",
"secret_key": ""
},
"placement_pools": [
{
"key": "default-placement",
"val": {
"index_pool": "for_swift.rgw.buckets.index",
"storage_classes": {
"STANDARD": {
"data_pool": "for_swift.rgw.buckets.data"
}
},
"data_extra_pool": "for_swift.rgw.buckets.non-ec",
"index_type": 0
}
}
],
"realm_id": "286f9296-569d-45e0-b690-4069e3f0d6bc",
"notif_pool": "for_swift.rgw.log:notif"
}
可以看到他自己建立了很多儲存池
3.3.1 檢視儲存池
[root@ceph01 ~]# ceph osd pool ls
device_health_metrics
test_pool
test02
rbd
mv_rbd
cephfs_data
cephfs_metadata
.rgw.root
default.rgw.log
default.rgw.control
default.rgw.meta
3.3.2 更新配置
[root@ceph01 ~]# radosgw-admin period update --commit --rgw-realm for_swift
如果你的realm是預設的那麼就可以不加上 --rgw-realm,不是預設的就需要指定
3.3.3 驗證id是否變更
[root@ceph01 ~]# radosgw-admin realm get
{
"id": "286f9296-569d-45e0-b690-4069e3f0d6bc",
"name": "for_swift",
"current_period": "ace39846-04f4-46ba-8601-52f98aafeb1a",
"epoch": 2
}
3.4 建立rgw
[root@ceph01 ~]# ceph orch apply rgw for_swift --placement="1"
Scheduled rgw.for_swift update...
--placement="1" 指的是部署幾個rgw
預設監聽在80埠,如果想修改埠在建立的時候加上 --port
3.4.1 訪問埠
[root@ceph01 ~]# curl 10.104.45.241
<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>
可以有正常的返回值
4. 使用物件儲存
4.1 使用者管理
4.1.1 建立使用者
[root@ceph01 ~]# radosgw-admin user create --uid=testuser --display-name=testuser
省略其他輸出
"keys": [
{
"user": "testuser",
"access_key": "ZAKFA4A9WRJYI4J059NK",
"secret_key": "6TIZZpCMJVd5fcJcblBwgD7RepMk0gkglLONIBLj"
}
],
建立使用者的時候會返回AK SK,但是AK SK 是s3標準的,如果使用swift的話這個是用不了的,因為這個使用者就是s3使用者
如果想要使用swift則還需要建立子使用者
4.1.2 給使用者生成key
[root@ceph01 ~]# radosgw-admin key create --uid=testuser --key-type s3 --gen-access-key --gen-secret
{
"user_id": "testuser",
"display_name": "testuser",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"subusers": [],
"keys": [
{
"user": "testuser",
"access_key": "2EQ7K1XY4GU19C6IK694",
"secret_key": "nWoV1B4DZ40bh5CI6BxqkzgAbH3WhFDCHGLEHq6G"
},
{
"user": "testuser",
"access_key": "ZAKFA4A9WRJYI4J059NK",
"secret_key": "6TIZZpCMJVd5fcJcblBwgD7RepMk0gkglLONIBLj"
}
],
這個時候這個使用者就有2個key了
4.1.3 檢視使用者列表
[root@ceph01 ~]# radosgw-admin user list
[
"dashboard",
"testuser"
]
使用user list也是可以檢視到使用者的
4.1.3 建立子使用者
[root@ceph01 ~]# radosgw-admin subuser create --uid=testuser --subuser testuser:swift
{
"user_id": "testuser",
"display_name": "testuser",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"subusers": [
{
"id": "testuser:swift",
"permissions": "<none>"
}
],
"keys": [
{
"user": "testuser",
"access_key": "2EQ7K1XY4GU19C6IK694",
"secret_key": "nWoV1B4DZ40bh5CI6BxqkzgAbH3WhFDCHGLEHq6G"
},
{
"user": "testuser",
"access_key": "ZAKFA4A9WRJYI4J059NK",
"secret_key": "6TIZZpCMJVd5fcJcblBwgD7RepMk0gkglLONIBLj"
}
],
"swift_keys": [
{
"user": "testuser:swift",
"secret_key": "gkstooSlkc7Ylf5Czrvzo8TxrgUY3egOW1lKBvSg"
}
],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"default_storage_class": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"temp_url_keys": [],
"type": "rgw",
"mfa_ids": []
}
因為建立的是子使用者,所以需要指定主使用者 --uid
再去指定子使用者的型別 --subuser 主使用者:子使用者名稱
現在他的swift—key裡面就有資料了
4.1.4 子使用者許可權
[root@ceph01 ~]# radosgw-admin subuser modify --uid testuser --subuser testuser:swift --access full
{
"user_id": "testuser",
"display_name": "testuser",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"subusers": [
{
"id": "testuser:swift",
"permissions": "full-control"
}
],
"keys": [
{
"user": "testuser",
"access_key": "2EQ7K1XY4GU19C6IK694",
"secret_key": "nWoV1B4DZ40bh5CI6BxqkzgAbH3WhFDCHGLEHq6G"
},
{
"user": "testuser",
"access_key": "ZAKFA4A9WRJYI4J059NK",
"secret_key": "6TIZZpCMJVd5fcJcblBwgD7RepMk0gkglLONIBLj"
}
],
"swift_keys": [
{
"user": "testuser:swift",
"secret_key": "gkstooSlkc7Ylf5Czrvzo8TxrgUY3egOW1lKBvSg"
}
],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"default_storage_class": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"temp_url_keys": [],
"type": "rgw",
"mfa_ids": []
}
預設建立出來時候是沒有許可權的,所以需要給他對bucket的許可權
4.2 bucket管理
buket建立必須使用rgw客戶端來建立,所以必須建立客戶端
[root@ceph01 ~]# yum install python3-pip -y
[root@ceph01 ~]# pip install python-swiftclient -i https://pypi.tuna.tsinghua.edu.cn/simple
4.2.1 測試子使用者許可權
[root@ceph01 ~]# swift -A http://10.104.45.241/auth/1.0 -U 'testuser:swift' -K gkstooSlkc7Ylf5Czrvzo8TxrgUY3egOW1lKBvSg stat -v --insecure
StorageURL: http://10.104.45.241/swift/v1
Auth Token: AUTH_rgwtk0e00000074657374757365723a73776966746f562e87af90cca359615566a440ca284b82d38246a602414f5ea2aae59df914a4751ba2
Account: v1
Containers: 0
Objects: 0
Bytes: 0
Objects in policy "default-placement-bytes": 0
Bytes in policy "default-placement-bytes": 0
Containers in policy "default-placement": 0
Objects in policy "default-placement": 0
Bytes in policy "default-placement": 0
X-Timestamp: 1716785113.68986
X-Account-Bytes-Used-Actual: 0
X-Trans-Id: tx00000fd31d0a72e2fdcc4-0066540fd9-1005d-for_swift
X-Openstack-Request-Id: tx00000fd31d0a72e2fdcc4-0066540fd9-1005d-for_swift
Accept-Ranges: bytes
Content-Type: text/plain; charset=utf-8
Connection: Keep-Alive
4.2.2 列出桶
# 在客戶端
[root@ceph01 ~]# swift -A http://10.104.45.241/auth/1.0 -U 'testuser:swift' -K gkstooSlkc7Ylf5Czrvzo8TxrgUY3egOW1lKBvSg list
hosts
# 在服務端
[root@ceph01 ~]# radosgw-admin bucket list
[
"hosts"
]
4.3 資料操作
4.3.1 上傳物件
將/etc/hosts 上傳到桶,其實在swift裡面是叫做容器,不過只是名字不同
[root@ceph01 ~]# swift -A http://10.104.45.241/auth/1.0 -U 'testuser:swift' -K gkstooSlkc7Ylf5Czrvzo8TxrgUY3egOW1lKBvSg upload hosts /etc/hosts
etc/hosts
4.3.2 檢視容器內容
[root@ceph01 ~]# swift -A http://10.104.45.241/auth/1.0 -U 'testuser:swift' -K gkstooSlkc7Ylf5Czrvzo8TxrgUY3egOW1lKBvSg list hosts -v
etc/hosts
4.3.3 使用s3協議
這個非常的簡單,下載一個s3客戶端,s3 browser 直接連線
5. 物件儲存多區域閘道器
多區域就是如果還有另一個ceph叢集,想要跟目前的ceph叢集裡的zone資料保持同步,那麼另一個ceph叢集也需要有realm、onegroup,需要2個ceph叢集內名稱保持一致,zone裡面又會有rgw,你有你的rgw,我有我的rgw,資料就是透過這兩個rgw來同步的,無論是從ceph1叢集還是從ceph2叢集來運算元據,這2個叢集內的資料都會發生對應的改變,這就是多區域閘道器。
應用場景:異地容災
大致流程
ceph02叢集需要與ceph01叢集同步資訊,那麼ceph02需要先同步ceph01的realm和zonegroup,然後自行建立zone就可以了,建立完zone之後還需要在zone裡面建立閘道器(rgw),當這兩個建立完成之後,2個叢集的資料會開始同步,第一次是完全同步,後續則是增量同步
5.1 配置多區域閘道器 (原叢集操作)
主zone端的配置:
- 新增一個系統使用者
- 修改主zone,將系統使用者和zone繫結
- 修改rgw的配置,明確其realm,zonegroup,zone
- 更新period
- 重啟rgw服務/程序
5.1.1 建立系統賬戶
需要建立使用者的原因是為了安全,不然的話別人只要知道叢集的IP就能夠同步的話資料就會洩露,所以需要認證,並且使用者還必須是系統使用者
[root@ceph01 ~]# radosgw-admin user create --uid=system-user --display-name=system-user --system
會顯示AK SK
5.1.2 繫結使用者與zone
[root@ceph01 ~]# radosgw-admin zone modify --rgw-realm s3_realm --rgw-zonegroup s3_zonegroup --rgw-zone s3_zone --master --default --access-key GR135X3HXX6PQQRXI8QW --secret 7Z9SMnsaL92j7HDyEcihtTsPBPVzqYglek4m6Qk3 --endpoints "http://10.104.45.240,http://10.104.45.241,http://10.104.45.243"
只看這部分資訊
"system_key": {
"access_key": "GR135X3HXX6PQQRXI8QW",
"secret_key": "7Z9SMnsaL92j7HDyEcihtTsPBPVzqYglek4m6Qk3"
},
- endpoints:指定rgw的地址,有幾個寫幾個,逗號分隔
- access-key:輸入剛剛建立系統使用者的AK
- secret:輸入剛剛建立系統使用者的SK
5.1.3 宣告 realm,zonegroup,zone
有幾個rgw就需要操作幾次,我這裡是3個
[root@ceph01 ~]# ceph config set client.rgw.s3_realm.ceph01.msvmsr rgw_realm s3_realm
[root@ceph01 ~]# ceph config set client.rgw.s3_realm.ceph01.msvmsr rgw_zonegroup s3_zonegroup
[root@ceph01 ~]# ceph config set client.rgw.s3_realm.ceph01.msvmsr rgw_zone s3_zone
[root@ceph01 ~]# ceph config set client.rgw.s3_realm.ceph02.vqvztu rgw_realm s3_realm
[root@ceph01 ~]# ceph config set client.rgw.s3_realm.ceph02.vqvztu rgw_zonegroup s3_zonegroup
[root@ceph01 ~]# ceph config set client.rgw.s3_realm.ceph02.vqvztu rgw_zone s3_zone
[root@ceph01 ~]# ceph config set client.rgw.s3_realm.ceph03.cexvyj rgw_realm s3_realm
[root@ceph01 ~]# ceph config set client.rgw.s3_realm.ceph03.cexvyj rgw_zonegroup s3_zonegroup
[root@ceph01 ~]# ceph config set client.rgw.s3_realm.ceph03.cexvyj rgw_zone s3_zone
5.1.4 更新叢集period
[root@ceph01 ~]# radosgw-admin period update --commit
5.1.5 重啟rgw
# 重啟之前檢視一下 ceph orch ls
[root@ceph01 ~]# ceph orch restart rgw.s3_realm
Scheduled to restart rgw.s3_realm.ceph01.msvmsr on host 'ceph01'
Scheduled to restart rgw.s3_realm.ceph02.vqvztu on host 'ceph02'
Scheduled to restart rgw.s3_realm.ceph03.cexvyj on host 'ceph03'
5.2 secondary 配置
secondary zone的配置
- 拉取realm資訊
- 拉取最新的period資訊建立自己的zone
- 建立rgw
- 將rgw加入secondary zone
- 更新period
- 重啟rgw服務/程序
- 檢測是否有資料同步
5.2.1 拉取realm
[root@m-rgw ~]# radosgw-admin realm pull --url http://10.104.45.240 --access-key GR135X3HXX6PQQRXI8QW --secret 7Z9SMnsaL92j7HDyEcihtTsPBPVzqYglek4m6Qk3
2024-06-01T14:51:02.345+0800 7f449d3fa2c0 1 error read_lastest_epoch .rgw.root:periods.699f662a-c436-4179-8f7e-8a6d40b188f3.latest_epoch
2024-06-01T14:51:02.359+0800 7f449d3fa2c0 1 Set the period's master zonegroup 09b8465b-a516-4464-b01d-9d8f8b6a1629 as the default
{
"id": "09c4ff84-8900-48a5-99ea-5a403754ca4f",
"name": "s3_realm",
"current_period": "699f662a-c436-4179-8f7e-8a6d40b188f3",
"epoch": 2
}
# 拉取完成之後在本地可以使用 radosgw-admin realm list 去檢視
5.2.2 同步period
[root@m-rgw ~]# radosgw-admin period pull --url http://10.104.45.240 --access-key GR135X3HXX6PQQRXI8QW --secret 7Z9SMnsaL92j7HDyEcihtTsPBPVzqYglek4m6Qk3
5.2.3 建立zone
[root@m-rgw ~]# radosgw-admin zone create --rgw-realm s3_realm --rgw-zonegroup s3_zonegroup --rgw-zone s3_zone_backup --access-key GR135X3HXX6PQQRXI8QW --secret 7Z9SMnsaL92j7HDyEcihtTsPBPVzqYglek4m6Qk3 --endpoints "http://10.104.45.244"
- zone的名稱就不能再與之前的一致了
- endpoints是指定本地的閘道器地址
5.2.4 建立rgw閘道器
[root@m-rgw ~]# ceph orch apply rgw s3_backup --placement=1
Scheduled rgw.s3_backup update...
5.2.5 將閘道器加入zone
[root@m-rgw ~]# ceph config set client.rgw.s3_backup.m-rgw.ftwpgm rgw_realm s3_realm
[root@m-rgw ~]# ceph config set client.rgw.s3_backup.m-rgw.ftwpgm rgw_zonegroup s3_zonegroup
[root@m-rgw ~]# ceph config set client.rgw.s3_backup.m-rgw.ftwpgm rgw_zone s3_zone_bakcup
- 這裡的zone是本地的zone
5.2.6 更新period
[root@m-rgw ~]# radosgw-admin period update --commit
- 這一步操作得等一會
5.2.7 重啟服務
[root@m-rgw ~]# ceph orch restart rgw.s3_backup
5.2.8 驗證同步
# 直接檢視使用者,bucket是否同步
[root@m-rgw ~]# radosgw-admin user list
[
"system-user",
"dashboard",
"s3"
]
[root@m-rgw ~]# radosgw-admin bucket list
[
"media"
]
可以看到s3使用者已經同步過來了,bucket也有了
也可以直接使用命令檢視同步狀態
[root@m-rgw ~]# radosgw-admin sync status
[root@m-rgw ~]# radosgw-admin sync status
realm 09c4ff84-8900-48a5-99ea-5a403754ca4f (s3_realm)
zonegroup 09b8465b-a516-4464-b01d-9d8f8b6a1629 (s3_zonegroup)
zone abee3a3c-4789-4669-82e5-7219785cd76a (s3_zone_backup)
metadata sync syncing
full sync: 0/64 shards
incremental sync: 64/64 shards
metadata is caught up with master
data sync source: ab90bfa5-4dec-4136-b804-939c80e15d5b (s3_zone)
syncing
full sync: 8/128 shards
full sync: 8 buckets to sync
incremental sync: 120/128 shards
data is behind on 8 shards
behind shards: [82,83,84,85,87,88,90,92]