找回密码
 注册
查看: 521|回复: 1

Seaweedfs 安装全过程

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-9-15 10:00:08 | 显示全部楼层 |阅读模式
Seaweedfs 安装
安装Go
1、下载go
2、解压
tar xfgo1.11.10.linux-amd64.tar.gz -C /usr/local/
3、修改/etc/profile
vim /etc/profile
export GOPATH=/opt/go
exportGOROOT=/usr/local/go
export GOOS=linux
exportGOBIN=$GOROOT/bin
exportGOTOOLS=$GOROOT/pkg/tool/
exportPATH=$PATH:$GOBIN:$GOTOOLS
source /etc/profile
安装weed
1、Github下载指定版本
2、上传并解压
tar xflinux_amd64.tar.gz -C /usr/local/
3、创建安装目录
mkdir -p /data/seaweedfs/logs
mkdir -p /data/seaweedfs/data
mkdir -p /data/seaweedfs/vol/vol01
mkdir  -p /data/seaweedfs/vol/vol1/
4、添加启动脚本
vim/data/seaweedfs/weedfs.sh
#!/bin/bash
nohup /data/seaweedfs/weedmaster -mdir="/data/seaweedfs/data/" -ip="192.168.120.47" -ip.bind="192.168.120.47"-port=9333 -peers="192.168.120.47:9333,192.168.120.47:9333,192.168.120.47:9333"-defaultReplication="200" &>> /data/seaweedfs/logs/master.log&
nohup /data/seaweedfs/weedvolume -dataCenter=Center1 -rack rack1 -ip=192.168.120.47 -port=9991 -ip.bind192.168.120.47 -max 20 -dir=/data/seaweedfs/vol/vol1/ -mserver=192.168.120.47:9333-publicUrl 192.168.120.47:9222 &>> /data/seaweedfs/logs/vol1.log  &
nohup ./weed volume-dataCenter dc1 -rack rack1 -dir ./seaweedfs/volume -ip 192.168.88.129 -port9222 -ip.bind 192.168.88.129 -max 20 -mserver192.168.88.129:9333,192.168.88.130:9333,192.168.88.131:9333 -publicUrl192.168.88.129:9222 > ./seaweedfs/volume/volume.log &
nohup /data/weedmaster -mdir="/data/seaweedfs/data/" -ip="192.168.120.47"-ip.bind="192.168.120.47" -port=9333-peers="192.168.120.47:9333,192.168.120.47:9333,192.168.120.47:9333"-defaultReplication="200" >> /data/seaweedfs/logs/master.log2>&1 &
nohup /data/weedvolume -dataCenter=Center1 -ip=192.168.120.47 -port=9991-dir=/data/seaweedfs/vol/vol1/ -mserver=192.168.120.47:9333 >>/data/seaweedfs/logs/vol1.log 2>&1 &
chmod +x/data/seaweedfs/weedfs.sh
5、创建启动程序
vim/usr/lib/systemd/system/weedmaster.service
[Unit]
Description=weedmaster
After=network.target rc-local.service
[Service]
Type=forking
PrivateTmp=true
ExecStart=/data/seaweedfs/weedfs.sh
[Install]
WantedBy=multi-user.target
6、启动seaweedfs
systemctl enableweedmaster
systemctl startweedmaster
http://192.168.120.47:9333/
调试:
nohup /data/seaweedfs/weed master -ip=192.168.120.47-port=9333 -mdir=/data/seaweedfs/data -peers=192.168.120.47:9333,192.168.120.47:9333,192.168.120.47:9333>> /data/seaweedfs/data/master.log &
nohup /data/seaweedfs/weed volume -dataCenter dc1-rack rack1 -dir /data/seaweedfs/volume -ip 192.168.120.47 -port 9222 -ip.bind192.168.120.47 -max 20 -mserver 192.168.120.47:9333,192.168.120.47:9333,192.168.120.47:9333-publicUrl 192.168.120.47:9222 >> /data/seaweedfs/volume/volume.log &
测试:
{"fid":"1,01592b640e","url":"192.168.120.47:9222","publicUrl":"192.168.120.47:9222","count":1}[root@seaweedfs~]#
[root@seaweedfs ~]# curl -Ffile=/data/seaweedfs/volume/volume.log   192.168.120.47:9222/1,01592b640e
{"size":33,"eTag":"d7a0738f"}[root@seaweedfs~]#
[root@seaweedfs ~]# curl -Ffile=@/usr/src/linux_amd64.tar.gz   192.168.120.47:9222/1,01592b640e
{"name":"linux_amd64.tar.gz","size":35348455,"eTag":"0747f50b"}[root@seaweedfs~]#
配置运行Filer并挂载到本地目录
Filer允许以另一种方式上传文件

    7 X7 h  m7 o9 a8 S" ~- v
  • 安装启动% J# [) ]) s, [, X- M5 Q
