replica文件服务器,seaweedfs文件存储服务器搭建

概述

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

在逻辑上Seaweedfs的几个概念:

Node 系统抽象的节点,抽象为DataCenter、Rack、DataNode

DataCenter 数据中心,对应现实中的不同机房

Rack 机架,对应现实中的机柜

Datanode 存储节点,用于管理、存储逻辑卷

Volume 逻辑卷,存储的逻辑结构,逻辑卷下存储Needle

Needle 逻辑卷中的Object,对应存储的文件

Collection 文件集,可以分布在多个逻辑卷上

一. 安装go环境

安装规划

master: 172.16.20.71

volume:

172.16.20.71*3

172.16.20.72*2

查看系统位数

getconf LONG_BIT

选择对应的版本下载

cd /usr/local

# 下载

wget https://golangtc.com/static/go/1.9.2/go1.9.2.linux-amd64.tar.gz

# 将其传到其他两台机器

# 解压 tar -zxf go1.9.2.linux-amd64.tar.gz # 配置 vim /etc/profile #加入 export GOPATH=/opt/go export GOROOT=/usr/local/go export GOOS=linux export GOBIN=$GOROOT/bin export GOTOOLS=$GOROOT/pkg/tool/ export PATH=$PATH:$GOBIN:$GOTOOLS # 使配置文件生效 source /etc/profile # 查看 go version

安装git mercurial

yum install -y mercurial git

二. 安装seaweedfs

1. 下载

cd /usr/local

https://github.com/chrislusf/seaweedfs/releases/选择对应的版本

wget https://github.com/chrislusf/seaweedfs/releases/download/0.96/linux_amd64.tar.gz

2. 解压

tar -zxf linux_amd64.tar.gz

3. ./weed -h 查看帮助

4. 创建运行需要的目录

/root/sea/data

/root/sea/vol/vol[1-3]

/root/sea/logs

5. 配置运行master

nohup /usr/local/weed master -mdir=/root/sea/data -port=9333 -defaultReplication="001" -ip="172.16.20.71" &>> /root/sea/logs/master.log &

6. 配置运行volume

# 172.16.20.71

/usr/local/weed volume -dir=/root/sea/vol/vol1 -mserver="172.16.20.71:9333" -port=8081 -ip="172.16.20.71" &>>/root/sea/logs/vol1.log &

/usr/local/weed volume -dir=/root/sea/vol/vol2 -mserver="172.16.20.71:9333" -port=8082 -ip="172.16.20.71" &>>/root/sea/logs/vol1.log & /usr/local/weed volume -dir=/root/sea/vol/vol3 -mserver="172.16.20.71:9333" -port=8083 -ip="172.16.20.71" &>>/root/sea/logs/vol1.log & # 172.16.20.72 /usr/local/weed volume -dir=/root/sea/vol/vol1 -mserver="172.16.20.71:9333" -port=8081 -ip="172.16.20.72" &>>/root/sea/logs/vol1.log & /usr/local/weed volume -dir=/root/sea/vol/vol2 -mserver="172.16.20.71:9333" -port=8082 -ip="172.16.20.72" &>>/root/sea/logs/vol1.log & /usr/local/weed volume -dir=/root/sea/vol/vol3 -mserver="172.16.20.71:9333" -port=8083 -ip="172.16.20.72" &>>/root/sea/logs/vol1.log &

7. 上传文件测试

文件上传首先需要请求master, 去分配一个逻辑卷和fid

curl http://172.16.20.71:9333/dir/assign

返回结果

{"fid":"3,57f4e1098c93","url":"172.16.20.71:8082","publicUrl":"172.16.20.71:8082","count":1}

使用返回的url和fid上传文件

curl -F "file=/home/hufengjiu/ka.jpg" 172.16.20.71:8082/3,57f4e1098c93

可以这么理解, 上传文件, 首先请求master分配volume和fid, 然后将文件上传到某个卷下

wget 172.16.20.71:8082/3,57f4e1098c93 可以将该图片文件下载下来,

也可以在浏览器直接访问

172.16.20.71:8082/3,57f4e1098c93

也可以指定图片大小

172.16.20.71:8082/3,57f4e1098c93?width=100&height=20

查看卷目录

3545866

image.png

因为我已经上传了很多文件, 所以这个目录很大, 仔细观察, 每一组都是有dat和idx组成, dat是数据部分,idx是索引部分

python版本: python2.7

pip安装

pip install python-weed

# 需要的依赖库

pip install requests

pip install conf

使用

将/root/hufengjiu/pic目录下所有的图片文件上传, 代码如下

# ** -- coding: utf-8 -- **

#!/usr/bin/env python

from weed.master import WeedMaster

from weed.volume import WeedVolume import glob import os.path as op # 获取pic目录下所有图片文件 globlist = glob.glob(r"/root/hufengjiu/pic/*/*.[png|jpg|jpeg]*") print len(globlist) master = WeedMaster(host='172.16.20.71') urls = [] results = [] for i in globlist: #分配volume和fid assign = master.get_assign_key() host_port = assign['url'].split(':') url = assign['url'] + '/' + assign['fid'] volume = WeedVolume(host=host_port[0], port=int(host_port[1])) #上传图片 if op.isfile(i): result = volume.put_file(i, assign['fid']) urls.append(url) results.append(result) # 将所有的图片url保存起来 print urls

五. 配置运行Filer并挂载到本地目录

1. 安装启动

生成配置文件

mkdir -p /etc/seaweedfs

cd /etc/seaweedfs

touch filer.toml

mkdir -p /root/sea/filer_path/level

将/usr/local/weed scaffold filer -output=""打印出的内容写入到 filer.toml中, 并且修改其中的配置

dir = "/root/sea/filer_path/level"

可以使用文件, MySQL, redis等保存 filer metadata, 只需要启用或者停用对应的配置

启动

/usr/local/weed filer -master=172.16.20.71:9333 -ip=172.16.20.71 -defaultReplicaPlacement='001'&

上传文件

curl -F "filename=@ka.jpg" "http://172.16.20.71:8888/path/to/sources/"

会返回{"name":"ka.jpg","size":8601,"fid":"6,57f5feb19f1c","url":"http://172.16.20.71:8082/6,57f5feb19f1c"}

访问

使用http://172.16.20.71:8888/path/to/sources/ka.jpg或者http://172.16.20.71:8082/6,57f5feb19f1c都可以访问

2. mount挂载

yum install -y fuse

/usr/local/weed mount -filer=172.16.20.71:8888 -dir=/root/sea/mount &

cd /root/sea/mount, 就可以查看具体上传的文件

具体信息以官方wiki为主

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值