分布式对象存储Ambry安装
Author:xusy
官网:https://github.com/linkedin/ambry
教程:http://blog.csdn.net/zhxdick/article/details/52964676
1.从官网拉去源码 Ambry 到本地工程
https://github.com/linkedin/ambry.git
删除本地Modules ,重新加载 gradle 工程
执行命令 :allJar 开始打包
获取target下 ambry.jar
2.Linux环境
- 创建目录 /home/ambry/data
# mkdir -p /home/ambry/data
- 创建logs 及 config 文件目录
# cd /home/ambry/
# mkdir logs
# mkdir config
其中ambry_1174.jar 是 以 1174 端口上传的
其中ambry.jar 是以10070 端口上传的
修改指定端口,需要在源码中进行全局修改调整
3.Config配置文件
- frontend.properties启动前端需要指定的文件
直接从源码中copy到 config目录下
- HardwareLayout.json 集群硬件配置文件
有多少台服务器,配置多少个这个文件
集群配置
- PartitionLayout.json 集群逻辑分片配置文件
有多少台服务器,配置多少个这个文件
集群配置
- server.properties 启动服务端指定文件
有多少台服务器,配置多少个这个文件
直接从源码中copy过去,即可
- log4j.properties 日志文件
有多少台服务器,配置多少个这个文件
直接从源码中copy过去,即可
- Server 数字证书集群配置
由于集群配置必须要SSL连接,所以,需要在每一台机器上生成数字证书。
这里用Java自带的keystore生成数字证书。 Keytool是一个Java数据证书的管理工具。Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里
在每台机器上执行:
# cd /home/ambry/config
# keytool -genkeypair -alias certificatekey -validity 7000 -keystore keystore.jks
#keytool -export -alias certificatekey -keystore keystore.jks -rfc -file selfsignedcert.cer
#keytool -import -alias certificatekey -file selfsignedcert.cer -keystore truststore.jks
记住你的配置的keytool文件位置还有密码,在每台机器上配置server.ssl.properties
4.启动Ambry分布式对象存储系统
--Ambry启动命令 --启动server服务端 (以数字证书形式 公钥 私钥) nohup java -Dlog4j.configuration=file:./config/log4j.properties -jar ambry.jar --serverPropsFilePath ./config/server.ssl.properties --hardwareLayoutFilePath ./config/HardwareLayout.json --partitionLayoutFilePath ./config/PartitionLayout.json 1>> logs/server.log 2>> logs/server-error.log & --正常启动server服务端 nohup java -Dlog4j.configuration=file:./config/log4j.properties -jar ambry.jar --serverPropsFilePath ./config/server.properties --hardwareLayoutFilePath ./config/HardwareLayout.json --partitionLayoutFilePath ./config/PartitionLayout.json 1>> logs/server.log 2>> logs/server-error.log & --启动frontend前端服务器 nohup java -Dlog4j.configuration=file:./config/log4j.properties -cp "*" com.github.ambry.frontend.AmbryFrontendMain --serverPropsFilePath ./config/frontend.properties --hardwareLayoutFilePath ./config/HardwareLayout.json --partitionLayoutFilePath ./config/PartitionLayout.json 1>> logs/frontend.log 2>> logs/frontend-error.log & --Ambry停止命令 kill -9 frontendProcessID kill -9 serverProcessID
5.分布式对象存储系统上传文件
Ambry分布式对象存储系统,在测试环境搭建采用集群模式。
集群服务器:10.28.37.57 10074、10.28.37.76 10074、10.28.37.77 10074
部署路径:/home/ambry/
测试环境内网代理地址:http://10.31.78.216:10050/file/
测试环境外网代理地址:http://218.107.129.234:10050/file/
1、Ambry启动命令
- 启动服务端
nohup java -Dlog4j.configuration=file:./config/log4j.properties -jar ambry.jar --serverPropsFilePath ./config/server.properties --hardwareLayoutFilePath ./config/HardwareLayout.json --partitionLayoutFilePath ./config/PartitionLayout.json 1>> logs/server.log 2>> logs/server-error.log &
- 启动前端
nohup java -Dlog4j.configuration=file:./config/log4j.properties -cp "*" com.github.ambry.frontend.AmbryFrontendMain --serverPropsFilePath ./config/frontend.properties --hardwareLayoutFilePath ./config/HardwareLayout.json --partitionLayoutFilePath ./config/PartitionLayout.json 1>> logs/frontend.log 2>> logs/frontend-error.log &
2、Ambry停止命令
kill -9 frontendProcessID
kill -9 serverProcessID
3、验证Ambry健康情况
curl http://localhost:1174/healthCheck
4、测试Ambry图片、文件、视频上传
上传图片,直接利用运动服务现有接口就行,或者到Ambry官方根据对应地址上传:
curl -i -H "x-ambry-blob-size : `wc -c demo.gif | xargs | cut -d" " -f1`" -H "x-ambry-service-id : CUrlUpload" -H "x-ambry-owner-id : `whoami`" -H "x-ambry-content-type : image/gif" -H "x-ambry-um-description : Demonstration Image" http://10.28.37.76:10074/ --data-binary @demo.gif
上传视频,直接根据官网地址:
curl -i -H "x-ambry-blob-size : `wc -c sport.mp4 | xargs | cut -d" " -f1`" -H "x-ambry-service-id : CUrlUpload" -H "x-ambry-owner-id : `whoami`" -H "x-ambry-content-type : video/mp4" -H "x-ambry-um-description : Demonstration Image" http://10.28.37.76:10074/ --data-binary @sport.mp4
例子:http://10.28.37.76:10074/AAEAAQAAAAAAAAAAAAAAJDJkYThmMTM2LTJkYTEtNGExZi1hZTkzLTY1ZmFiMzQzZmQzMA
外网代理地址:
http://218.107.129.234:10050/file/AAEAAQAAAAAAAAAAAAAAJDJkYThmMTM2LTJkYTEtNGExZi1hZTkzLTY1ZmFiMzQzZmQzMA
http://10.28.37.76:10074/AAEAAQAAAAAAAAAAAAAAJDgzZTFlNWZhLTFlMTYtNGFkYi04OGU5LTA4ZWEyYjlmOThhOQ
curl -i -H "x-ambry-blob-size : `wc -c sport.flv | xargs | cut -d" " -f1`" -H "x-ambry-service-id : CUrlUpload" -H "x-ambry-owner-id : `whoami`" -H "x-ambry-content-type : video/flv" -H "x-ambry-um-description : Demonstration Image" http://10.28.37.76:10074/ --data-binary @sport.flv
例子:
http://10.28.37.76:10074/AAEAAQAAAAAAAAAAAAAAJDAwNWNlYzY4LTBiMzctNGJhNi1iNDkwLTJiMGJjZTljMTJlZg
1.1. 生产环境
Ambry分布式对象存储系统,在生产环境搭建采用单机模式(考虑服务器资源)。
单机服务器:http://xx.xx.xx.xx:10074
生产环境外网代理地址:
http://x.xxx.com.cn/newfile
部署路径:/home/ambry/
数据data部署路径:/app/ambry/data/