Ceph API微服务开发--存储集群API调用

时间:2024-04-14 13:46:08

目标:开发Ceph存储集群API调用微服务

环境:IntelliJ IDEA

步骤:librados库简介->存储集群API调用程序编写->API调用测试->Spring Boot微服务改造->运行测试

参考:http://docs.ceph.org.cn/rados/api/

1.librados库简介

librados支持块存储与对象存储的使用,并适应多种语言接口。

Ceph API微服务开发--存储集群API调用

2.存储集群API调用程序编写

(1)rados-java依赖库安装

librados API能够与ceph存储集群中的两种守护程序进行交互:

a.ceph monitor - 维护集群映射的主副本

b.ceph osd守护程序 - 将数据作为对象存储在存储节点上

依赖库安装:

yum install librados2-devel

yum install librbd1-devel

(2)rados-java编译

rados java项目源码地址:https://github.com/ceph/rados-java

下载:git clone https://github.com/ceph/rados-java.git

cd rados-java

mvn install -Dmaven.test.skip=true

在target目录下生成可执行jar包:rados-0.4.0-SNAPSHOT.jar

添加jar文件至jvm的类路径:ln -s /usr/share/java/rados-0.4.0-SNAPSHOT.jar /usr/lib/jvm/jdk/jre/lib/ext/rados-0.4.0-SNAPSHOT.jar

程序运行需要jna支持:

yum install jna

ln -s /usr/share/java/jna.jar /usr/lib/jvm/jdk/jre/lib/ext/jna.jar

(3)集群连接程序-官方案例

新建java程序:CephClient.java

import com.ceph.rados.Rados;

import com.ceph.rados.exceptions.RadosException;
import java.io.File;
public class CephClient {
  public static void main (String args[]){
    try {
      //创建连接句柄对象
      Rados cluster = new Rados("admin");
      System.out.println("Created cluster handle.");
      //读取ceph集群配置文件
      File f = new File("/etc/ceph/ceph.conf");
      cluster.confReadFile(f);
      System.out.println("Read the configuration file.");
      //连接ceph集群
      cluster.connect();
      System.out.println("Connected to the cluster.");
    } catch (RadosException e) {
      System.out.println(e.getMessage() + ": " + e.getReturnValue());
    }
  }
}

3.API调用测试

javac CephClient.java

java CephClient

Ceph API微服务开发--存储集群API调用

4.Spring Boot微服务改造

(1)pom.xml文件

增加rados的配置依赖

Ceph API微服务开发--存储集群API调用

(2)CephApiContoller.java

配置访问地址:http://.../test

Ceph API微服务开发--存储集群API调用

(3)application.yml

设置访问端口:

Ceph API微服务开发--存储集群API调用

(4)Project结构

Ceph API微服务开发--存储集群API调用

5.运行测试

进入到项目目录,执行如下操作:

mvn compile 

mvn package

cd target/

java -jar xxx.jar

访问地址http://10.80.25.18:9999/test

Ceph API微服务开发--存储集群API调用