首页 置换 选车 估价 问答 生活 经销商 车管所 汽车资讯 汽车销量 车牌查询 今日油价 天气预报
您的位置: 首页 > 生活 > 其他 > ceph的核心组件是什么(CephSwiftApi)
ceph的核心组件是什么(CephSwiftApi)
更新时间:2024-07-28 08:11:40
ceph swift Api 配置与使用一、Ceph Swift Api 说明

在 ceph 的使用上, 互联网大规模的文件场景下, fs 并不能满足生产的使用要求,rados 本地化操作也不便于服务的接入与使用, 这里我们就要采用 Ceph Swift Api 来实现文件的存储管理。

二、Ceph Swift Api 特点

Swift 是由 Rackspace 开发,用来为云计算提供可扩展存储的项目。专注于对象存储, 并提供一套 REST 风格的 Api 来访问, 与 Ceph 强一致性不同, 它是最终一致性。两者都是优秀的开源项目, 并无明显优劣之分,在使用场景上有所不同, 如果是专注于对象存储, 那么可以选择 swift 即可满足需要, 如果还有块存储要求, 那么选择 Ceph 更为合适。这里选择 Ceph, 因为通过网关可以适配兼容 swift api, 同时在数据访问上具有较强的扩展性:

  • Ceph 可通过 Rados 网关用兼容 S3 的 RESTful API 访问,对 AWS 云环境下的其他内容也能很好的兼容, 比如 OpenStack Swift 的对象存储访问接口。
  • CephFS:是一个 POSIX 兼容的文件系统,可以在任何 Linux 发行版上运行,操作系统可直接访问 Ceph 存储。
  • RBD:RBD 是一个 Linux 内核级的块设备,允许用户像任何其他 Linux 块设备一样访问 Ceph。
  • iSCSI 网关: 这一增加的功能是 SUSE 加上去的,它允许管理员在 Ceph 之上运行 iSCSI(互联网小型计算机系统接口)网关,从而将其转变为任何操作系统都可以访问的 SAN(Storage Area Network,存储区域网络)文件管理器。
三、Ceph RGW 介绍

Ceph 可以提供块、文件和对象三种形态的存储。RGW 就是提供对象存储的网关,也即对象存储网关。 所谓对象存储网关,也就是对象存储的入口,本质上是一个 HTTP 服务器,与 Nginx 和 Apache 无特殊差别。通过这个网关入口,用户可以采用 HTTP 协议,以 RESTful 的方式访问 Ceph 的对象存储。

四、Ceph 存储结构

在使用对象存储之前, 先要了解桶(container 容器)概念及其存储结构:

Ceph Swift Api 的调用, 需要先创建相应用户进行认证才能操作, 每个用户下面可以创建多个桶, 桶里面可以存储对象,对象就是各种数据文件, 包括文档, 图片等。传统上传文件的使用, 我们往往会指 定路径信息, 在这里, 桶和对象的关系好比文件夹与文件的概念, 不同之处是桶不能再嵌套桶, 也就是没有层级路径的概念。

Ceph 存储结构:

ceph的核心组件是什么(CephSwiftApi)1

五、Ceph Swift Api 服务端的配置1、确保集群正常安装并启动:

ceph的核心组件是什么(CephSwiftApi)2

如果 rgw 没有显示, 检查服务状态:

systemctl list-unit-Files|grep enabled|grep ceph

复制代码

ceph的核心组件是什么(CephSwiftApi)3

重启 RGW 服务:

ceph-deploy --overwrite-conf --ceph-conf ceph.conf rgw create CENTOS7-1 systemctl restart ceph-radosgw@*.service

复制代码

ceph的核心组件是什么(CephSwiftApi)4

2、验证网关是否正常

访问地址,http://192.168.88.161:7480

出现以下提示代表正常

ceph的核心组件是什么(CephSwiftApi)5

3、创建 Swift 用户, 用于接口请求认证

sudo radosgw-admin user create --subuser="cephtester:subtester" --uid="cephtester" --display-name="cephtester" --key-type=swift --secret="654321" --access=full

复制代码

uid 为主用户, subuser 为子用户信息, secret 指定密钥, 不指定则随机生成, access 拥有权限设定。

返回结果:

[root@CENTOS7-1 ceph-cluster]# sudo radosgw-admin user create --subuser="cephtester:subtester" --uid="cephtester" --display-name="cephtester" --key-type=swift --secret="654321" --access=full { "user_id": "cephtester", "display_name": "cephtester", "email": "", "suspended": 0, "max_buckets": 1000, "auid": 0, "subusers": [ { "id": "cephtester:subtester", "permissions": "full-control" } ], "keys": [], "swift_keys": [ { "user": "cephtester:subtester", "secret_key": "654321" } ], "caps": [], "op_mask": "read, write, delete", "default_placement": "", "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": [] }

复制代码

记住 swift_keys 下面的 user 和 secret_key 信息, 代码中需使用。

4、激活管理后台的对象存储模块:5、创建一个管理用户:

radosgw-admin user create --uid=mgruser --display-name=mgruser --system

复制代码

返回结果:

[root@CENTOS7-1 ceph-cluster]# radosgw-admin user create --uid=mgruser --display-name=mgruser --system { "user_id": "mgruser", "display_name": "mgruser", "email": "", "suspended": 0, "max_buckets": 1000, "auid": 0, "subusers": [], "keys": [ { "user": "mgruser", "access_key": "W462B8SE31NDCOQR4E6I", "secret_key": "XPZcugMWRhYccFlEPIHKcyFVr73grVuiJgFD4rDR" } ], "swift_keys": [], "caps": [], "op_mask": "read, write, delete", "system": "true", "default_placement": "", "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": [] }

复制代码

根据生成的 access_key 与 secret_key, 执行:

ceph dashboard set-rgw-api-access-key W462B8SE31NDCOQR4E6I ceph dashboard set-rgw-api-secret-key XPZcugMWRhYccFlEPIHKcyFVr73grVuiJgFD4rDR

复制代码

ceph的核心组件是什么(CephSwiftApi)6

打开管理界面,https://192.168.88.161:18843 可以查看到我们刚才创建的两个用户:

ceph的核心组件是什么(CephSwiftApi)7

​六、Ceph Swift Api 调用验证1、创建 ceph-demo 工程

ceph的核心组件是什么(CephSwiftApi)8

增加 SwiftOperator 接口:

@Component public class SwiftOperator { /** * 用户名信息, 格式: 主用户名:子用户名 */ private String username ="cephtester:subtester"; /** * 用户密码 */ private String password = "654321"; /** * 接口访问地址 */ private String authUrl = "http://192.168.88.161:7480/auth/1.0"; /** * 默认存储的容器名称(bucket) */ private String defaultContainerName = "user_datainfo"; /** * Ceph的账户信息 */ private Account account = null; /** * Ceph的容器信息 */ private Container container; /** * 进行Ceph的初始化配置 */ public SwiftOperator() { // 1. Ceph的账户信息配置 AccountConfig config = new AccountConfig(); config.setUsername(username); config.setPassword(password); config.setAuthUrl(authUrl); config.setAuthenticationMethod(AuthenticationMethod.BASIC); account = new AccountFactory(config).createAccount(); // 2.获取容器信息 Container newContainer = account.getContainer(defaultContainerName); if(!newContainer.exists()) { container = newContainer.create(); System.out.println("container create ==> " defaultContainerName); }else { container = newContainer; } } /** * 文件上传处理 * @param remoteName * @param filePath */ public void createObject(String remoteName, String filePath) { // 1. 从容器当中获取远程存储对象信息 StoredObject object = container.getObject(remoteName); // 2. 执行文件上传处理 object.uploadObject(new File(filePath)); } /** * 文件的下载处理 * @param objectName * @param outPath */ public void retrieveObject(String objectName, String outPath) { // 1. 从容器当中获取远程存储对象信息 StoredObject object = container.getObject(objectName); // 2. 执行文件的下载方法 object.downloadObject(new File(outPath)); } /** * 获取用户下面的所有容器信息 * @return */ public List listContainer() { List list = new ArrayList(); Collection<Container> containers = account.list(); for(Container container : containers) { list.add(container.getName()); System.out.println("current container name : " container.getName()); } return list; } }

复制代码

这里的用户名和密码填写上面我们所生成的信息。注意路径地址后缀为: /auth/1.0

CephDemoApplication 启动类,测试验证:

@SpringBootApplication @ComponentScan(basePackages = {"cn.it"}) public class CephDemoApplication { public static void main(String[] args) throws Exception { // Swift Api接口调用验证 swiftApi(); } /** * 通过Swift接口操作ceph集群 * @throws Exception */ public static void swiftApi() throws Exception { ConfigurableApplicationContext appContext = SpringApplication.run(CephDemoApplication.class); // 1. 先打印出用户的容器信息 SwiftOperator swiftOperator = appContext.getBean(SwiftOperator.class); swiftOperator.listContainer(); String objName = "test_ceph"; // 2. 上传指定的文件 swiftOperator.createObject(objName, "E:\\test\\upload\\test_swift_ceph.txt"); // 3. 从ceph下载文件到指定的路径下面 swiftOperator.retrieveObject(objName, "E:\\test\\download\\test_swift_ceph.txt"); System.out.println("complete"); } }

复制代码

,
相关推荐RECOMMEND
梦见着火了是什么征兆(与你一起去揭开梦境之谜)
梦见着火了是什么征兆?男性梦见火,表明心中对事业充满希望、充满信心,现在小编就来说说关于梦见着火了是什么征兆?下面内容希望能帮助到你,我们来一起看看吧!梦见着火了是什么征兆男性梦见火,表明心中对事业充...
underarmour是什么牌子运动服(品牌故事之UnderArmour)
这家非常成功的公司成立于1996年,创办者是前马里兰足球明星KevinPlank。由于厌倦了那种运动完身上棉制TEE被汗水浸湿的痛苦感觉,KevinPlank发明研制了一种能让运动员在剧烈运动中保持身...
迷你世界触发器打死怪让玩家变身(玩家发现诡异的三段门)
大家好,我是游戏揽件君。《迷你世界》是一款3D沙盒手游,可以在迷你世界里打造属于自己的家园,里面有好几种玩法,有闯关挑战的模式和地图,也有生存模式。这款手游是通过玩家破坏与创造方块来自制黑科技,和《我...
最好的机械表款式排名(八大机械表入门品牌)
汉密尔顿汉密尔顿曾是美国军队的军表供应商,虽诞生于美国,但加入斯沃琪后,传承了瑞表工艺,是美国精神和瑞士制表工艺的优秀结合体。它的价格和美度差不多,美国经典和卡其运动这两大热门系列的价位也基本集中在四...
味精的谷氨酸钠含量最多达到多少(作为味精的主要成分)
味精的谷氨酸钠含量最多达到多少?近日,北京市食品药品监督管理局组织抽检,我来为大家讲解一下关于味精的谷氨酸钠含量最多达到多少?跟着小编一起来看一看吧!味精的谷氨酸钠含量最多达到多少近日,北京市食品药品...
东莞新公司注册流程及费用(东莞如何注册公司)
东莞注册营业执照需要的资料?公司名称,公司地址,经营范围,注册资金,股权比例,法人股东监事的身份证信息和银行U盾,实名认证流程:备好资料,工商提交,审核,通过,领取营业执照,办理刻章,税务报道,有需求...