mkdir -p /data/seaweedfs
cd /data/seaweedfs   
创建filter文件:
touch filer.toml
mkdir -p /data/module/filer_path/level
/data/seaweedfs/weed scaffold filer-output="" >filer.toml
打印出的内容写入到 filer.toml, 并且修改其中的配置
dir = "/data/module/filer_path/level"
可以使用文件, MySQL, redis等保存 filer的元数据信息, 只需要启用或者停用对应的配置,具体请参考https://github.com/chrislusf/seaweedfs/wiki/Filer-Server-API

    " ?9 R/ h2 h9 T4 A) k4 o
  • 启动
    9 D3 \  ^" M+ Q& N/ W. K/ h' b# G
nohup /data/seaweedfs/weed filer-master=192.168.120.47:9333,192.168.120.47:9333,192.168.120.47:9333-ip=192.168.120.47 -port=8888 &
    " t+ H1 \" j5 G4 i2 |9 q  t
  • 上传文件3 S5 p  W! l3 |3 I6 e
         [root@seaweedfs ~]# curl -F "filename=@/usr/src/go1.11.10.linux-amd64.tar.gz"     "http://192.168.120.47:8888/path/to/sources/"

    7 W, I9 P" [9 O) N, P
{"name":"go1.11.10.linux-amd64.tar.gz","size":121074848}[root@seaweedfs~]#

    , }& ^. s5 A* ~+ f
  • 返回结果
    % k: n& J9 c9 X& q9 t     {"name":"volume.log","size":1656,"fid":"13,0da7c2b7ff","url":"http://192.168.88.130:9222/13,0da7c2b7ff"}
    * \: A' K' P3 Y3 Y+ Y/ J     
    可以看到,前面的上传需要两步,现在用filer上传,只需要一步,并且可以指定文件夹,这里的/path/to/sources/就是文件路径
    4 P8 i* K3 h( k# P  z# R# ^7 m3 B
  • 可直接输入http://192.168.120.47:8888/ 地址进行访问.下载和前面的流程一样.; R  `- ?- P3 K! V

mount挂载

    ; ]% b! m6 M+ g+ y
  • [root@seaweedfs ~]# mkdir -p /data/seaweedfs/seaweedfs/data/mount; v5 o; d6 j+ ~8 x
  • 指定文件管理器挂载到/seaweedfs/data/mount目录下
      ]1 A7 l+ U: ]( {- w! J
nohup /data/seaweedfs/weed mount-filer=192.168.120.47:8888 -dir=/data/seaweedfs/seaweedfs/data/mount/ &
执行命令后,便可看到通过filer上传的文件已经挂载到了本地/data/seaweedfs/seaweedfs/data/mount/  path/to/sources目录下.0 k4 d; I8 |* a
具体信息以官方wiki为主.

$ O& ~$ A& H  a6 e$ [5 P

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-9-15 10:00:09 | 显示全部楼层
下载
* N2 T5 U2 F2 A9 N' e9 X3 O$ Rwget https://github.com/chrislusf/sea ... /linux_amd64.tar.gz
  v- w* e" I* g& w+ W' e  a解压: I9 X1 c/ B& a: C) X/ i, ]/ C
tar -zxvf linux_amd64.tar.gz
4 B3 ^  w% X/ b安装
% T9 N: f  x2 g$ S3 y) emv weed /usr/local/bin/weed$ Q5 j- ^* \- o1 Q6 C
文档
9 L7 `3 h2 \2 D: u9 j9 t2 n1 L& P#概况5 w/ t! F3 b7 q
weed -h# k$ }+ d2 d+ x+ n( w2 @
#中央服务器
( A! t8 w& G0 W) Z! q* F: ^weed master -h+ u9 D9 [& n9 F3 u2 y) i* ]
#存储服务器( K6 o- g) o9 W# L4 C5 ^2 L
weed volume -h
8 d9 I5 ]8 k7 Z9 `! w  o单机+ W! D  S. i& ^) O. p
master(中央服务器), d* n) T4 b0 N% ?, b
设置一台 master,两台 volume ,同一个 dataCenter(机房),同一个 rack(机架),备份策略(001):相同的机架里备份一份数据/ E3 R: o( J4 B4 \
5 @* u6 ?1 s* k3 K* |4 \) h
nohup weed master -port=9333 -volumeSizeLimitMB=1024 -defaultReplication=001 -mdir=/mnt/weedfs/m1 > m1.log &; a% }5 h( M  |; ~6 D) m
defaultReplication(副本策略):是 xyz 顺序排列的数值,默认值:000 不备份。+ ]& N" G3 I7 O
数值        含义
" o& z, H8 [+ W5 z6 R! U- G0 h6 G" dx        在不同的 dataCenter(机房),所需要备份的数量5 P$ L' k+ e1 T6 Z3 F
y        在相同的 dataCenter(机房),不同的 rack(机架),所需要备份的数量
$ _* p) \9 o7 Gz        在相同的 dataCenter(机房),相同的 rack(机架),所需要备份的数量
7 V* i4 X7 r$ i6 |1 P5 J4 x- Cvolume(存储服务器)0 e  L. ~9 t" ^; p
nohup weed volume -port=9222 -mserver="localhost:9333" -publicUrl=/volume1 -max=500 -dir=/mnt/weedfs/v1 > v1.log &
: P4 N/ q1 p2 j8 N5 }% ]9 T
5 |' ]+ S( n$ q4 r, p1 q4 e3 {nohup weed volume -port=9223 -mserver="localhost:9333" -publicUrl=/volume2 -max=500 -dir=/mnt/weedfs/v2 > v2.log &
$ W& I4 _2 v. X5 y3 ^-max参数为最大逻辑卷数量,如果磁盘可用空间为500G,( 500 * 1024 ) / 1024[volumeSizeLimitMB] = 500,那最大值为 -max = 5009 x: _9 Z4 h1 A* o0 S
nginx(代理服务器)
& ^6 q8 I+ X0 m3 r) E2 j! Eserver {
# I5 u1 _9 {' {+ ^9 j% ~* y    " S$ G$ t9 @6 D
    listen       80;
) P" W  K; Y* B* h+ {. C1 Q1 k/ i2 W    server_name  file.example.com;6 f& `2 y# I- o
    & \5 P6 T) u  J- C
    location /volume1/ {
  E) e( [$ C6 Y# R7 ^6 O3 A        proxy_pass http://localhost:9222/;3 U! ^" v" G' g" {/ Z
    }  }9 i$ B% x, k, \8 p
