找回密码
 注册
查看: 517|回复: 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允许以另一种方式上传文件
    $ y: E* h0 ~; M' C0 y
  • 安装启动
    4 f8 M/ V' X; |: A
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
      Y0 n" ~- t" W' \& W/ D
  • 启动& k- y& h1 ?9 C/ |
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 &

    7 B& F$ E' ^' g
  • 上传文件* T' t# G" H; p+ r% @* H
         [root@seaweedfs ~]# curl -F "filename=@/usr/src/go1.11.10.linux-amd64.tar.gz"     "http://192.168.120.47:8888/path/to/sources/"
    1 ]# W2 n# v6 k0 Y: Y
{"name":"go1.11.10.linux-amd64.tar.gz","size":121074848}[root@seaweedfs~]#

    $ D% }8 ^( I! [& Q% Z* c
  • 返回结果
    , i6 W( S) d( m     {"name":"volume.log","size":1656,"fid":"13,0da7c2b7ff","url":"http://192.168.88.130:9222/13,0da7c2b7ff"}& L% I" {9 a6 {% U: T
         
    可以看到,前面的上传需要两步,现在用filer上传,只需要一步,并且可以指定文件夹,这里的/path/to/sources/就是文件路径5 L3 k2 ^( E) k0 W- t9 F: |3 A
  • 可直接输入http://192.168.120.47:8888/ 地址进行访问.下载和前面的流程一样.6 N( o& u& }; h5 d- T& z: A- ~

mount挂载

    # K/ L. h1 e- s$ T
  • [root@seaweedfs ~]# mkdir -p /data/seaweedfs/seaweedfs/data/mount2 P& `. c9 S/ i7 s3 e7 N
  • 指定文件管理器挂载到/seaweedfs/data/mount目录下
    5 H) H( S! p6 B" I" Q& ?
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目录下.' _1 w) M7 m+ D  P/ t6 u
具体信息以官方wiki为主.
- _. t* k$ l& s4 `3 b! |

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-9-15 10:00:09 | 显示全部楼层
下载  X2 p1 T/ T8 w6 q7 A# B: B- M  d
wget https://github.com/chrislusf/sea ... /linux_amd64.tar.gz2 S; x3 j$ g$ \. p
解压
& s" j: W3 ]! i2 Itar -zxvf linux_amd64.tar.gz
- m3 k8 h7 g# i7 v安装
- s1 u0 [9 k  M# Qmv weed /usr/local/bin/weed* o. ~( M8 R: z. N/ M6 l5 a8 a
文档7 e  d: H- J1 b, A
#概况
  ^9 ]6 R3 T" ^3 fweed -h
8 w7 {3 E$ \" @5 d* q. a, O#中央服务器
1 n+ u  E3 d' b1 nweed master -h; L" @6 [8 E/ W# H6 D
#存储服务器( O/ i( h0 F4 U' Y7 i
weed volume -h# q) l# X" y0 d
单机' q8 Y. M* d2 `* n  t# l4 @) }# Z
master(中央服务器)
& y1 Q3 N9 A8 J) n设置一台 master,两台 volume ,同一个 dataCenter(机房),同一个 rack(机架),备份策略(001):相同的机架里备份一份数据( [! {0 X* R2 E7 }

# i0 Z% i, A# H* I7 K$ unohup weed master -port=9333 -volumeSizeLimitMB=1024 -defaultReplication=001 -mdir=/mnt/weedfs/m1 > m1.log &
! I8 Q# @7 |. Y/ y  bdefaultReplication(副本策略):是 xyz 顺序排列的数值,默认值:000 不备份。
0 c, l9 \: X5 S2 N7 K4 ~数值        含义$ l1 M7 H6 _1 n% ~
x        在不同的 dataCenter(机房),所需要备份的数量6 ?6 G) B, a) \4 {; Y: N! g; [
y        在相同的 dataCenter(机房),不同的 rack(机架),所需要备份的数量1 |; {4 m# d, n) R& P. t. @0 z% `
z        在相同的 dataCenter(机房),相同的 rack(机架),所需要备份的数量
+ @: z7 ^2 a- S' o/ {+ C5 C( ], Kvolume(存储服务器)
2 X5 j0 P; L3 V2 O+ T- Vnohup weed volume -port=9222 -mserver="localhost:9333" -publicUrl=/volume1 -max=500 -dir=/mnt/weedfs/v1 > v1.log &2 r8 X3 @* j0 N% g) D0 w/ s
0 g; ]3 ]& Q% {& U
nohup weed volume -port=9223 -mserver="localhost:9333" -publicUrl=/volume2 -max=500 -dir=/mnt/weedfs/v2 > v2.log &
" v* ]7 u. {" y' W( L-max参数为最大逻辑卷数量,如果磁盘可用空间为500G,( 500 * 1024 ) / 1024[volumeSizeLimitMB] = 500,那最大值为 -max = 500
3 {/ U. a9 a4 |' N0 V1 `' i( }& ^nginx(代理服务器)0 ?! ?% V3 ?% X& `9 [8 c
server {" F, x2 B3 h+ F" i) ^$ f6 r# y
    - n- D. k7 V5 S3 [& V# ~* m7 `
    listen       80;
3 h% ^, b, f8 E3 u0 X5 a; V% O    server_name  file.example.com;2 [. P: M, i1 H
    2 m1 p4 p5 S0 D5 m6 L
    location /volume1/ {  ^: Q5 e$ v6 P: D- P! X7 G9 s0 t( `
        proxy_pass http://localhost:9222/;$ B: p/ b0 V* M0 V& `6 n
    }
0 e9 R8 j( l( N8 t8 ?4 [1 s- e; {4 T, ^( O. s! p
    location /volume2/ {
; i6 `0 t, y4 F  k4 w          proxy_pass http://localhost:9223/;
4 [7 q/ v! I9 I    }
9 @, H( d3 X6 u5 {8 Q9 T: v    + _2 Z! N% @1 i+ L; x
}
$ w( j( g8 L/ i5 u0 H代理详情,如下:
6 ^5 G+ f: D9 W" \
6 Y( G) r+ j8 e4 n用户访问的地址:http://file.example.com/volume1/6,06bb28cc0d.png( b% I7 W- l) Z; S8 D
: v- q) @4 `" p9 |
实际访问的地址:http://127.0.0.1:9222/6,06bb28cc0d.png
% d0 C6 m, b# e6 ?: D
* J# X+ _2 i% k" |* t" v集群* ?  i( D, {9 x4 a) n3 a- z& \6 l4 t2 i9 j
master(中央服务器): I  M6 D8 c- o% N; n) ?# K
设置三台 master (必须为奇数),三台 volume,不同的 dataCenter(机房),不同的 rack(机架),备份策略(100):不同的机房里备份一份数据* |% G) L1 q+ V: V

) M' |8 G5 S0 |( D* fnohup 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 &
* H) r* O' _0 H  H8 N* z* v- `( W& g
nohup 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 &4 c& Y/ H! U5 S  }, ?2 o6 k% q) P. v* h
# @  S' E, Z  U7 K* Q
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 &. Q) Y! J" }5 S; p2 n2 F
volume(存储服务器)
& I3 K. x, @3 m6 t9 E6 znohup 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 &* v2 l4 i7 Z; A- w% @# P. |) u

# {8 \! g5 c% _+ O. m+ T5 A! unohup 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 &
' X5 G: @- ~4 [5 Y7 R- L4 A3 `& l, r; z4 S
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 &
  V  O/ ?) u7 a; E0 v% Z8 t如果最大逻辑卷数量设置为零-max = 0,该限制将自动配置为磁盘可用空间除以卷大小,默认值为:“8”。
, ~( W) K  N. l5 w( s0 ~3 Jnginx(代理服务器)
3 P  E/ T# ]. F3 Bupstream volumes {
) b. g) q% l; W) j    server 192.168.0.10:9222;& }& R5 c' P9 p5 T. c) s
    server 192.168.1.10:9223;8 T) q/ i9 \6 K6 _) D$ p$ f2 s
    server 192.168.1.10:9224;* c8 a8 i! t$ C4 j, [' {$ |$ m
}
& P( O0 Z8 B9 k" N0 d$ @
6 h1 W% e8 P" P+ A" Wserver {! @" `# ]' i8 `3 s- y. I

4 b4 C# f+ [" `, m9 j8 s" N4 S, E    listen       80;
, q! b9 t1 A, u# _- V5 j    server_name  file.example.com;$ K$ N8 T1 j0 N; V
8 i2 a& v. L# X
    location / {' T/ q3 k5 v, K- [$ |
        proxy_pass http://volumes;
7 ^. z" v0 D9 G( r5 z2 V# @, X) O. a0 N    }
5 v  f/ A& @/ ~, Y0 Y, s
& _- J8 _2 J/ n- M}7 e) u' c* T# A* K5 f
可通过volume服务器的参数 -readMode = proxy(值:local | proxy | redirect)来设置,默认值为:“proxy”。
# V& H: c5 z. D5 Y2 D3 ZAPI* E' J' x: y( ^6 `1 C2 n
上传
- D+ l) m2 ^9 q1 D# \直接向master(中央服务器)上传文件,内部自动分配文件ID,命令如下:
; I6 g/ D& n* c4 @0 b, w2 Q( |# d& }# F3 l
curl -X POST -F file=@/test/1.png http://127.0.0.1:9333/submit?col ... amp;replication=001# Z* m0 ~8 t; e- j" z; ~) Q3 l
上传成功返回下面结果:
) Y% b- b4 t* i! s8 l- v5 E
* m+ y* ]9 l7 e0 B' T5 j{
6 y1 g2 u' U) K    "fid": "3,01637037d6",
+ E+ M# O/ K' D% P2 p9 ]    "fileName": "1.png",& K% W0 B3 E, O! S, \
    "fileUrl": "http://127.0.0.1:9222/3,01637037d6",
