多租户对接的时候可能会遇到的问题
写在前面
松鼠哥的ceph专业课程上线啦!
面向新手同学,从0实战,全面入门ceph安装部署与运维,有需要的同学赶紧联系松鼠哥订购吧:
微信群里有老铁搞openstack对接ceph,涉及到对象存储建bucket的问题,明明使用s3cmd查看用户的bucket,是不存在某个bucket的,但是mb却失败了,显然是租户相关问题,松鼠哥也想记录一下这方面的内容。
测试版本是ceph 14 nautilus
开始
首先,在ceph对象存储中,是不能够存在同名的bucket的,所以radosgw-admin bucket list
查看的bucket是不相同的,但是在多租户模式下,不同租户显然是相互无关的,租户A想创建bucket bucketA
,只要保证自己名下没有这个bucket即可,其他租户有没有这个bucket跟它毫无关系,这个才是真是的应用背景。
在默认情况下,我们创建S3用户是用radosgw-admin user create --uid=userA --display-name=userA-display
这样的命令去创建的,但是要使用租户的话,还要带一个参数--tenant=xxxx
来指定当前用户创建在某个租户下。
1 | radosgw-admin user create --uid=userA --display-name=userA-display --tenant=tenantA |
创建用户后,我们注意到它的user_id
和user
为tenantA$userA
,与不使用租户的时候有点区别,看来是增加了租户标识。我们可以在该租户下再创建一个用户看看
1 | radosgw-admin user create --uid=userB --display-name=userB-display --tenant=tenantA |
看起来没啥问题,租户tenantA下面两个用户。接下来我们试下在这两个租户下创建同名bucket
1 | 首先是userA |
从测试结果来看,已经很明显了,租户的概念,大致相当于一个用户集合,在该集合下即使不同用户,bucket也不能同名。
实际上,默认情况下,创建用户的时候不带tenant
参数的话,默认就是空的””租户名字,所以在表现上,就如同没有租户一样,但不能bucket同名等限制是客观存在的。
总结
这个算是个小知识,租户的概念在云计算中还算普遍,在对接的时候,大家要注意这种细节,在对接的两端都做好配置,该开启就开启,以免查半天。
- 本文作者: 奋斗的松鼠
- 本文链接: http://www.strugglesquirrel.com/2023/12/05/ceph对象存储的多租户/
- 版权声明: 本博客所有文章除特别声明外,创作版权均为作者个人所有,未经允许禁止转载!