分布式文件系统seaweedfs搭建配置

官方网站: https://github.com/chrislusf/seaweedfs/wiki/Getting-Started

seaweedfs是一个非常优秀的由 golang 开发的分布式存储开源项目。它是用来存储文件的系统,并且与使用的语言无关,使得文件储存在云端变得非常方便。

在逻辑上Seaweedfs的几个概念:

  • Node 系统抽象的节点,抽象为DataCenter、Rack、DataNode
  • DataCenter 数据中心,对应现实中的不同机房
  • Rack 机架,对应现实中的机柜
  • Datanode 存储节点,用于管理、存储逻辑卷
  • Volume 逻辑卷,存储的逻辑结构,逻辑卷下存储Needle
  • Needle 逻辑卷中的Object,对应存储的文件
  • Collection 文件集,可以分布在多个逻辑卷上

 

常用参数说明

  1. -dir表示该DataNode数据存储的目录; -dir表示数据的存储文件地址
  2. -max表示volume个数最大值;
  3. -mserver表示Master地址;-mserver是主节点的ip以及端口,
  4. -port该DataNode监听的端口;-port表示该volume的端口,
  5. -ip为启动volume的ip,
  6. publicUrl 表示外部访问存储数据的链接地址,
  7. -mdir 元数据目录
  8.  data下面包含 xxx.dat与xxx.idx文件中,通过fid确定在哪个卷中 

 

普通部署方式:  

1 nohup ./weed master -port=19333 -mdir="mdir" -defaultReplication=001 >> master.log 2>&1 &
2 nohup ./weed volume -port=18081 -dir=vdir1 -max=100 -mserver="127.0.0.1:19333" -dataCenter=dc1 -rack=rack1  >> v1.log 2>&1 &
3 nohup  ./weed volume -port=18082 -dir=vdir2 -max=100 -mserver="127.0.0.1:19333" -dataCenter=dc1 -rack=rack1 >> v2.log 2>&1 &

 docker部署方式

1 docker run  -p 9333:9333 -p 19333:19333 -v /opt/seaweed/mdir:/data --name weed_master chrislusf/seaweedfs master -defaultReplication=001
2 docker run -p 9334:8080 -v /opt/seaweed/vdir1:/data --name weed_volume1 --link weed_master chrislusf/seaweedfs volume -max=30 -mserver="weed_master:9333" -port=8080  -dataCenter=dc1 -rack=rack1 -publicUrl="volume1.tonisf.com:88"
3 docker run -p 9335:8080 -v /opt/seaweed/vdir2:/data --name weed_volume2 --link weed_master chrislusf/seaweedfs volume -max=30 -mserver="weed_master:9333" -port=8080  -dataCenter=dc1 -rack=rack1 -publicUrl="volume2.tonisf.com:88"

 

三个master 二个slave 部署方式

#服务器 21 22 23
nohup ./weed master -port=9333 -mdir=/opt/seaweed/mdir -defaultReplication=001 -ip=192.168.100.21 -peers=192.168.100.21:9333,192.168.100.22:9333,192.168.100.23:9333  >> master.log 2>&1 &
nohup ./weed master -port=9333 -mdir=/opt/seaweed/mdir -defaultReplication=001 -ip=192.168.100.22 -peers=192.168.100.21:9333,192.168.100.22:9333,192.168.100.23:9333 >> master.log 2>&1 &
nohup ./weed master -port=9333 -mdir=/opt/seaweed/mdir -defaultReplication=001 -ip=192.168.100.23 -peers=192.168.100.21:9333,192.168.100.22:9333,192.168.100.23:9333 >> master.log 2>&1 &
#服务器 22
nohup ./weed volume -port=9334 -dir=/opt/seaweed/vdir1 -max=30 -mserver=192.168.100.21:9333,192.168.100.22:9333,192.168.100.23:9333 -dataCenter=dc1 -rack=rack1   -publicUrl=volume1.tonisf.com -ip=192.168.100.22 >> v1.log 2>&1 &
#服务器 23
nohup  ./weed volume -port=9335 -dir=/opt/seaweed/vdir2 -max=30 -mserver=192.168.100.21:9333,192.168.100.22:9333,192.168.100.23:9333 -dataCenter=dc1 -rack=rack1  -publicUrl=volume2.tonisf.com -ip=192.168.100.23 >> v2.log 2>&1 &

 常见问题

  • 提示没有文件夹权限,关闭selinux
  • java.lang.RuntimeException: 文件上传失败,原因:{"error":"rpc error: code = Unknown desc = Cannot grow volume group! No matching data node found! \ndc1:Only has 0 racks with more than 2 free data nodes, not enough for 1."}  ,重启weed_master后解决

 

posted @ 2023-01-16 14:56  MELODY_FENG  阅读(836)  评论(0编辑  收藏  举报