找回密码
 注册
查看: 518|回复: 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允许以另一种方式上传文件
    6 z! J5 P9 k% f/ H8 M$ C6 X* d
  • 安装启动2 B2 P' S. W. Y: M# u: Z
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

    7 S$ B7 h5 f/ e
  • 启动9 G4 r7 u1 ]7 ^# a7 N: U
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 &

    9 ^$ C! h3 P' C6 y
  • 上传文件* K8 w: D. M# u
         [root@seaweedfs ~]# curl -F "filename=@/usr/src/go1.11.10.linux-amd64.tar.gz"     "http://192.168.120.47:8888/path/to/sources/"
    ) D$ l3 f6 E( e+ s
{"name":"go1.11.10.linux-amd64.tar.gz","size":121074848}[root@seaweedfs~]#
      h; J7 V% w: j4 H$ Q
  • 返回结果9 C) j7 K3 U) _& j% L
         {"name":"volume.log","size":1656,"fid":"13,0da7c2b7ff","url":"http://192.168.88.130:9222/13,0da7c2b7ff"}6 Q2 W# c* e3 e+ b' h% j
         
    可以看到,前面的上传需要两步,现在用filer上传,只需要一步,并且可以指定文件夹,这里的/path/to/sources/就是文件路径
    ' S( w0 \" N) m
  • 可直接输入http://192.168.120.47:8888/ 地址进行访问.下载和前面的流程一样.. m1 c* f6 [1 ?# w: X( M* ~

