目標:開發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