易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 516|回复: 1
收起左侧

Seaweedfs 安装全过程

[复制链接]
发表于 2022-9-15 10:00:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
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允许以另一种方式上传文件
    : R5 a7 B! o! C# U1 n) n# @+ o
  • 安装启动
    $ I  p4 A6 G; p; h% p2 r1 G0 b, J
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

    ( o& z, w$ k0 F. W
  • 启动- T9 [2 |. l) `' e& V
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 &

    $ ]) w  w6 p- P, ]3 ^% `1 a6 l$ N
  • 上传文件
    + S4 P5 D9 ]& l! R& A     [root@seaweedfs ~]# curl -F "filename=@/usr/src/go1.11.10.linux-amd64.tar.gz"     "http://192.168.120.47:8888/path/to/sources/"

    3 |2 K! I* E6 e/ g) Y
{"name":"go1.11.10.linux-amd64.tar.gz","size":121074848}[root@seaweedfs~]#

    3 a8 |+ m& a! M
  • 返回结果
    * \/ E! G" O% c# u* N4 k5 v     {"name":"volume.log","size":1656,"fid":"13,0da7c2b7ff","url":"http://192.168.88.130:9222/13,0da7c2b7ff"}. o4 Z5 C0 m) E8 z3 U  ~. ]: H
         
    可以看到,前面的上传需要两步,现在用filer上传,只需要一步,并且可以指定文件夹,这里的/path/to/sources/就是文件路径' ~; G6 @; Z" h- i: L7 @# Y
  • 可直接输入http://192.168.120.47:8888/ 地址进行访问.下载和前面的流程一样.+ ~# i$ ]/ `1 J- ^5 v( \' n3 y

mount挂载
    - k) U# E. Z! z# y7 Z8 w
  • [root@seaweedfs ~]# mkdir -p /data/seaweedfs/seaweedfs/data/mount
    1 i: H/ z% ^8 {
  • 指定文件管理器挂载到/seaweedfs/data/mount目录下
    : W5 G% W& D5 O) t8 z& R3 A: o
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目录下.! I5 C' o3 w6 m0 Y1 x7 \! A
具体信息以官方wiki为主.
6 ~8 }# D# v9 _
 楼主| 发表于 2022-9-15 10:00:09 | 显示全部楼层
下载
1 y8 d& C9 ?6 Y7 B& ~wget https://github.com/chrislusf/sea ... /linux_amd64.tar.gz
8 `7 _  v% C3 o  \* O, [$ C3 V* Q解压; O5 E9 o: c! I* C! g- j
tar -zxvf linux_amd64.tar.gz
" b* Z/ L( ~7 B7 b# M3 }: n2 F安装3 a  Z/ P( n8 |/ H3 h# {
mv weed /usr/local/bin/weed
& c( X- l- j( v; S8 s文档; l# ]) m  T; C6 Q  m; w7 P
#概况
8 o3 a( n& U" j/ M  U/ iweed -h
) [- K; e7 H: c9 t& j, m& R#中央服务器
! V+ v) X" o- D, ^weed master -h7 F9 b+ f+ p' k! ^. W: M8 b4 k
#存储服务器0 F) D0 t! F- V" s: h" b
weed volume -h
3 m* p4 W( `9 W3 O单机
  _% [5 H) l1 U" _+ R8 Amaster(中央服务器)