& L- J% N( d! c, S* K7 c
    location /volume2/ {
) h4 a2 L5 P/ L! E' J          proxy_pass http://localhost:9223/;
7 n9 g! g; h2 D* g/ ?7 W7 i    }
4 E( F8 H8 u, h& m+ j: b, G  M    2 I" I1 E5 E' i! D8 {
}# @: u9 m# {" ?, }
代理详情,如下:0 @5 W1 D1 J. o6 v
) ~/ f# M; n7 F; a! [8 C
用户访问的地址:http://file.example.com/volume1/6,06bb28cc0d.png
. C4 I! ^( J6 g
1 ?7 V* R" f6 l) L; @实际访问的地址:http://127.0.0.1:9222/6,06bb28cc0d.png
( Z: X  O+ j/ `" W
" W( Q! A5 c; r: q" a3 p集群" n! v5 H/ T6 o8 c* X
master(中央服务器)% B) L" U* ~" ~/ @- W! o( T0 G
设置三台 master (必须为奇数),三台 volume,不同的 dataCenter(机房),不同的 rack(机架),备份策略(100):不同的机房里备份一份数据- W/ [# V3 r0 n; Q; Z% T

) d. y9 ]0 M! \nohup weed master -port=9333 -ip=192.168.0.1 -peers=192.168.0.1:9333,192.168.1.1:9334,192.168.1.2:9335 -volumeSizeLimitMB=1024 -defaultReplication=100 -mdir=/mnt/weedfs/m1 > m1.log &4 |2 `7 g# W3 M7 f; I( F

" f& p, v) k+ ?$ c9 q+ Tnohup weed master -port=9334 -ip=192.168.1.1 -peers=192.168.0.1:9333,192.168.1.1:9334,192.168.1.2:9335 -volumeSizeLimitMB=1024 -defaultReplication=100 -mdir=/mnt/weedfs/m2 > m2.log &1 P% l: z+ g. [* q& u
1 J' k9 V7 [. q1 |8 `
nohup weed master -port=9335 -ip=192.168.1.2 -peers=192.168.0.1:9333,192.168.1.1:9334,192.168.1.2:9335 -volumeSizeLimitMB=1024 -defaultReplication=100 -mdir=/mnt/weedfs/m3 > m3.log &
1 {4 d( J' R2 C( o( mvolume(存储服务器)" L, p) l8 b& s3 j6 A/ F+ Z  c6 _1 {8 X
nohup weed volume -ip=192.168.0.10 -port=9222 -dataCenter=dc1 -rack=rc1 -max=0 -mserver=192.168.0.1:9333,192.168.1.1:9334,192.168.1.2:9335 -dir=/seaweed/v1 > v1.log &
0 v" t1 d3 y% G  u" s7 |7 h+ |( m
8 J# r4 a  z2 }nohup weed volume -ip=192.168.1.10 -port=9223 -dataCenter=dc2 -rack=rc1 -max=0 -mserver=192.168.0.1:9333,192.168.1.1:9334,192.168.1.2:9335 -dir=/seaweed/v2 > v2.log &) d/ ^; {) O% ~6 O; F, i4 S+ A
9 w" U, w* l% c% T. f
nohup weed volume -ip=192.168.1.20 -port=9224 -dataCenter=dc2 -rack=rc2 -max=0 -mserver=192.168.0.1:9333,192.168.1.1:9334,192.168.1.2:9335 -dir=/seaweed/v3 > v3.log &- I4 Q6 ]2 |1 ]7 E1 [2 z
如果最大逻辑卷数量设置为零-max = 0,该限制将自动配置为磁盘可用空间除以卷大小,默认值为:“8”。& p3 Y$ }: ~7 E) ^: B
nginx(代理服务器)
3 d/ J  |- m' oupstream volumes {+ o4 K; C4 z; ]9 y
    server 192.168.0.10:9222;: M. e2 X% q4 C5 t8 x( g
    server 192.168.1.10:9223;4 A1 ^2 y( x' q% C6 m( a
    server 192.168.1.10:9224;8 m4 X  P  {( ~6 N
}, E  e: ~( P2 I: u$ w
4 N! G4 r/ l* N2 o+ N. q& X- `, J! v
server {' d" v& x1 J8 q5 S4 T" `& x. U3 W- O
( \4 k, B  T8 W7 o( ]2 `- D+ _2 G
    listen       80;
8 u  k, h. O' m! j# @4 m0 H0 ^    server_name  file.example.com;+ Q3 M( B. N- j4 _+ V! b- [. I2 Y

5 X+ u1 D1 ~/ Z4 f/ y    location / {
* R2 Y8 v0 ?: o" _9 L        proxy_pass http://volumes;; q& N8 T0 D/ r: x; M
    }' n1 C! ?7 [: B& Y$ Z- z8 f8 _' {
$ P% t  K- ^  D$ j9 R& Z
}
8 y- k2 i, W1 r& P" }3 _/ V; h可通过volume服务器的参数 -readMode = proxy(值:local | proxy | redirect)来设置,默认值为:“proxy”。
0 [1 _* L! h1 A3 e2 o. b  gAPI' K! v: c  D; {; V. u  i- R$ p( l
上传/ G, c2 |; x, c4 j
直接向master(中央服务器)上传文件,内部自动分配文件ID,命令如下:) }8 m9 P1 R  Y) G2 x' w3 t
1 J! x& r/ v# ?( Q. r; @2 J! B
curl -X POST -F file=@/test/1.png http://127.0.0.1:9333/submit?col ... amp;replication=001
: x$ q! ~7 j+ h% |$ ?- H( `4 T' Y上传成功返回下面结果:
+ i; d3 ^- B* `  \& |; b1 G
- M# [& u" K9 Z{( s- ^- k8 q9 U% H! k) h+ |. g
    "fid": "3,01637037d6",
) n7 r7 `7 s! Q. x4 k    "fileName": "1.png",8 I. E3 J0 y- b/ Q( Y* @
    "fileUrl": "http://127.0.0.1:9222/3,01637037d6",
, y% p6 W/ m  {) t; S5 g/ i    "size": 503261 @0 L. s! N" J$ G
}
# S' M1 o7 I# l3 X7 U4 _参数 ttl 表示过期时间(单位: m [分钟] | h [小时] | d [天] | w [周] | M [月] | y [年])- T8 g' a: w, v/ i' }$ I

4 |+ ~  M" n% q1 |& _% V) o查看
& k4 `+ ]+ Q4 W! W2 E- L( @) {URL可在浏览器中直接打开:6 H0 Q8 X8 a- p" l- r& r

9 `% a8 D' m1 m4 S, ]- Xhttp://127.0.0.1:9222/3,01637037d6. x+ Q! V. O+ X* k, ?# ]
URL可访问的等效变种地址:
% r/ d6 z7 }. h3 i, ~9 o1 ~5 G: u2 _3 R7 H3 v' Z
, N, A" c7 J% z( x3 @

% l1 @% O& Y1 Q6 l3 s0 u  y- ihttp://127.0.0.1:9222/3,01637037d6.jpg" d# J, x5 |* D! Q" `
http://127.0.0.1:9222/3/01637037d6
+ p  u4 f1 d* s4 yhttp://127.0.0.1:9222/3,01637037d6" X2 S( ]$ t0 A: J$ p5 j1 B
缩放# _* @% Z7 J. r2 E2 l- J
http://127.0.0.1:9222/11,1af9f35ee7.jpg?width=200&height=200&mode=fit! j- D+ p) _" ]. |- X. B3 s
mode(值: fit | fill ); K6 W$ L! \7 q0 ^
5 Q0 N3 k/ w5 X4 A- h8 |
覆盖
1 t( c$ q2 k2 ^) Q0 u) d( s4 r直接对某个已存在的fileUrl 提交POST 请求,将新文件上传即可,新文件内容自动覆盖老的文件,如:, Q4 H* F5 f) ^- [
' O( U' l* N; h
curl -X POST -F file=@/2.png http://127.0.0.1:9222/11,1af9f35ee7' B% b- x9 m0 X
返回结果为:
+ z' ?4 ^$ [- c/ j" ~) A( L8 |6 J, w
{3 a0 p6 v+ z3 @! u) ?2 _4 f
    "name": "2.png",  F. D6 J6 b& ]+ i- p) ^
    "size": 50326
# n3 C( g2 h! I5 O- J}  m* O5 d5 N+ _9 N. c+ a6 ]5 s& s
删除
% G9 a  |, K0 e2 }" M% _/ {使用文件所在的volume存储服务器地址执行如下命令
5 z) }! \. M: h9 p4 h! t  P4 m4 L, D" w& D' G, R/ m7 I2 @
方法一、
3 K2 e% S- L( L# gcurl -X DELETE http://127.0.0.1:9222/11,1af9f35ee7
* o1 M) C( E! p1 u) ^
# l' c' Z# w; g3 a. @) e方法二、
5 E* P, o% V# w) icurl -X POST http://127.0.0.1:9222/delete?fid=11,1af9f35ee7& N* E9 F$ C1 b7 W* A
5 f" m( X$ ~+ l$ G, `) I
返回值:; T8 s* G+ A7 p( n! B
[ {  "fid": "11,1af9f35ee7", "size": 50326 } ]* w' T$ p: I; J3 \! \
注: 无返回值或size值为0都为删除失败
+ r. m3 b7 b# k, F# V/ {/ x$ O, ^& x* i3 L4 n% s$ k$ H0 p
断点% U  E" B+ w* n) ^4 |
断点续传和断点(并发)下载,是通过标准HTTP的ETag, Accept-Range 进行支持,具体参看标准示例。8 e& G' Z: y. V

" a0 Q- @; O4 i& p8 ?' v其他# V: J/ i( i/ _
一、volume的节点信息
  t7 C# A) K- o7 S/ ~( Zcurl http://127.0.0.1:9222/status?pretty=y
8 N5 B1 H4 `' a- d( ]) y* F8 o" }0 y/ U! F, H
二、查看master下volume节点5 j8 f- H7 q* J! u8 G) }" D
curl http://127.0.0.1:9333/dir/status?pretty=y5 O' [# [- H- h9 y- P

. W. y' v2 x+ f% S' M三、查看集群master信息' k0 d7 i( V" b% M% l* K1 s
curl http://127.0.0.1:9333/cluster/status?pretty=y
. _9 j9 ]' t. P* C# D
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 03:02 , Processed in 0.016726 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表