$ `) J( q0 `: P6 H0 @    "size": 50326; U0 j5 }( B# x& Y5 K$ ]
}
5 ?* M0 x& g/ N$ G' |# G0 b参数 ttl 表示过期时间(单位: m [分钟] | h [小时] | d [天] | w [周] | M [月] | y [年])
5 w% ^4 Z. f3 i" g( O+ o) R" F( p8 \  B+ H: E0 k1 f5 h2 B. Y
查看
. l7 r0 h. H  |% y) Y. MURL可在浏览器中直接打开:+ d( P; _* q# P4 l
9 p6 z2 z5 ^& Y+ C8 @
http://127.0.0.1:9222/3,01637037d6
! D* J2 L9 i6 FURL可访问的等效变种地址:0 j1 d& ^4 e# Q. h
# p* x( o6 a* O3 i1 j, s' n

' C! p1 D& F+ z$ {" q+ \
7 X0 S/ h$ z# H, R! x# y7 ^http://127.0.0.1:9222/3,01637037d6.jpg/ z, \* R& t+ F
http://127.0.0.1:9222/3/01637037d6/ m3 j) i) O/ `4 `- W: u4 ]: ]
http://127.0.0.1:9222/3,01637037d6
- o" H- ]5 j1 S$ k% z缩放
4 |9 ?6 h& c, F/ yhttp://127.0.0.1:9222/11,1af9f35ee7.jpg?width=200&height=200&mode=fit/ D' w2 m, L; c6 H4 }
mode(值: fit | fill )" a0 K4 E$ }8 o* S, G% K% [
6 y+ u6 D7 M1 E. A, d
覆盖0 r' k& r# L' b# i
直接对某个已存在的fileUrl 提交POST 请求,将新文件上传即可,新文件内容自动覆盖老的文件,如:3 v* h, a* Q8 l+ w
  U/ ]4 J- c% k