: {* O' ?/ P$ h# |( \) w1 |设置一台 master,两台 volume ,同一个 dataCenter(机房),同一个 rack(机架),备份策略(001):相同的机架里备份一份数据: d6 H8 x( l9 L/ T
2 U) A8 f& g0 [) q$ h" ]7 i! E4 S
nohup weed master -port=9333 -volumeSizeLimitMB=1024 -defaultReplication=001 -mdir=/mnt/weedfs/m1 > m1.log &( ?# ]4 N( z. d3 E6 e
defaultReplication(副本策略):是 xyz 顺序排列的数值,默认值:000 不备份。
2 i, p/ U1 k* V数值        含义% q- S, Z2 {0 t
x        在不同的 dataCenter(机房),所需要备份的数量/ ?- h% I; @! ~/ X" j; S
y        在相同的 dataCenter(机房),不同的 rack(机架),所需要备份的数量8 m% D3 Q0 C$ o
z        在相同的 dataCenter(机房),相同的 rack(机架),所需要备份的数量% f- f  E$ j3 U2 P% s0 W. ]
volume(存储服务器)
( b1 i" [6 ?, a. M7 nnohup weed volume -port=9222 -mserver="localhost:9333" -publicUrl=/volume1 -max=500 -dir=/mnt/weedfs/v1 > v1.log &! c$ K3 k: Y4 M$ l; R1 F

- W9 b% K( y, ?& ^& g, Anohup weed volume -port=9223 -mserver="localhost:9333" -publicUrl=/volume2 -max=500 -dir=/mnt/weedfs/v2 > v2.log &
9 _% X% e0 u+ |8 {0 x) B: ]5 M-max参数为最大逻辑卷数量,如果磁盘可用空间为500G,( 500 * 1024 ) / 1024[volumeSizeLimitMB] = 500,那最大值为 -max = 500
! D& _5 o) L' }* @8 Q5 d+ [nginx(代理服务器)
# z- }" O+ K  fserver {
0 [6 i7 R: F. A$ W  ^$ x    $ }0 F' X1 ^" C
    listen       80;. V7 f+ G. S5 m  w6 X
    server_name  file.example.com;/ z# a2 [2 c# c  M
   
6 Z9 E3 L0 Z& l. y4 M5 n    location /volume1/ {
7 g7 I6 [$ s! F4 e        proxy_pass http://localhost:9222/;
& E9 |! ]7 c' B; @: \8 R    }. G0 s3 ^: s* M6 S4 t

. V! V: a6 Z+ I: l4 D    location /volume2/ {1 _1 h( F( z) z
          proxy_pass http://localhost:9223/;' j3 f; J% [; q2 Y
    }3 a0 [- s! r; ?0 \. L7 n3 s
    3 X4 U9 r. \( @* O
}3 Y: M- G# q+ R/ W
代理详情,如下:
3 g8 U0 Q5 ?1 B. C: P) V( d4 ^3 S) G; [7 u! {7 G6 l) ^8 x5 N- z8 Y" j
用户访问的地址:http://file.example.com/volume1/6,06bb28cc0d.png3 l& I( s0 ?6 d/ h0 X  X
2 ~, f* ~2 ]; S! v' d
实际访问的地址:http://127.0.0.1:9222/6,06bb28cc0d.png; ^" p" c9 N' H" v# V) d7 s

) x2 U- N, l4 z7 G+ R集群. _2 s. ~2 k3 z$ w
master(中央服务器)
7 X8 S3 Q- Z/ ?5 M  b设置三台 master (必须为奇数),三台 volume,不同的 dataCenter(机房),不同的 rack(机架),备份策略(100):不同的机房里备份一份数据
7 R1 e3 Q( J, X# H) ~2 W9 j- t' J' Y+ B' P3 i
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 &2 H( C/ I  F5 @/ R" n" _4 F

8 s8 v$ k! k6 k2 Enohup 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 &) N7 M9 r  W0 _

6 \4 O- j2 q: tnohup 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 &
  y$ R% t) R& B3 Tvolume(存储服务器)( a" z) B0 t6 F. ^; b; y
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 &
+ K0 Y$ e  j) v: a; b; s
; x! Q, e; i, F0 q4 @( Lnohup 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 &! g1 H; n0 f3 q7 ~* U" i9 I

  g2 |! n3 Q; c1 Y" W6 \- jnohup 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 &% w8 r2 i- M; Y& V
如果最大逻辑卷数量设置为零-max = 0,该限制将自动配置为磁盘可用空间除以卷大小,默认值为:“8”。
; v; d+ }* X# z* M  ]nginx(代理服务器)* v( e4 h1 ]' `' X6 F$ c* _
upstream volumes {
6 u9 D1 g1 |6 C. \( w& p    server 192.168.0.10:9222;& n  G, I  [% s: U% A
    server 192.168.1.10:9223;
& |: G! {8 Q0 a/ l/ x: Z    server 192.168.1.10:9224;3 H% q( g4 q/ i5 u3 ^3 f1 [
}
; E& j1 _0 t+ P. |
  u4 U1 ?) d* M2 zserver {
4 X1 a( p' w0 E( }
- h: ~$ J% P5 V- @    listen       80;
- g$ U* }# |9 }: {+ N    server_name  file.example.com;
9 N; A' e! a' ^4 q9 w& t- [) ~# o$ s. N8 n6 y
    location / {* A) g2 H* o9 q# ~% T  C6 P
        proxy_pass http://volumes;* C1 ^7 A- V( g2 g) b0 R; j( N
    }
0 L% a6 g7 X5 e( O4 b& U8 \6 {0 T0 z
}
- r, Q" Y9 r8 v* M+ _+ V5 N可通过volume服务器的参数 -readMode = proxy(值:local | proxy | redirect)来设置,默认值为:“proxy”。" R2 J; c  Y" w
API6 ?$ c% u& D9 L2 j' Z
上传5 v& s6 M. l2 b1 r0 t# b( C' X3 X
直接向master(中央服务器)上传文件,内部自动分配文件ID,命令如下:
1 g' _: v/ W! V5 i7 ^  w' p$ M/ G# m% T. x% G/ H* Q6 H6 g' p  p( t
curl -X POST -F file=@/test/1.png http://127.0.0.1:9333/submit?col ... amp;replication=001& {* A5 U! t& I2 A& ^
上传成功返回下面结果:  `9 c' ?' h# q& F% I- \

( F1 x1 a7 t0 |4 B) \; p7 e{
# ?% ~3 f9 k: K  [" z    "fid": "3,01637037d6",
4 d3 F# f& c3 K- e* K' K* E    "fileName": "1.png",/ z6 ^/ W9 H0 N, U
    "fileUrl": "http://127.0.0.1:9222/3,01637037d6",
  q& K( A( I  W4 s# J3 O    "size": 50326
6 u' w/ p( j  l% }, W! s& p}7 K" j+ m/ _0 O4 r& M
参数 ttl 表示过期时间(单位: m [分钟] | h [小时] | d [天] | w [周] | M [月] | y [年])
. S3 w6 |/ `! M
6 ?) o$ U1 [* {( U- D1 a查看0 r8 Y6 Z- \9 n; l" n$ i
URL可在浏览器中直接打开:: J3 m; T) n1 w- v% W2 w) `

9 l- g8 ?$ B& ?  Shttp://127.0.0.1:9222/3,01637037d6" O  x4 M& t% D
URL可访问的等效变种地址:, x3 y" d+ f: W& S5 G; h1 }4 m  @

$ Q# T: o. x- G7 a: t

3 e6 a% R- b0 Z" U5 p* L8 E                               
登录/注册后可看大图
8 I% d# U" D5 s0 p$ y7 v8 \9 E" d

/ h" o, B. J, h$ s& h& f7 P0 d! A                               
登录/注册后可看大图

* K$ |( c' G+ u$ q+ P% Lhttp://127.0.0.1:9222/3,01637037d6.jpg- n' y6 Q0 |& x6 i4 o
http://127.0.0.1:9222/3/01637037d6
3 V" e! M$ w0 a) @- T& P5 whttp://127.0.0.1:9222/3,01637037d6
; {4 S" }2 T! |/ X8 V# l缩放2 {4 e$ V& Z3 C. G  ?+ ?
http://127.0.0.1:9222/11,1af9f35ee7.jpg?width=200&height=200&mode=fit8 Z8 C6 [9 D: w" l1 b
mode(值: fit | fill )
" G( v5 o% c5 Z9 }, R
4 W) W# B  \& D! j! e覆盖; G0 b6 A3 d& r0 O
直接对某个已存在的fileUrl 提交POST 请求,将新文件上传即可,新文件内容自动覆盖老的文件,如:& h1 j3 D1 S1 I
3 r3 c' w8 r# ~, Z
curl -X POST -F file=@/2.png http://127.0.0.1:9222/11,1af9f35ee7) m1 X; x1 e% k# z2 Z& w) u3 ~
返回结果为:
+ P- j: b4 V& w. \" g  r
0 O9 l5 S: n) a# \: x5 ]{
$ B! ~1 t" m- ]0 J    "name": "2.png",
# W$ x- ]& m+ Q) w    "size": 50326
2 ^' z5 F/ z% ~2 c0 y# g8 n1 F}
: Y0 K1 U7 W. m9 ~( `- a) I9 a2 l删除
0 ~" n. ~4 b. h使用文件所在的volume存储服务器地址执行如下命令
  ~6 X/ t; M! ]# z8 f
, N: B1 _% w% f% r方法一、! D7 y, D2 O; N3 S
curl -X DELETE http://127.0.0.1:9222/11,1af9f35ee7
; u; [' X: J1 z  L0 y
3 D1 w- l, X) @. \方法二、
3 R, _# y- W, z6 Gcurl -X POST http://127.0.0.1:9222/delete?fid=11,1af9f35ee73 o- N/ G  _: R

/ A+ ^  w1 b' q返回值:
) w+ [" |6 M; d6 P1 C[ {  "fid": "11,1af9f35ee7", "size": 50326 } ]5 q9 Q- W6 q" T7 H
注: 无返回值或size值为0都为删除失败$ V  C" i* m" R. |: B5 a7 E
; b0 `9 _1 B6 P, K& s  Q
断点
0 i3 T7 h+ ^7 S2 i# Z断点续传和断点(并发)下载,是通过标准HTTP的ETag, Accept-Range 进行支持,具体参看标准示例。0 N* ~8 h3 K" x' C6 G

6 Q# ~5 d( e5 k' l2 \, o其他4 N6 S/ X1 l, ~9 G
一、volume的节点信息3 I- A  u/ d5 R% @( u+ }; a
curl http://127.0.0.1:9222/status?pretty=y6 M% v$ |: h, j& I
% i1 L0 y+ l* W
二、查看master下volume节点! ^# P. m: R5 D' u- M7 O
curl http://127.0.0.1:9333/dir/status?pretty=y
  x- Y; a( }4 `
. V' F: w  \, z* _+ b) h- ]三、查看集群master信息7 N* f; h  `7 V
curl http://127.0.0.1:9333/cluster/status?pretty=y
0 D4 S3 _; ]% l
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-9 01:10 , Processed in 0.052440 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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