SeaweedFS部署及使用指南
2019-06-10 本文已影响0人
热心肠的徐同学
- 软件版本: seaweedfs-1.33
- 压缩包包名:linux_amd64.tar.gz
- 想了解更多请查看官方文档wiki
相关概念:
定义名称 | 说明 |
---|---|
master | 提供volume=>location 位置映射服务和文件id的序列号 |
Node | 系统抽象的节点,抽象为DataCenter、Rack |
DataCenter | 数据中心,对应现实中的不同机架 |
Rack | 机架,对应现实中的机柜,一个机架属于特定的数据中心,一个数据中心可以包含多个机架。 |
Volume | 逻辑卷,存储的逻辑结构,逻辑卷下存储Needle,A VolumeServer contains one Store |
Needle | 逻辑卷中的Object,对应存储的文件, Needle file size is limited to 4GB for now. |
Filer | 文件管理器,Filer将数据上传到Weed Volume Servers,并将大文件分成块,将元数据和块信息写入Filer存储区 |
Collection | 文件集,可以分布在多个逻辑卷上,如果在存储文件的时候没有指定collection,那么使用默认的"" |
Mount | 用户空间,当filer与mount一起使用时,filer仅提供文件元数据检索,实际文件内容直接在mount和volume服务器之间读写,所以不需要多个filer |
部署规划:
节点 | master | volume | filer |
---|---|---|---|
192.168.88.129 | √ | √ | √ |
192.168.88.130 | √ | √ | √ |
192.168.88.131 | √ | √ | √ |
解压:
- tar -zxvf ./linux_amd64.tar.gz -C /opt/module
- 得到/opt/module目录下weed文件
启动前准备:
- 创建master文件夹和volume文件夹
mkdir -p ./seaweedfs/data ./seaweedfs/volume
配置运行master
- 具体参数请参考./weed master -h
- 分别在三台机器上执行以下命令
nohup ./weed master -ip=192.168.88.129 -port=9333 -mdir=./seaweedfs/data -peers=192.168.88.129:9333,192.168.88.130:9333,192.168.88.131:9333 > ./seaweedfs/data/master.log &
nohup ./weed master -ip=192.168.88.130 -port=9333 -mdir=./seaweedfs/data -peers=192.168.88.129:9333,192.168.88.130:9333,192.168.88.131:9333 > ./seaweedfs/data/master.log &
nohup ./weed master -ip=192.168.88.131 -port=9333 -mdir=./seaweedfs/data -peers=192.168.88.129:9333,192.168.88.130:9333,192.168.88.131:9333 > ./seaweedfs/data/master.log &
配置运行volume
- 具体参数请参考./weed volume -h
- 配置volume逻辑卷时, 可以指定数据中心datacenter以及机架rack, 复制模式和数据中心和机架有关, 具体见文档https://github.com/chrislusf/seaweedfs/wiki/Replication
- 分别在三台机器上执行以下命令
nohup ./weed volume -dataCenter dc1 -rack rack1 -dir ./seaweedfs/volume -ip 192.168.88.129 -port 9222 -ip.bind 192.168.88.129 -max 20 -mserver 192.168.88.129:9333,192.168.88.130:9333,192.168.88.131:9333 -publicUrl 192.168.88.129:9222 > ./seaweedfs/volume/volume.log &
nohup ./weed volume -dataCenter dc1 -rack rack1 -dir ./seaweedfs/volume -ip 192.168.88.130 -port 9222 -ip.bind 192.168.88.130 -max 20 -mserver 192.168.88.129:9333,192.168.88.130:9333,192.168.88.131:9333 -publicUrl 192.168.88.130:9222 > ./seaweedfs/volume/volume.log &
nohup ./weed volume -dataCenter dc1 -rack rack1 -dir ./seaweedfs/volume -ip 192.168.88.131 -port 9222 -ip.bind 192.168.88.131 -max 20 -mserver 192.168.88.129:9333,192.168.88.130:9333,192.168.88.131:9333 -publicUrl 192.168.88.130:9222 > ./seaweedfs/volume/volume.log &
- 配置完成后访问http://192.168.88.129:9333/
首页.png
测试上传下载
- 文件上传首先需要请求master, 去分配一个逻辑卷和fid
- 返回结果
{"fid":"14,0c3657515f","url":"192.168.88.129:9222","publicUrl":"192.168.88.129:9222","count":1}
- 使用返回的url和fid上传文件
curl -F file=@./seaweedfs/volume/volume.log 192.168.88.129:9222/14,0c3657515f
- 可以这么理解, 上传文件, 首先请求master分配volume和fid, 然后将文件上传到某个卷下
- wget 192.168.88.129:9222/14,0c3657515f 可以将该文件下载下来,也可通过浏览器直接访问该地址下载图片
配置运行Filer并挂载到本地目录
Filer允许以另一种方式上传文件
- 安装启动
mkdir -p /etc/seaweedfs
cd /etc/seaweedfs
touch filer.toml
mkdir -p /opt/module/filer_path/level
将 /opt/module/weed scaffold filer -output=""
打印出的内容写入到 filer.toml中, 并且修改其中的配置
dir = "/opt/module/filer_path/level"
可以使用文件, MySQL, redis等保存 filer的元数据信息, 只需要启用或者停用对应的配置,具体请参考https://github.com/chrislusf/seaweedfs/wiki/Filer-Server-API
- 启动
./weed filer -master=192.168.88.129:9333,192.168.88.130:9333,192.168.88.131:9333 -ip=192.168.88.129 -port=8888&
./weed filer -master=192.168.88.129:9333,192.168.88.130:9333,192.168.88.131:9333 -ip=192.168.88.130 -port=8888&
./weed filer -master=192.168.88.129:9333,192.168.88.130:9333,192.168.88.131:9333 -ip=192.168.88.131 -port=8888&
- 上传文件
curl -F "filename=@./abc.log" "http://192.168.88.129:8888/path/to/sources/"
- 返回结果
{"name":"volume.log","size":1656,"fid":"13,0da7c2b7ff","url":"http://192.168.88.130:9222/13,0da7c2b7ff"}
可以看到,前面的上传需要两步,现在用filer上传,只需要一步,并且可以指定文件夹,这里的/path/to/sources/
就是文件路径 - 可直接输入http://192.168.88.129:8888/地址进行访问.下载和前面的流程一样.
mount挂载
- 可以将filer挂载到本地某个目录进行管理,具体请参考https://github.com/chrislusf/seaweedfs/wiki/Mount
mkdir -p ./seaweedfs/data/mount
- 指定文件管理器挂载到/seaweedfs/data/mount目录下
./weed mount -filer=192.168.88.129:8888 -dir=./seaweedfs/data/mount &
执行命令后,便可看到通过filer上传的文件已经挂载到了本地/seaweedfs/data/mount目录下.
具体信息以官方wiki为主.