Ceph rgw multi-tenancy多租戶實測

1.簡介

1.1 本文解決什么問題?

  • 如何在ceph對象存儲創(chuàng)建使用同名用戶
  • 如何在ceph對象存儲中創(chuàng)建使用同名bucket

1.2問題描述

公司有2個張三庵佣,一天北京的張三在使用公司對象存儲用自己的名字創(chuàng)建用戶時歉胶,提示用戶已存在,原來上海的張三搶先創(chuàng)建了“張三”的用戶巴粪,那么現在就存在一個問題:在不重起用戶名的情況下怎么創(chuàng)建2個張三呢(即為同名用戶)通今?(此段為做作的引入,肛根,哈哈哈)

1.3multi-tenancy概述

ceph J版本以前辫塌,集群中不允許有同名的bucket和user,這可能在實際使用過程中帶來某些不便派哲。從J版本開始ceph 引入multi-tenancy功能臼氨,將同名user/bucket隔離在不同的tenant下,使同一集群中可創(chuàng)建同名user/bucket芭届。每個user/bucket都位于一個tenant下储矩,相互隔離,各不影響褂乍。為了兼容前版本椰苟,引入隱式空字符串“”tenant,如果創(chuàng)建用戶不顯式指定tenant,則默認加入“”tenant中。每當在沒有顯式tenant的情況下引用user/bucket時垄潮,都會從執(zhí)行操作的用戶那里獲取隱式tenant"".

2 .實測創(chuàng)建同名用戶

測試環(huán)境說明:
ceph版本:Nautilus 14.2.8

創(chuàng)建用戶時摊鸡,可選參數“--tenant”可指定用戶存在 哪個tenant下裕寨,不指定默認為“”
例如創(chuàng)建為北京的張三指定tenant Beijing

[root@node44 ~]#  radosgw-admin user create --tenant=Beijing --uid=zhangsan --display-name="beijing zhangsan" --access-key="beijingzhangsan" --secret-key="daemon"
{
    "user_id": "Beijing$zhangsan",
    "display_name": "beijing zhangsan",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "Beijing$zhangsan",
            "access_key": "beijingzhangsan",
            "secret_key": "daemon"
        }
    ],
    "swift_keys": [],
    "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": []
}

[root@node44 ~]# 

為上海的張三指定tenant為上海

[root@node44 ~]#  radosgw-admin user create --tenant=Shanghai --uid=zhangsan --display-name="shanghai zhangsan" --access-key="shanghaizhangsan" --secret-key="123456"
{
    "user_id": "Shanghai$zhangsan",
    "display_name": "shanghai zhangsan",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "Shanghai$zhangsan",
            "access_key": "shanghaizhangsan",
            "secret_key": "123456"
        }
    ],
    "swift_keys": [],
    "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": []
}

[root@node44 ~]# 

查看創(chuàng)建結果:

[root@node44 ~]# radosgw-admin user list
[
    "Beijing$zhangsan",
    "test",
    "Shanghai$zhangsan"
]
[root@node44 ~]# 

從創(chuàng)建結果可以看出radosgw-admin 創(chuàng)建用戶時指定的--uid均為zhangsan竹习,并未報錯uid已存在伴箩,實際上創(chuàng)建處理的用戶uid為<tenant>$<uid>形式孵班,不指定--tenant情況則為<uid>形式

查看不同tenant下同一用戶名命令:

[root@node44 ~]# radosgw-admin user list
[
    "Beijing$zhangsan",
    "test",
    "Shanghai$zhangsan"
]
[root@node44 ~]# radosgw-admin user info --uid=zhangsan
could not fetch user info: no user info saved
[root@node44 ~]# 
[root@node44 ~]# radosgw-admin user info --uid=zhangsan --tenant Beijing
{
    "user_id": "Beijing$zhangsan",
    "display_name": "beijing zhangsan",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "Beijing$zhangsan",
            "access_key": "beijingzhangsan",
            "secret_key": "daemon"
        }
    ],
    "swift_keys": [],
    "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": []
}

[root@node44 ~]# radosgw-admin user info --uid=zhangsan --tenant Shanghai
{
    "user_id": "Shanghai$zhangsan",
    "display_name": "shanghai zhangsan",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "Shanghai$zhangsan",
            "access_key": "shanghaizhangsan",
            "secret_key": "123456"
        }
    ],
    "swift_keys": [],
    "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": []
}

[root@node44 ~]# 

3.創(chuàng)建同名bucket

創(chuàng)建bucket時赠潦,無需指定tenant叫胖,rgw會根據ak和sk去隔離用戶數據到用戶tenant下,如果在創(chuàng)建用戶時她奥,指定的ak瓮增、sk一樣,會報如下錯:

[root@node44 ~]# radosgw-admin user create --tenant=Chengdu --uid=zhangsan --display-name="shanghai zhangsan" --access-key="shanghaizhangsan" --secret-key="123456"
could not create user: unable to parse parameters, user id mismatch, operation id: Shanghai$zhangsan does not match: Chengdu$zhangsan
[root@node44 ~]# 

通過s3browser創(chuàng)建同名bucket:



查看創(chuàng)建結果:

