将设为首页浏览此站
开启辅助访问 天气与日历 收藏本站联系我们切换到窄版

易陆发现论坛

 找回密码
 开始注册
查看: 55|回复: 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允许以另一种方式上传文件

    " `# t! M7 k) d3 L/ E0 v$ O% g
  • 安装启动, H3 k/ b* T7 ?( n0 R9 _
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
    0 @( t' T8 ~  h, s' B
  • 启动! {+ q, K( b) Y- i8 `
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 _' y# E' b: t+ G- A6 \
  • 上传文件! X& [, ]3 k# M7 J9 k% b
         [root@seaweedfs ~]# curl -F "filename=@/usr/src/go1.11.10.linux-amd64.tar.gz"     "http://192.168.120.47:8888/path/to/sources/"

    6 `: v! j6 l7 R$ k2 K. {; ?
{"name":"go1.11.10.linux-amd64.tar.gz","size":121074848}[root@seaweedfs~]#
    $ I: e0 r$ u% Y
  • 返回结果
    ) X# _# b. _* |     {"name":"volume.log","size":1656,"fid":"13,0da7c2b7ff","url":"http://192.168.88.130:9222/13,0da7c2b7ff"}
    ; U) }& ?, T! W( c* Z" p5 d+ v     
    可以看到,前面的上传需要两步,现在用filer上传,只需要一步,并且可以指定文件夹,这里的/path/to/sources/就是文件路径
    # f, I- v- z0 i3 F
  • 可直接输入http://192.168.120.47:8888/ 地址进行访问.下载和前面的流程一样.' `9 i1 Z( r2 c0 S5 ?  D4 I9 N

mount挂载
    * C, K# R# r$ V7 N; Q8 U
  • [root@seaweedfs ~]# mkdir -p /data/seaweedfs/seaweedfs/data/mount. v. I# y& T& Z% S5 i
  • 指定文件管理器挂载到/seaweedfs/data/mount目录下4 y, o/ |! j  j5 S6 T& |/ T, I# c
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目录下.7 u$ {' a9 r7 \- H4 j
具体信息以官方wiki为主.

3 D# s. C. {" m" @& `. R" ?. i
 楼主| 发表于 2022-9-15 10:00:09 | 显示全部楼层
下载
5 U, B/ E* ]; Ywget https://github.com/chrislusf/sea ... /linux_amd64.tar.gz
9 S9 @0 e2 [- B8 s) p解压
$ c; F! W' l3 L6 ]1 ^/ W6 N4 Btar -zxvf linux_amd64.tar.gz
. X' J, \$ S4 p3 y) D6 \安装2 O/ M* y& C+ B$ C. m$ ~0 m; r
mv weed /usr/local/bin/weed
3 z! Y- S) Z  x$ r4 v文档; G  r! p9 P5 p  w" t# G+ U( h5 a8 }
#概况
: A, H3 G* B& G! m; vweed -h
- L, ]- ^+ X1 @+ k5 M: I7 D/ W" V#中央服务器
7 x  @+ K, m" L$ }4 _weed master -h* ]0 q, G: u6 s# k
#存储服务器- J  s* R! p0 |" T3 [  p( i6 _
weed volume -h
7 `' ?9 Z" b2 }3 n& r* q- q单机
7 ]$ u+ r2 G+ l+ Tmaster(中央服务器), ~9 N0 a# [/ V7 h
设置一台 master,两台 volume ,同一个 dataCenter(机房),同一个 rack(机架),备份策略(001):相同的机架里备份一份数据
# i1 k8 b! P) i! K* Y% I: U# U
0 r& Y: ^7 z5 z  Cnohup weed master -port=9333 -volumeSizeLimitMB=1024 -defaultReplication=001 -mdir=/mnt/weedfs/m1 > m1.log &
) d9 X7 H. m$ P7 ~4 U3 q  J5 EdefaultReplication(副本策略):是 xyz 顺序排列的数值,默认值:000 不备份。
8 y( |: Z2 v+ y; x数值        含义/ C4 U  R" S* z7 q! r6 ]) i8 X
x        在不同的 dataCenter(机房),所需要备份的数量
$ o8 `5 K- Z1 N/ k9 x; ]y        在相同的 dataCenter(机房),不同的 rack(机架),所需要备份的数量
2 }7 G9 d+ c+ x) Z6 a4 Z* bz        在相同的 dataCenter(机房),相同的 rack(机架),所需要备份的数量) e( C. U' A# f
volume(存储服务器)( ], t4 j. }' q3 Y# Z; @+ K6 L
nohup weed volume -port=9222 -mserver="localhost:9333" -publicUrl=/volume1 -max=500 -dir=/mnt/weedfs/v1 > v1.log &
; h" `2 c/ W5 J/ e. ?) q( e% x9 ^
- e/ s$ _0 B% w, y, {6 ]  ynohup weed volume -port=9223 -mserver="localhost:9333" -publicUrl=/volume2 -max=500 -dir=/mnt/weedfs/v2 > v2.log &
: W& U) b( f4 C* w3 v8 K  V-max参数为最大逻辑卷数量,如果磁盘可用空间为500G,( 500 * 1024 ) / 1024[volumeSizeLimitMB] = 500,那最大值为 -max = 500
: _* k2 e* _2 e# R" enginx(代理服务器)
2 w# ?/ m) R. o0 yserver {
) i2 r% X& g/ l0 O* y; ~    " I3 U( t6 F4 C1 p3 P9 j/ H
    listen       80;6 c  W- [" \8 y0 P
    server_name  file.example.com;
9 K6 k) \$ Q1 j; D    0 C1 b7 b3 I6 R5 u
    location /volume1/ {
9 ?* `5 y0 B$ q8 B! u        proxy_pass http://localhost:9222/;
0 _- ^1 z/ _2 d- i    }; z* _  A8 E$ c3 B6 m6 t7 d& h
  O& L) x, x: z
    location /volume2/ {$ J; C: c6 I# o) \+ Z
          proxy_pass http://localhost:9223/;0 N$ L/ b0 V& }
    }3 f7 B/ j3 \: I- f
    9 N* s) o8 b1 p- _8 Z' t
}" s- F' }0 w& r  O/ S; X
代理详情,如下:
, }9 A8 M7 L! _8 u
' @# _& B& ^0 r% U. B) z用户访问的地址:http://file.example.com/volume1/6,06bb28cc0d.png
  E- g* }& ~2 Q9 k
+ T2 c3 Q/ F- L" q4 X实际访问的地址:http://127.0.0.1:9222/6,06bb28cc0d.png
- A- [1 j+ C) w: A
2 a+ z8 f8 n- ?7 I& c8 e集群& _) E  e8 r0 f
master(中央服务器)% O; ^1 B. H5 v" b
设置三台 master (必须为奇数),三台 volume,不同的 dataCenter(机房),不同的 rack(机架),备份策略(100):不同的机房里备份一份数据
! L; F" j3 w3 _& l' m2 z/ P+ G% [% v3 l1 ?( {. X6 ~
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 &. n1 e' M& [: f# C( x5 C# ]

7 O; P% w6 l8 Fnohup 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 &3 U! r% I8 E% m/ X+ Z
) Y$ N, l8 |3 Q0 Z' X8 g
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 &% s: `' p$ B" X- w$ ^1 y) a7 [
volume(存储服务器)/ p( k! P) u0 F0 {; M' 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 &
  A$ m) e% f  v, f
2 k: A" r6 O: E; T/ x  nnohup 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 &
2 [* @7 v9 p% P7 e0 G
$ Z9 ^4 u8 z: B- Nnohup 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 &
; @6 \2 T; E. ]/ f( U/ n如果最大逻辑卷数量设置为零-max = 0,该限制将自动配置为磁盘可用空间除以卷大小,默认值为:“8”。
9 G% ~) o3 o) j9 \$ Hnginx(代理服务器)
/ S$ f4 s, I% F( m2 y' g% Bupstream volumes {- U. N, }% x$ y8 n' W
    server 192.168.0.10:9222;- ~( k4 }! _& G' O
    server 192.168.1.10:9223;
  t$ o0 r) X5 @: q9 s2 d    server 192.168.1.10:9224;
