Ceph 之Multisite 下的bucket reshard

一、背景和問題

默認情況下只有當單個bucket承載的object數量過多,導致omap過大會導致性能問題。在L 版之前需要線下reshard,從L 版開始支持線上自動reshard,默認rgw dynamic resharding 是開啓的。但是在開啓了Multisite的情況下,一旦對bucket進行了reshard操作,則會破壞原有的元數據對應規則,導致對應的bucket無法進行數據同步。所以L 版在後面的一個pr 禁用了multisite 下自動的reshard1。multisite 對於omap 過大的問題,需要手動reshard,生產環境上有很大風險。所以事先規劃好bucket 對象數上限和num_shard 是必要的。

二、bucket reshard 過程

主集羣信息彙總

查看當前集羣狀態:

## ceph -s

查看當前主集羣的存儲桶列表:

## radosgw-admin bucket list

在存儲桶數量不多的情況下,依次查看各個存儲桶的狀態信息,重點關注num shards, num_objects

## radosgw-admin bucket stats --bucket=test1
## rados -p default.rgw.buckets.index ls|grep <bucket-id>

獲取IO 路徑

## ceph osd map default.rgw.buckets.index .dir.a5ef9049-a15b-48b5-9a28-1692590e8752.24166.24.0   // 指定索引對象

Multisite 下手動reshard

1.查看主集羣狀態,確認同步完成,並沒有新的寫入:

[master]# radosgw-admin sync status

2.從集羣檢查

[slave]# radosgw-admin sync status

3.主集羣上關閉對應bucket的sync

[master]# radosgw-admin sync disable --bucket=test1
[master]# radosgw-admin sync status --bucket=test1

4.主、備集羣停掉所有RGW 服務

[master]# systemctl stop ceph-radosgw@rgw.`hostname -s`
[slave]# systemctl stop ceph-radosgw@rgw.`hostname -s`

5.主集羣上的任意節點執行下面操作,手工對指定bucket 做reshard,記錄對應的old bucket instance id:

[master]# radosgw-admin bucket reshard --bucket=test1 --num-shards=<N>
*** NOTICE: operation will not remove old bucket index objects ***
*** these will need to be removed manually ***
tenant:
bucket name: test1
old bucket instance id: e8921092-c7e8-42d8-80d1-5e83c25d5661.72254.1
new bucket instance id: e8921092-c7e8-42d8-80d1-5e83c25d5661.72437.1
total entries: 6

6.從集羣刪除bucket所有數據,同時清除bucket

[slave]# radosgw-admin bucket rm --purge-objects --bucket=test1
[slave]# radosgw-admin bucket list

7.主集羣,刪除舊bucket的bi信息

[master# radosgw-admin bi purge --bucket-id="" --bucket=test1

8.啓動所有主、從節點上的rgw服務

[master]# systemctl start ceph-radosgw@rgw.`hostname -s`
[slave]# systemctl start ceph-radosgw@rgw.`hostname -s`

9.主集羣重新開啓對應bucket的sync,等待主集羣裏面的數據慢慢同步回從集羣

[master]# radosgw-admin sync enable --bucket=test1
[master]# radosgw-admin sync status --bucket=test1

References

1.https://github.com/ceph/ceph/pull/18184
2.https://mp.weixin.qq.com/s/ckrYnvlOjQlta_JdryCauA
3.https://cloud.tencent.com/developer/article/1400660
4.https://cloud.tencent.com/developer/article/1378031

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章