Ceph API微服务开发--RBD块存储创建与删除

时间:2024-04-03 22:30:09

目标:完成Ceph块存储创建与删除功能的开发

环境:CentOS7 / IntelliJ IDEA

步骤:librbd简介->项目gradle改造->ceph块存储功能开发->运行测试

1.librbd简介

librbd是Ceph的块存储库,其利用Rados提供的API实现对卷的管理和操作。

Ceph API微服务开发--RBD块存储创建与删除

2.项目gradle改造

原有项目为maven项目,需要修改为gradle项目。

(1)Linux下gradle配置

gradle下载:https://gradle.org/releases

解压至/opt/gradle目录

mkdir /opt/gradle

unzip -d /opt/gradle gradle-4.7-all.zip

配置环境变量:

vim /etc/profile

添加export GRADLE_HOME=/opt/gradle/gradle-4.7,并将变量加至PATH中

Ceph API微服务开发--RBD块存储创建与删除

source /etc/profile 

gradle -v

Ceph API微服务开发--RBD块存储创建与删除

(2)IDEA导入gradle项目

使用start.spring.io新建gradle项目,并导入IDEA

Ceph API微服务开发--RBD块存储创建与删除

导入IDEA-目录结构:

Ceph API微服务开发--RBD块存储创建与删除

3.ceph块存储功能开发

ceph api service使用web方式访问,且需要导入rados依赖,因此定义配置文件build.gradle:

Ceph API微服务开发--RBD块存储创建与删除

其中rados与jna为本地编译生成的依赖包,需按本地路径导入。

swagger为RESTful API在线文档,方便进行API测试。

RBD存储功能开发代码:

(1)主程序-CaasCephapiApplication.java

SpringBoot核心程序,内置tomcat容器服务

Ceph API微服务开发--RBD块存储创建与删除

(2)控制器-CaasCephapiController.java

处理外部http请求,调用内部服务并返回处理结果:

Ceph API微服务开发--RBD块存储创建与删除

其中@ApiOperation为swagger映射,可通过界面调用测试api接口。

(3)ceph api接口服务-CaasCephapiService.java/CaasCephapiImageInfo.java

a.CaasCephapiService.java包括接口对象的创建、调用等功能

api接口对象创建:

Ceph API微服务开发--RBD块存储创建与删除

连接ceph集群:

Ceph API微服务开发--RBD块存储创建与删除

列出当前块存储:

Ceph API微服务开发--RBD块存储创建与删除

指定块存储详细信息:

Ceph API微服务开发--RBD块存储创建与删除

创建新的块存储:

Ceph API微服务开发--RBD块存储创建与删除

删除指定块存储:

Ceph API微服务开发--RBD块存储创建与删除

b.CaasCephapiImageInfo.java以json格式返回块存储信息

Ceph API微服务开发--RBD块存储创建与删除

(4)RestfulAPI在线文档-Swagger.java

设置界面显示信息,与调用的api路径

Ceph API微服务开发--RBD块存储创建与删除

4.运行测试

gradle build后进入build/libs目录查找可执行jar包,然后java -jar xxx.jar运行。

访问 http://IP:port/swagger-ui.html

Ceph API微服务开发--RBD块存储创建与删除

API测试:

(1)连接ceph集群

Ceph API微服务开发--RBD块存储创建与删除

(2)列出当前块存储

Ceph API微服务开发--RBD块存储创建与删除

(3)创建块存储

POST方法,填入参数,即块存储名称与大小

Ceph API微服务开发--RBD块存储创建与删除

Ceph API微服务开发--RBD块存储创建与删除

(4)删除块存储

填写要删除的image名称

Ceph API微服务开发--RBD块存储创建与删除

Ceph API微服务开发--RBD块存储创建与删除

以上,块存储创建及删除功能开发完成。