curl -X POST -F file=@/2.png http://127.0.0.1:9222/11,1af9f35ee7* l( C7 T. j* d: i  W4 \
返回结果为:
0 v  x9 p( G6 y9 y- |( e, Y; B5 P; a5 y+ }3 S/ ^  X
{
/ Z1 t9 C, J/ w, Z    "name": "2.png",6 V0 z# V5 }  \, F( l0 y
    "size": 503265 Z$ b8 s* ^8 e- u0 V0 o
}9 ~8 Q4 N0 H% C- b
删除% \' ^2 h* m& I( ?! V- q
使用文件所在的volume存储服务器地址执行如下命令
6 B8 j9 u' C* t0 v2 W' i. o
" V* Y& c7 ]; R! {3 A; R方法一、
5 X/ ^+ L5 {5 s% O9 B# v) Xcurl -X DELETE http://127.0.0.1:9222/11,1af9f35ee7
7 y/ z/ W( R6 x' P6 T
( G. Z$ [/ ^9 v7 G方法二、0 c8 l6 d2 _: K2 r8 [- Z% X
curl -X POST http://127.0.0.1:9222/delete?fid=11,1af9f35ee72 ~& a; _) L0 x' u+ O" ~8 Z5 O

9 o  o0 F2 {% W0 w3 W返回值:
; q7 w# f) y. x5 r2 C: m' k5 w[ {  "fid": "11,1af9f35ee7", "size": 50326 } ]
4 |: `' Q+ {' ?5 g8 P注: 无返回值或size值为0都为删除失败9 c1 i" J( }& z5 F+ J

0 ]+ S% f, t" L$ Z+ Q) O断点
7 q  k: i  i1 Q, @5 }6 h3 w0 ~断点续传和断点(并发)下载,是通过标准HTTP的ETag, Accept-Range 进行支持,具体参看标准示例。
9 p: O, v$ u/ ]7 r( n* [; r8 U5 B7 s) [" @# B7 A
其他
) G  b  ~) f+ b4 B4 y$ K4 B& i一、volume的节点信息
" W4 v1 B2 B& V/ n' bcurl http://127.0.0.1:9222/status?pretty=y
9 P& d: ~& v* {- g( ~( t0 u) m8 w5 j& a- F4 V0 v
二、查看master下volume节点7 M& a5 p, n" U, F% O! G, y
curl http://127.0.0.1:9333/dir/status?pretty=y& H5 E% P$ X# L# z& l7 L4 l

0 {/ k4 o# Q# X3 f4 A三、查看集群master信息
9 y; `$ @/ j, ]9 M. v3 `# mcurl http://127.0.0.1:9333/cluster/status?pretty=y
, I& j% G2 C$ \+ Y+ R
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:56 , Processed in 0.024895 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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