[root@node44 ~]# radosgw-admin bucket list
[
    "Shanghai/zhangsan_bucket",
    "Beijing/zhangsan_bucket",
    "testbucket"
]
[root@node44 ~]# radosgw-admin bucket stats --bucket=Shanghai/zhangsan_bucket
{
    "bucket": "zhangsan_bucket",
    "num_shards": 8,
    "tenant": "Shanghai",
    "zonegroup": "14b51936-68ca-446c-81d6-88f3bc33f000",
    "placement_rule": "default-placement",
    "explicit_placement": {
        "data_pool": "",
        "data_extra_pool": "",
        "index_pool": ""
    },
    "id": "68ca434f-cfed-432c-87fe-7e28761c05cb.2101966.2",
    "marker": "68ca434f-cfed-432c-87fe-7e28761c05cb.2101966.2",
    "index_type": "Normal",
    "owner": "Shanghai$zhangsan",
    "ver": "0#1,1#1,2#1,3#1,4#1,5#2,6#1,7#1",
    "master_ver": "0#0,1#0,2#0,3#0,4#0,5#0,6#0,7#0",
    "mtime": "2020-12-30 08:20:28.794223Z",
    "max_marker": "0#,1#,2#,3#,4#,5#,6#,7#",
    "usage": {
        "rgw.main": {
            "size": 21084,
            "size_actual": 24576,
            "size_utilized": 21084,
            "size_kb": 21,
            "size_kb_actual": 24,
            "size_kb_utilized": 21,
            "num_objects": 1
        }
    },
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    }
}
[root@node44 ~]# 
[root@node44 ~]# radosgw-admin bucket stats --bucket=Beijing/zhangsan_bucket
{
    "bucket": "zhangsan_bucket",
    "num_shards": 8,
    "tenant": "Beijing",
    "zonegroup": "14b51936-68ca-446c-81d6-88f3bc33f000",
    "placement_rule": "default-placement",
    "explicit_placement": {
        "data_pool": "",
        "data_extra_pool": "",
        "index_pool": ""
    },
    "id": "68ca434f-cfed-432c-87fe-7e28761c05cb.2101966.1",
    "marker": "68ca434f-cfed-432c-87fe-7e28761c05cb.2101966.1",
    "index_type": "Normal",
    "owner": "Beijing$zhangsan",
    "ver": "0#1,1#1,2#1,3#1,4#1,5#2,6#1,7#1",
    "master_ver": "0#0,1#0,2#0,3#0,4#0,5#0,6#0,7#0",
    "mtime": "2020-12-30 08:19:33.146366Z",
    "max_marker": "0#,1#,2#,3#,4#,5#,6#,7#",
    "usage": {
        "rgw.main": {
            "size": 21084,
            "size_actual": 24576,
            "size_utilized": 21084,
            "size_kb": 21,
            "size_kb_actual": 24,
            "size_kb_utilized": 21,
            "num_objects": 1
        }
    },
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    }
}
[root@node44 ~]# 

4.結束

本文只是簡單測試了multi-tenancy功能哩俭,為policy使用前的簡單測試使用了解绷跑,后續(xù)若有問題,持續(xù)更新凡资。
參考鏈接:
https://docs.ceph.com/en/latest/radosgw/multitenancy/#administering-users-with-explicit-tenants

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末砸捏,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子隙赁,更是在濱河造成了極大的恐慌垦藏,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伞访,死亡現場離奇詭異掂骏,居然都是意外死亡,警方通過查閱死者的電腦和手機厚掷,發(fā)現死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門芭挽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蝗肪,你說我怎么就攤上這事袜爪。” “怎么了薛闪?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵辛馆,是天一觀的道長。 經常有香客問我豁延,道長昙篙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任诱咏,我火速辦了婚禮苔可,結果婚禮上,老公的妹妹穿的比我還像新娘袋狞。我一直安慰自己焚辅,他們只是感情好映屋,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著同蜻,像睡著了一般棚点。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上湾蔓,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天瘫析,我揣著相機與錄音,去河邊找鬼默责。 笑死贬循,一個胖子當著我的面吹牛,可吹牛的內容都是我干的桃序。 我是一名探鬼主播杖虾,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼葡缰!你這毒婦竟也來了?” 一聲冷哼從身側響起忱反,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤泛释,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后温算,有當地人在樹林里發(fā)現了一具尸體怜校,經...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年注竿,在試婚紗的時候發(fā)現自己被綠了茄茁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡巩割,死狀恐怖裙顽,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情宣谈,我是刑警寧澤愈犹,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站闻丑,受9級特大地震影響漩怎,放射性物質發(fā)生泄漏。R本人自食惡果不足惜嗦嗡,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一勋锤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧侥祭,春花似錦叁执、人聲如沸茄厘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚕断。三九已至,卻和暖如春入挣,著一層夾襖步出監(jiān)牢的瞬間亿乳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工径筏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留葛假,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓滋恬,卻偏偏與公主長得像聊训,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子恢氯,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內容

  • 背景 compression是基于Placement Targets的带斑,是其中的一個配置項。 Placement ...
    chnmagnus閱讀 5,241評論 0 4
  • 說明:多數據中心(multisite)功能oNest v6.1新增的功能勋拟,旨在實現異地雙活勋磕,提供了備份容災的能力。...
    ScottJing閱讀 6,682評論 4 11
  • 簡介安裝rgw對象存儲網關并創(chuàng)建用戶和桶 部署rgw 創(chuàng)建池 重啟網關 測試訪問ceph集群 創(chuàng)建radosgw用...
    小醉90s閱讀 1,223評論 0 0
  • 相比于aws敢靡,rgw的bucket policy實現的還不是很完善挂滓,有很多細節(jié)都不支持,并且已支持的特性也在很多細...
    chnmagnus閱讀 7,198評論 2 6
  • RGW數據分布及尋址 RGW是一個對象處理網關啸胧。數據實際存儲在ceph集群中赶站。利用librados的接口,與cep...
    圣地亞哥_SVIP閱讀 7,322評論 0 10