seaweedfs部署及使用指南「seafile社区版和专业版」
今天聊一下SeaweedFS。
SeaweedFS简介SeaweedFS是一个简单且高度可扩展的分布式文件系统。有两个目标:
存储数十亿个文件!快速提供文件!SeaweedFS根据这个Facebook的Haystack(https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Beaver.pdf)设计的。
SeaweedFS最初是作为对象存储来有效处理小文件的。代替管理中央主机中的所有文件元数据,中央主机仅管理文件卷,并允许这些卷服务器管理文件及其元数据。这样可以减轻来自中央主机的并发压力,并将文件元数据分散到卷服务器中,从而可以更快地访问文件(O(1),通常只是一个磁盘读取操作)
安装1.下载地址:
https://github.com/chrislusf/seaweedfs/releases/tag/2.07 大家选择自己需要的版本。
我这下载的是:windows_amd64.zip。文件不大,压缩包26M左右。
2.解压
将刚才下载的压缩包解压,只有一个weed.exe文件。非常简单。
1.启动主服务器
./weed master注释提出有个问题。默认启动后的IP是这个:导致后面启动卷服务器启动后,连接不到主服务器.
2.启动卷服务器
./weed volume -dir="./tmp" -max=5-mserver="localhost:9333" -port=8080提示连接不到169.254.195.109:9333。我的ip也不是这个。怎么会连接这个那。
体验翻车
卷服务器启动后一直在报错,连接不到主服务器。提示连接不到169.254.195.109:9333。我的ip也不是这个。怎么会连接这个那。网上搜了一下没有说明。后来查看了一下help才知道问题啥
./weed -help
还是没有发现。突然 master启动的问题。 试了一下
./weed master -help
这个时候才发现有-ip的参数:
-ip string
master <ip>|<server> address (default "169.254.195.109")
才知道。如果不指定ip的默认为是169.254.195.109。唉,感觉这是一个坑,不知道为啥,不是获取本机的IP,而是默认固定一个IP
重新启动1.启动主服务器
./weed master -ip=localhost
# 指定IP地址参数
2.启动卷服务器
./weed volume -dir="./tmp" -max=5-mserver="localhost:9333" -port=8080-ip=localhost
这次没有问题了
1.访问
http://localhost:9333/ 出现以下,表示成功了。
2上传文件
要上传文件:首先,发送HTTP POST,PUT或GET请求/dir/assign以获取fid和卷服务器URL
curl http://localhost:9333/dir/assign{"fid":"2,01cf7b3467","url":"localhost:8080","publicUrl":"localhost:8080","count":1}
其次,要存储文件内容,请url '/' fid从响应中发送一个HTTP多部分POST请求:
curl -F file=@G:softwindows_amd64.zip http://127.0.0.1:8080/2,01cf7b3467{"name":"windows_amd64.zip","size":27717089,"eTag":"ec79ea2e5def58bec7ad3a5b679fcc54"}
在页面查看,发现有一个文件。
2.保存文件的id
我们可以将fid:2,01cf7b3467保存到数据库字段中。
开头的数字2表示卷ID。逗号后是一个文件密钥01和一个文件cookie cf7b3467。
卷ID是32位无符号整数。文件密钥是一个无符号的64位整数。文件cookie是32位无符号整数,用于防止URL猜测。
3.下载文件
浏览器中打开: http://localhost:8080/2,01cf7b3467.zip或者: curl -o 2,01cf7b3467.zip http://localhost:8080/2,01cf7b3467.zip
4.删除
要删除,请将HTTP DELETE请求发送到相同的url '/' fidURL:
curl -X DELETE http://127.0.0.1:8080/2,01cf7b3467
后记
今天先写到这,后面有时间在分享更多的用法。