mount挂载

    2 T  ~( |- H7 }% S, C
  • [root@seaweedfs ~]# mkdir -p /data/seaweedfs/seaweedfs/data/mount$ E1 n; ~/ a- U: D& {
  • 指定文件管理器挂载到/seaweedfs/data/mount目录下. N/ u6 ~# M- r- h8 |+ F: A8 j! p8 s
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目录下.
4 [% n7 o1 n# ]2 E
具体信息以官方wiki为主.

8 ?; L0 r! I7 T- p

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-9-15 10:00:09 | 显示全部楼层
下载8 t' F4 N3 j, V! d* `( B
wget https://github.com/chrislusf/sea ... /linux_amd64.tar.gz
: N$ \! L* ?* k6 |6 {% T, F* l: L' K解压
" W  H# h, f5 }1 J4 A. Vtar -zxvf linux_amd64.tar.gz
! n8 ~' i. x" v+ `/ c安装4 I9 C: T5 c% c! w5 {. J% \5 ]+ j
mv weed /usr/local/bin/weed
; a# M$ ~+ F4 @& N- \2 Y0 C文档
% H, w9 C/ C" _  x" ?#概况
8 S& T+ w) ?. D" U/ d, mweed -h: `8 `8 `# ]- G
#中央服务器
3 N1 Y8 e! l9 Q9 t9 u1 C. V2 n- Tweed master -h
2 U, O% t. L! I0 {4 p7 A#存储服务器
. O. `: x4 }: S4 [3 jweed volume -h+ L# t& r, F, K
单机
  Q4 X( o7 |+ H/ ?" i( rmaster(中央服务器)# ^1 O6 Y+ q& u  a0 }
设置一台 master,两台 volume ,同一个 dataCenter(机房),同一个 rack(机架),备份策略(001):相同的机架里备份一份数据  U6 w+ V3 S1 u3 M! f
& ^# `) i  u0 D3 B1 _9 j
nohup weed master -port=9333 -volumeSizeLimitMB=1024 -defaultReplication=001 -mdir=/mnt/weedfs/m1 > m1.log &* A/ A8 \- X" K' S1 @) s
defaultReplication(副本策略):是 xyz 顺序排列的数值,默认值:000 不备份。
- M) o. W! U4 \( K数值        含义7 `  `1 C0 [6 R5 E
x        在不同的 dataCenter(机房),所需要备份的数量
! X& c. N6 O* J+ a" Py        在相同的 dataCenter(机房),不同的 rack(机架),所需要备份的数量1 K/ F  o* B2 q. y
z        在相同的 dataCenter(机房),相同的 rack(机架),所需要备份的数量% u8 |9 _; }/ l' I' T
volume(存储服务器)1 j1 n: l# N* J9 z0 `9 d. s
nohup weed volume -port=9222 -mserver="localhost:9333" -publicUrl=/volume1 -max=500 -dir=/mnt/weedfs/v1 > v1.log &
2 _0 e' I+ ~& D+ v4 p% s9 R; _% i8 @2 c$ D
nohup weed volume -port=9223 -mserver="localhost:9333" -publicUrl=/volume2 -max=500 -dir=/mnt/weedfs/v2 > v2.log &+ u# s, ]# j, J
-max参数为最大逻辑卷数量,如果磁盘可用空间为500G,( 500 * 1024 ) / 1024[volumeSizeLimitMB] = 500,那最大值为 -max = 500
0 z! }: o; R) b7 d& Cnginx(代理服务器)" l  s3 E+ U; O5 F
server {
: X1 R' T. h2 K4 z, x6 }* X   
8 j/ X# _( J# s$ R8 y    listen       80;: F3 z# Y+ ]5 m# V( f' ?: z* o
    server_name  file.example.com;
0 @9 z& z: e8 l2 q+ r. L- x    1 X+ \9 D5 [+ D7 f, v* |
    location /volume1/ {3 [+ h" X$ T; J2 T$ T4 |2 c- k+ I
        proxy_pass http://localhost:9222/;" {3 M& ~1 D! Y6 `
    }
! z2 N3 _0 c, U9 j; s5 R
; l: l( R+ m  X+ g    location /volume2/ {" J* v! ?. R8 B5 L: x' v
          proxy_pass http://localhost:9223/;
: r8 I+ j, p! M3 A+ M2 o    }; J; J, ?; E- O9 |( v' Y( i
    ) o# U  k% \+ y1 Q, v
}2 s) j9 u/ {  M1 ]4 x' k
代理详情,如下:" X) o+ V$ F. F1 @# G

6 O* e$ i: I% X5 D5 u6 w用户访问的地址:http://file.example.com/volume1/6,06bb28cc0d.png
; w- _! c& R! L6 ?  i3 t) G* j$ d, b% y; y7 S% N, q. N
实际访问的地址:http://127.0.0.1:9222/6,06bb28cc0d.png
4 }' S% I+ [( Y* M  d
) u/ _7 j7 R8 D, X3 U! H集群
4 Y) V8 T: O( N4 _+ A- {& ~master(中央服务器)' L  L' B+ v& M# x, \! ~& Z
设置三台 master (必须为奇数),三台 volume,不同的 dataCenter(机房),不同的 rack(机架),备份策略(100):不同的机房里备份一份数据/ t: {' _- f6 D( J* h, {( P5 _

* \- m: c" S# k& D* d9 Gnohup 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 &0 C$ `% p" r% d/ O6 m& ^& Y% u8 D: o
8 O1 a" S9 J9 }
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 &, T# U0 ]# z2 l" C
  Q% a* L7 @3 ^! n
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 &8 t% D$ v9 ]3 W
volume(存储服务器)
, c0 A8 G# q! Y+ _3 `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 &* f. C: ?" r! {4 Y9 P  A

# z7 U" N/ F1 r7 S9 c; ?( L* s7 Inohup 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 &% h! a# v, w0 d( Q! {5 u

6 T. A% `& p, P. ~6 gnohup 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 V* P* O" K, U* A: r5 a2 c
如果最大逻辑卷数量设置为零-max = 0,该限制将自动配置为磁盘可用空间除以卷大小,默认值为:“8”。' Y, ^2 f, D' ~" L( l' a# |
nginx(代理服务器), j5 G* ^0 f  n
upstream volumes {% g+ f; d3 u: q, b9 A7 }  s* e
    server 192.168.0.10:9222;6 r& a: @7 {3 Z. ^* f8 U2 R' I
    server 192.168.1.10:9223;
& C3 Z0 C$ V. S3 L    server 192.168.1.10:9224;/ f- a. r) j0 o- ?
}% Q! B: v- G) x, ?$ ]

9 k2 ]; T6 m3 m* w. }server {
7 [4 W6 i6 U7 ~+ M1 E. v9 a; Y6 P' M; ~; d; u9 N
    listen       80;
% y: `2 w& P# V7 i. |/ ?    server_name  file.example.com;
. o3 T! `) L  k% M; Y$ b
3 U1 t8 L+ q( E- A    location / {
- o; @3 W$ T* l* y) x  |        proxy_pass http://volumes;
0 Q- \. Q( ]: h  A( U1 {4 w9 @- J    }  W  o6 A4 ~0 o" k4 J
' d* c4 c2 R" \! |
}$ k5 |0 K7 X1 y1 h9 z* x. G
可通过volume服务器的参数 -readMode = proxy(值:local | proxy | redirect)来设置,默认值为:“proxy”。$ W/ |: N9 q. z7 W- X
API/ f" y- o( q/ o
上传) T, X/ v$ {- e4 x: P8 t* l
直接向master(中央服务器)上传文件,内部自动分配文件ID,命令如下:
( ^. Z( j1 N2 H% s* N1 n* p
) S- p6 N" A# C6 O( b8 L+ jcurl -X POST -F file=@/test/1.png http://127.0.0.1:9333/submit?col ... amp;replication=001, ~9 ?2 X7 u2 R' y
上传成功返回下面结果:, |: o0 \, ?) N9 B) q+ W" X

' @5 C8 ?- B2 R{
2 c* H7 v9 Y1 _, l0 e# v/ [    "fid": "3,01637037d6",, `1 b4 n* d2 X0 G+ r2 r- |
    "fileName": "1.png",
. U$ B$ [8 v3 h& m" `6 D- D    "fileUrl": "http://127.0.0.1:9222/3,01637037d6",  x8 `9 f( k, H1 n
    "size": 50326+ [3 d: E4 q7 N; g
}
9 v$ J2 z' P2 q& R/ P% K# ?' \参数 ttl 表示过期时间(单位: m [分钟] | h [小时] | d [天] | w [周] | M [月] | y [年])
/ x+ N; I4 X+ b3 ?" h1 O8 h( \( u' k2 u* |2 U
查看0 E; X( q: b, w" e) |; o  z9 e8 J
URL可在浏览器中直接打开:. l+ ^9 `0 [" R- X$ C
  G& }8 r! b6 P; M, n
http://127.0.0.1:9222/3,01637037d6+ d* w6 @9 p1 _& U
URL可访问的等效变种地址:/ x/ X& {, M; Y/ G; m/ k0 O
3 z2 [; d3 ~6 M9 S8 C2 w

" v1 G6 m1 _  p* ^9 L; _  }# W# F
6 r* F8 f' S# K' i9 u. Ghttp://127.0.0.1:9222/3,01637037d6.jpg' [, \7 ^6 B* Q2 Y8 Y# Q( {- \
http://127.0.0.1:9222/3/01637037d6
# U5 Z  b4 E3 k# I4 g1 xhttp://127.0.0.1:9222/3,01637037d6# A- o0 ?, ^& x6 n% Z; D& l2 E7 _
缩放
! B; C- m9 _2 _4 p3 B  Lhttp://127.0.0.1:9222/11,1af9f35ee7.jpg?width=200&height=200&mode=fit( ]1 x: H! @, |' }5 P
mode(值: fit | fill ), Q0 i  O0 R  m8 `; _; |

: s- e) p( ^; O1 D, G8 }6 K' R覆盖; l5 R1 R8 [8 ^6 F$ g5 {: n2 i& A( l# ]
直接对某个已存在的fileUrl 提交POST 请求,将新文件上传即可,新文件内容自动覆盖老的文件,如:4 ]" C7 t! N$ ]. H  {$ w

! b8 V- D% L7 Xcurl -X POST -F file=@/2.png http://127.0.0.1:9222/11,1af9f35ee7
5 D5 ^& S5 {1 n2 E8 \! G* ~# E6 T& l返回结果为:4 E2 v2 S/ H: o4 Y. m
, [' y' [9 S9 j! A  }" o) `
{( w- Y6 X) \9 H/ t- @
    "name": "2.png",
) k- Y8 y$ A5 J! [& H+ Y    "size": 50326/ h8 |" T* F2 g- U4 e
}
$ c8 x7 y* x  O' Q- M; ?删除
( G  m$ _4 V: M使用文件所在的volume存储服务器地址执行如下命令
0 N4 B3 _; y2 j
  [" d% \+ j4 l" x+ s% l5 H方法一、/ i. B) q+ N0 ]" A, C4 _
curl -X DELETE http://127.0.0.1:9222/11,1af9f35ee7% K  F2 B1 `0 Y& {, }
' r9 _+ D7 d2 g
方法二、
$ l7 V, S4 g6 U% X! Vcurl -X POST http://127.0.0.1:9222/delete?fid=11,1af9f35ee7
/ K1 s) x7 Y" p# S& d1 r0 H. _6 U- W  p5 Q
返回值:. O" @( P- p/ T9 k3 s7 A
[ {  "fid": "11,1af9f35ee7", "size": 50326 } ]
  A! e. ~1 S, E  m) k& M注: 无返回值或size值为0都为删除失败; X1 V, p! K& J" v' o

# v0 j2 Y: ~4 ~0 i! V断点, k7 _+ d# [3 T7 m; T
断点续传和断点(并发)下载,是通过标准HTTP的ETag, Accept-Range 进行支持,具体参看标准示例。$ b  _6 V3 n+ @0 H
+ h4 ]! M# y- j# R+ G+ S8 H
其他% l% M4 Y, h% j& v3 X4 r- `5 C
一、volume的节点信息* e; J* `. C8 O% _, L  b
curl http://127.0.0.1:9222/status?pretty=y* b: V3 @8 h1 [  t1 {

, M) O7 v3 W( b5 V1 G6 C二、查看master下volume节点
- [4 K: s# ]1 k9 Pcurl http://127.0.0.1:9333/dir/status?pretty=y
+ q$ ~* {( a0 E5 ^6 A: M" R* y+ s( P! _% U
三、查看集群master信息
3 ?- U; N" p: i4 f8 e: E8 gcurl http://127.0.0.1:9333/cluster/status?pretty=y
8 r$ g! O# g$ r! Q. d
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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