热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CephAPI微服务实现RBD块设备的高效创建与安全删除

本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS7,使用IntelliJIDEA进行开发。首先介绍了librbd的基本概念及其在Ceph中的作用,随后详细描述了项目Gradle配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了RBD块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。

目标:完成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块存储创建与删除

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



推荐阅读
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 在Fedora 31上部署PostgreSQL 12
    本文详细介绍如何在Fedora 31操作系统上安装和配置PostgreSQL 12数据库。包括环境准备、安装步骤、配置优化以及安全设置,确保数据库能够稳定运行并提供高效的性能。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 本文将详细介绍如何在没有显示器的情况下,使用Raspberry Pi Imager为树莓派4B安装操作系统,并进行基本配置,包括设置SSH、WiFi连接以及更新软件源。 ... [详细]
author-avatar
没有水的鱼0713
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有