CEPH官方对RGW Multi-tenancy的介绍如下

RGW Multi-tenancy

多租户特性允许创建使用不同的存储桶和用户,前提是将其分离在不同的租户之下。例如,允许不同租户下的Swift API的用户,都可以创建形如“test”,“trove”这样很容易重复的桶名。

从Jewel版本开始,每个用户和桶都在租户之下。为了兼容性,RGW提供了一个名为空的“legacy”租户,如果引用桶时没有指明所属租户,则默认从“legacy”租户下获取该桶的信息。由于原有用户位于传统租户之下,因此他们将继续像以前一样创建和访问存储桶。RADOS中对象的布局以兼容的方式扩展,确保能顺利升级到Jewel版本。

指定租户下管理用户

租户实际没有做任何操作。当管理用户时,租户的概念才能起作用。为了明确使用租户的创建、修改和删除用户,可以使用附加提供的参数-tanant。或者在radosgw-admin名参数中使用语法<tenant>$<user>”

示例

创建S3用户testx$tester

radosgw-admin --tenant testx --uid tester--display-name "Test User" --access_key TESTER --secret test123 usercreate

创建Swift用户testx$tester

radosgw-admin --tenant testx --uid tester--display-name "Test User" --subuser tester:test --key-type swift--access full user create

请注意,指明租户的子用户必须在shell中引用

测试

创建租户为testx,用户名为tester的用户,swift子账号名为test,创建命令

radosgw-admin --tenant testx --uid tester--display-name "Test User" --subuser tester:test --key-type swift--access full user create

用该用户的keys调用SWIFT API创建桶test

创建租户为testx3,用户名为tester的用户,swift子账号名为test,创建命令

radosgw-admin --tenant testx3--uid tester --display-name "Test User" --subuser tester:test--key-type swift --access full user create

用该用户的keys调用SWIFT API创建桶test

底层使用命令radosgw-admin metadata list bucket查看RGW所有桶

由此可见,底层其实是把租户的名称加到桶名前面,这样实现不同租户下可以创建相同的桶名。

同样的,使用命令radosgw-admin metadata list user查看,可以看出RGW用户名格式为<tenant>$<user>

总结

RGWMulti-tenancy这个特性,底层实现其实就是在桶名和用户名前加个租户tenant字段来实现区分,对于用户而言是透明的,但是对于底层而言,是在用户名或者桶名加上了tenant字段而已。这个在做应用的时候会有一定的好处,即对不同租户的使用上来说,可以看成是可以创建同名的bucket桶。

测试python脚本(需先安装swiftclient的python包)

import requests
import swiftclient
KEY = '0os329T9icBwNB1Kpjt5SJi0BNTJPltcrZH5YCAj'
USERNAME = 'testx$tester:test'
server = '192.168.59.2:8080'
url = 'http://%s/auth' % server
conn = swiftclient.Connection(
user=USERNAME,
key=KEY,
authurl=url,
)
print USERNAME
print conn.put_container("test")
print conn.get_account()

CEPH J版本新特性RGW Multi-tenancy详解相关推荐

  1. Spark 3.2.0 版本新特性 push-based shuffle 论文详解(一)概要和介绍

    前言 本文隶属于专栏<大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 目录 Spark 3.2.0 ...

  2. Spark 3.2.0 版本新特性 push-based shuffle 论文详解(二)背景和动机

    前言 本文隶属于专栏<大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 目录 Spark 3.2.0 ...

  3. 【java8新特性】——Stream API详解(二)

    一.简介 java8新添加了一个特性:流Stream.Stream让开发者能够以一种声明的方式处理数据源(集合.数组等),它专注于对数据源进行各种高效的聚合操作(aggregate operation ...

  4. java8 stream遍历_Java8新特性:Stream流详解

    1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...

  5. java lambda表达式详解_Java8新特性:Lambda表达式详解

    在 Java 版本的历次更新迭代中,Java8 是一个特殊的存在,与以往的版本升级不同.我们对 Java8 似乎抱有更大的期待,因为它是 Java5 之后最重要的一次升级,提供了十多个新特性,其中 L ...

  6. java lambda表达式详解_java8新特性-Lambda表达式的详解(从0开始)

    这几天复习了java8的一些新特性,作为一个从java5以来最具革命性的版本,一直没有来得及总结.本系列文章主要是从<java8实战>总结的.这是第一篇文章主要介绍java8的lambda ...

  7. H5的新特性及部分API详解

    h5新特性总览 移除的元素 纯表现的元素: basefont.big.center.font等  对可用性产生负面影响的元素: frame.frameset.noframes 新增的API 语义: 能 ...

  8. oracle中pdb,Oracle 12C新特性-CDB和PDB 详解

    最近看到好多人都在尝试Oracle中的12C新特性-容器数据库,今年3月Orcle推出了Release2版本,可以算是一个稳定版本了.下午着手尝试了一下,还是蛮不错得 1.前言 CDB与PDB是Ora ...

  9. JDK1.8新特性 Optional判空详解,简化判空操作

    一.简介 从 Java 8 引入的一个很有趣的特性是 Optional 类.Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) -- 每个 Java ...

最新文章

  1. JML规格编程——BUAA OO第三单元作业总结
  2. linux redhat 下载_使用Vmware创建Linux(Ubuntu)系统
  3. java内存模型(JMM)和happens-before
  4. [蓝桥杯][算法提高VIP]聪明的美食家-dp
  5. [设计模式] ------ 适配器模式
  6. android lottie字体json,Android 动画深入Lottie
  7. 服务器文件夹同步到手机,本机文件夹同步到云服务器
  8. 【差分隐私的指数机制该怎么理解?】差分隐私系统学习记录(三)
  9. 第9章matlab符号计算答案,第9章 MATLAB符号计算_MATELAB课程设计_ppt_大学课件预览_高等教育资讯网...
  10. linux windows爆音,如何解决 Windows 服务器远程桌面的爆音问题
  11. c语言的真随机,怎样让c语言中的随机函数真正随机?
  12. java打印某年日历_java打印指定年月份的日历
  13. 不限速度盘下载神器Pandownload作者被抓,大量下载脚本已宣布停更
  14. 计算机网络在信息时代中的作用
  15. android设置透明主题后背景为黑色,android – 活动应该是透明的,但有黑色背景
  16. 数据结构——竞选海报
  17. 连接到mysql提示错误:The server time zone value is unrecognized or represents more than one time zone
  18. 2021-12-22 AndroidR 电池信息 简单分析记录
  19. java本地缓存简介
  20. 数据库去重,group by、distinct、rowid的用法,oracle和mysql如何数据去重保留一条

热门文章

  1. 阿里巴巴原来这么容易就能进去…
  2. 推荐这几个阿里、抖音、快手超级牛逼的技术大佬的公众号!
  3. 面向Python开发人员的综合置信区间全面理解
  4. C语言:Educoder结构体储存学生信息
  5. 基于unity3D的趣味桌球游戏开发
  6. 0x0000001a蓝屏代码是什么意思 0x0000001a蓝屏代码怎么解决
  7. 自动控制原理9.1---线性系统的状态空间描述(中下)
  8. vue中slot-scop=“scope“
  9. 如何通过电影学英语 English through Movies
  10. 视频配音文字转语音怎么弄?介绍几种好用的方法给你