4 g& z- a" @! P, m}' m3 ?6 q) ]) n' F) U6 y) `
; X3 V! Y5 _& k; W1 K% j
server {
+ L# W9 B7 F( j' f/ x
& R9 C' W+ M8 S; h5 E, {    listen       80;
: T' n# l% @) z5 ~7 p3 |, C! O" a    server_name  file.example.com;
! ?4 o4 B2 S+ G0 C1 o+ I" a. f: l) j
    location / {+ ]4 M/ t7 _0 A( }. ?
        proxy_pass http://volumes;/ A9 m0 q# t5 w) l
    }# f4 g  P5 @: u7 |# j3 N
# R2 A5 H6 a) u. Y$ }2 o
}
& J) U3 M/ a) G5 }1 z5 {$ r可通过volume服务器的参数 -readMode = proxy(值:local | proxy | redirect)来设置,默认值为:“proxy”。1 }+ Q) c0 [$ h" S& O" k5 d
API
: {8 d" J+ I2 x: V2 e8 [  u4 v+ x上传
+ p6 t2 W$ r1 O9 ^直接向master(中央服务器)上传文件,内部自动分配文件ID,命令如下:8 U; U. ~% }/ S- Q

# I* a1 Y5 \5 L- M- u5 j, p5 tcurl -X POST -F file=@/test/1.png http://127.0.0.1:9333/submit?col ... amp;replication=001
1 Q$ c; K- D! D; Q上传成功返回下面结果:% w) D2 A, M5 p  m: k, F
$ q9 W3 J! d; ]# c" W
{+ z+ E) U! l" H4 D0 P8 t
    "fid": "3,01637037d6",/ b4 B, c) U$ i( K) L
    "fileName": "1.png",4 H/ D, f, e, ?- M8 ?
    "fileUrl": "http://127.0.0.1:9222/3,01637037d6",
