目标:开发Ceph存储集群API调用微服务
环境:IntelliJ IDEA
步骤:librados库简介->存储集群API调用程序编写->API调用测试->Spring Boot微服务改造->运行测试
参考:http://docs.ceph.org.cn/rados/api/
1.librados库简介
librados支持块存储与对象存储的使用,并适应多种语言接口。
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
4.Spring Boot微服务改造
(1)pom.xml文件
增加rados的配置依赖
(2)CephApiContoller.java
配置访问地址:http://.../test
(3)application.yml
设置访问端口:
(4)Project结构
5.运行测试
进入到项目目录,执行如下操作:
mvn compile
mvn package
cd target/
java -jar xxx.jar
访问地址http://10.80.25.18:9999/test