SeaweedFS部署及使用指南

  • 软件版本: 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

curl http://192.168.88.129:9333/dir/assign

  • 返回结果

{"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为主.

你可能感兴趣的:(SeaweedFS部署及使用指南)