9 D: s7 n' L# r( x2 I8 E) j    "size": 50326! d. H; w( @! m# y- [! x
}
) f& I. x- V3 I: R. A; {参数 ttl 表示过期时间(单位: m [分钟] | h [小时] | d [天] | w [周] | M [月] | y [年])
( R9 y( w1 Y. M. }% K8 F3 p, _
4 Q! @( t+ E: |0 G5 }, a查看
! w+ J0 @6 J4 i# \$ Z& UURL可在浏览器中直接打开:: W( y1 B6 k+ ]  N4 m& v! ^, T

( ?7 E3 r- I- ^5 I# I4 }http://127.0.0.1:9222/3,01637037d6
; i- q/ X5 _/ s5 x/ M+ OURL可访问的等效变种地址:/ z7 l& }7 D- ?0 S0 G

$ w3 G, m; ^; K; C
; s4 R% r* k+ C, s& _, w2 t8 E
                               
登录/注册后可看大图
+ {+ y7 ^; }7 q9 z9 i! m3 f
' X, R+ i& f+ U: J: A# X
                               
登录/注册后可看大图
" C" D' x% N6 B, u5 T/ Z
http://127.0.0.1:9222/3,01637037d6.jpg
$ h* Z' W( h! l. e5 ?http://127.0.0.1:9222/3/01637037d6
( U5 N8 ^8 w' Y6 X5 h* ~http://127.0.0.1:9222/3,01637037d6& S7 t! A9 @7 {
缩放
5 N6 P+ p1 G4 {3 p. w& bhttp://127.0.0.1:9222/11,1af9f35ee7.jpg?width=200&height=200&mode=fit& z- Y! t) F5 @0 k3 y/ y
mode(值: fit | fill ), G$ B. d4 o2 x0 h; P

( q1 Y9 h- f' U7 F$ \覆盖
2 C3 B: b/ H: ]  _" p直接对某个已存在的fileUrl 提交POST 请求,将新文件上传即可,新文件内容自动覆盖老的文件,如:0 \- R% u. m+ G% ^" G

0 w! T* u2 b0 X6 ^9 ^' wcurl -X POST -F file=@/2.png http://127.0.0.1:9222/11,1af9f35ee7( F$ s' A4 V1 ]0 v4 S9 C
返回结果为:
5 ?  U% k6 Z+ x$ _+ @3 F% E/ |
5 z* ?6 t1 q/ s7 e! Z% \, ^{1 ?1 i/ }7 L- O. h- o4 V* `
    "name": "2.png",
7 E+ K' @7 n$ }" |    "size": 50326* u3 w, [: f/ J
}
) o* ~) X) I/ r5 O; ~( g6 I) ]5 N删除( a. `- X0 A- H3 P0 b- {$ y
使用文件所在的volume存储服务器地址执行如下命令
5 H5 E- s4 ]! t7 }9 i) D# `7 w% ^3 g( q' s5 i# r( z3 z& s3 n
方法一、3 b1 ?1 P3 s# r6 y  J5 S$ y
curl -X DELETE http://127.0.0.1:9222/11,1af9f35ee7. d" E3 a# y/ `6 @% o
! E; i6 X: Z8 k, f* e0 W
方法二、
# w- V: E- t( C! f" W4 }* \curl -X POST http://127.0.0.1:9222/delete?fid=11,1af9f35ee7
( t  n" T9 T( E  z1 U- m/ L1 R# M1 o5 W5 R- m
返回值:
5 ]) p& U: Z- `/ T( B2 N$ V0 E( ?[ {  "fid": "11,1af9f35ee7", "size": 50326 } ]8 Z- v- a& e3 ]0 q( B$ a
注: 无返回值或size值为0都为删除失败0 w" p, t- l/ G7 q2 m4 W) O
# Q, ^8 V/ I4 ^
断点& w- p$ H" \9 R
断点续传和断点(并发)下载,是通过标准HTTP的ETag, Accept-Range 进行支持,具体参看标准示例。" z) e) {1 C: u& o& U

( n* B; f+ z! c其他
. p  j8 f" H" F0 P) T2 h一、volume的节点信息
, L! P9 @" {; G9 bcurl http://127.0.0.1:9222/status?pretty=y) }% D$ l# T' {

2 D! d( e$ {5 b! a$ {二、查看master下volume节点# i% }6 Z0 S. M* u) _9 ?0 e
curl http://127.0.0.1:9333/dir/status?pretty=y# p9 V7 d( I7 |" P' J
" b0 {7 z+ x+ \& f
三、查看集群master信息
- J# `9 t4 j- W( _5 I- S+ dcurl http://127.0.0.1:9333/cluster/status?pretty=y
7 `1 a+ @  o7 S1 y: U5 Z
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

如有购买积分卡请联系497906712

QQ|返回首页|Archiver|手机版|小黑屋|易陆发现 点击这里给我发消息

GMT+8, 2022-10-4 05:08 , Processed in 0.046439 second(s), 21 queries .

Powered by LR.LINUX.cloud bbs168x X3.2 Licensed

© 2012-2022 Comsenz Inc.

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