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

    2 H4 T% h" U0 P. s0 l
  • 安装启动: I# W8 |: G" @4 J" Z) v" n7 |$ W
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
    4 j. H$ H$ S$ X
  • 启动
    5 T# i, a  o) Y3 m, _% 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 &
    : o. a) {- Q; d+ x% k% R
  • 上传文件1 O7 d- v) ~/ P! M5 @
         [root@seaweedfs ~]# curl -F "filename=@/usr/src/go1.11.10.linux-amd64.tar.gz"     "http://192.168.120.47:8888/path/to/sources/"
    " q7 _7 O2 Q' d+ z
{"name":"go1.11.10.linux-amd64.tar.gz","size":121074848}[root@seaweedfs~]#

    7 X& o7 o+ w: w0 q7 h' k/ Y
  • 返回结果
    ; _# ]# [, @' N& T* Y1 l     {"name":"volume.log","size":1656,"fid":"13,0da7c2b7ff","url":"http://192.168.88.130:9222/13,0da7c2b7ff"}  `3 }% l( G0 K7 \, Q. T6 p
         
    可以看到,前面的上传需要两步,现在用filer上传,只需要一步,并且可以指定文件夹,这里的/path/to/sources/就是文件路径
    / \' n  H9 R. m; {! L
  • 可直接输入http://192.168.120.47:8888/ 地址进行访问.下载和前面的流程一样.  X& X, n4 i' G$ w8 c# n: i

mount挂载
    - {# Y* H! m6 I6 y
  • [root@seaweedfs ~]# mkdir -p /data/seaweedfs/seaweedfs/data/mount% {" n, K2 T% D
  • 指定文件管理器挂载到/seaweedfs/data/mount目录下, ^5 ^0 f5 k8 X7 W# Y% }
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目录下.
, l0 C, b( n0 p) _- N8 Q
具体信息以官方wiki为主.
4 O  \0 o" Q3 P" A! u" V

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-9-15 10:00:09 | 显示全部楼层
下载% l9 l& b7 A- S: [! {8 E% G# O! M, ~
wget https://github.com/chrislusf/sea ... /linux_amd64.tar.gz* j4 b7 M( N: h5 X6 x/ \( i. j+ {
解压
4 b! ]* w$ V* I# ~! T5 [9 @" Ftar -zxvf linux_amd64.tar.gz: }$ ~' q' {) K( ^; ~
安装
1 U8 C8 n( ]+ v( b3 [1 q1 o3 imv weed /usr/local/bin/weed" A7 s& n8 N# L' o! T8 X2 t
文档
% l1 w. x, \& F! M. X( A#概况
; R; U2 X# |4 B4 R4 |% ]. k$ `  fweed -h! p6 \3 b5 e: F( M: F, r: m* c' M
#中央服务器9 G/ D. ~5 x! @# |: k
weed master -h
& U% D$ g7 K8 g) @, O0 U0 X#存储服务器2 o/ p. p7 _' S, u( ]" a
weed volume -h
* ?0 @& r$ ]6 D/ |单机
. b' n4 k1 S- Y3 ?' bmaster(中央服务器)1 A1 {* f" R1 ]! Z2 F4 P' B2 I
设置一台 master,两台 volume ,同一个 dataCenter(机房),同一个 rack(机架),备份策略(001):相同的机架里备份一份数据
# a1 m7 ?/ K4 p5 H' }3 H& G8 [0 K, r  A
nohup weed master -port=9333 -volumeSizeLimitMB=1024 -defaultReplication=001 -mdir=/mnt/weedfs/m1 > m1.log &2 b/ C4 L# f& [; F' U, {+ W
defaultReplication(副本策略):是 xyz 顺序排列的数值,默认值:000 不备份。
- q( z; u- r/ i/ z数值        含义
  i9 Q* d) U. A0 yx        在不同的 dataCenter(机房),所需要备份的数量* z" J/ ?; Q3 M1 [
y        在相同的 dataCenter(机房),不同的 rack(机架),所需要备份的数量
; c  {% g  `( V$ c/ f. t5 fz        在相同的 dataCenter(机房),相同的 rack(机架),所需要备份的数量
) @) {5 j$ m1 {$ [0 Z: U5 ]volume(存储服务器)
  D* w  Y; }# s7 g) S# E0 C$ Vnohup weed volume -port=9222 -mserver="localhost:9333" -publicUrl=/volume1 -max=500 -dir=/mnt/weedfs/v1 > v1.log &
4 o# [4 }% [# e+ w: j" M6 H: M& O  `, ^
nohup weed volume -port=9223 -mserver="localhost:9333" -publicUrl=/volume2 -max=500 -dir=/mnt/weedfs/v2 > v2.log &
; r  |0 J- {9 R-max参数为最大逻辑卷数量,如果磁盘可用空间为500G,( 500 * 1024 ) / 1024[volumeSizeLimitMB] = 500,那最大值为 -max = 500
, \% A$ W  d7 A" cnginx(代理服务器)
2 I" M8 ]" n: w8 o0 _# H' kserver {
, m/ ^4 k, ~( b1 g7 U, e$ B2 t   
! D8 b" T7 }' K/ Q- G3 p    listen       80;
  n: T% N3 Q- z; e6 b7 U    server_name  file.example.com;8 W4 F1 w4 j1 Z8 `4 Q/ R$ G
   
; t( b' ?% E4 k' x7 B* H    location /volume1/ {
* @" c! v/ n' K5 _8 N: y        proxy_pass http://localhost:9222/;- T* u+ P9 {% C) f* X. I
    }
/ I3 C) S" i# D5 |- h2 r
* i2 J/ ~6 m# K9 t* z9 n9 ~' b    location /volume2/ {! ?6 j" m9 t" W- Z
          proxy_pass http://localhost:9223/;/ K! [% b! n% Q8 @
    }2 E6 T  B  ]( V% y! m
    9 Z! S7 Z! V$ z8 X
}( i3 L% G) Y$ e4 b0 W
代理详情,如下:
6 ]* f7 Y4 f2 T& G9 O
( O# `& \, ?6 z1 M3 F' N# o用户访问的地址:http://file.example.com/volume1/6,06bb28cc0d.png
/ W  y; Z: Q4 v$ K+ K6 m% |& H5 v2 i7 q- e* ]( `0 E+ {) R; W
实际访问的地址:http://127.0.0.1:9222/6,06bb28cc0d.png; w5 [# z' a0 I8 a% q8 {
1 {% [0 r. \% N" A) S
集群$ g, a- q. M$ Y6 p/ D! p
master(中央服务器)
; E# ~# v! J. G; G/ M3 ~% Z设置三台 master (必须为奇数),三台 volume,不同的 dataCenter(机房),不同的 rack(机架),备份策略(100):不同的机房里备份一份数据% E8 L6 W# r- t# p
: @. h1 j* \8 _2 a- e
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 &
) i2 K+ F" m/ p- u! ]1 _  ?0 ]% _' T4 M' o- x
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 &
  }! e* ^5 Z- \/ i- g6 v$ J4 ^1 q: W
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 &6 d0 z  V) F  y# o/ V- Z
volume(存储服务器)
: N+ {$ W. k3 s3 A$ n- W  hnohup 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 &
" w' f4 |/ \* h) t. f1 O9 s  o5 V' u3 X* ]+ l% v9 }! t! l: U8 u
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 &
2 X% d5 ?' }/ r$ u( c1 j* C& g9 {8 A; c
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 &
) a# y% v$ Q' y, C如果最大逻辑卷数量设置为零-max = 0,该限制将自动配置为磁盘可用空间除以卷大小,默认值为:“8”。6 G6 ^( L8 k8 A) Q' Y
nginx(代理服务器)
# @" `! X/ O* K) A: I% ^0 t" j4 q' K' bupstream volumes {- T2 k7 F/ ]7 {9 Z
    server 192.168.0.10:9222;
7 V* x* k& F1 a7 F7 G0 R. C    server 192.168.1.10:9223;4 d) M9 e7 x. l0 M# Y7 A: ?( |
    server 192.168.1.10:9224;
/ n9 A) Q1 I7 V* d7 b+ \}
+ {) B+ Q  y- ?0 v1 W3 @. L4 ]
) Y1 R6 o8 p' b. L2 N3 L" @% Oserver {& H5 f9 `$ V6 A, l1 l0 g

, Q" |5 ^9 e* g/ F2 k    listen       80;* X1 y: _8 |* o4 f* t8 p* n* i$ c
    server_name  file.example.com;
) n$ e: O# {: s1 Y1 b8 r; d5 i& |
    location / {
) {& S0 U; l% r6 q& s; o        proxy_pass http://volumes;
$ ^! D' j( ~8 s8 e, W7 L    }* _0 q; p& P! `9 @
" f9 p" G) G3 y, t' G9 ]* q
}
  J8 A: b+ U  C0 K: m! A可通过volume服务器的参数 -readMode = proxy(值:local | proxy | redirect)来设置,默认值为:“proxy”。
! L4 e9 N3 A8 }# h/ \! XAPI9 d0 f1 z: i- P0 o4 Z8 N
上传" W7 J+ }9 }8 a0 K
直接向master(中央服务器)上传文件,内部自动分配文件ID,命令如下:0 n* _$ U; {3 G% E6 ^9 R

0 G1 Y' A9 E' s7 t4 G% }: pcurl -X POST -F file=@/test/1.png http://127.0.0.1:9333/submit?col ... amp;replication=001
# ~% k; z+ ]4 ^, x' @; }1 h$ r上传成功返回下面结果:' T5 K, H* z5 H

. b: B/ p5 z* O; p" [6 m' D  O{# H2 l6 C7 @; D$ I8 `
    "fid": "3,01637037d6",
) n0 V  i$ E$ L  p/ ?' n( e7 d1 ^    "fileName": "1.png"," P( G: t+ ~: K: F. T1 K, l) p8 z
    "fileUrl": "http://127.0.0.1:9222/3,01637037d6",/ p( w$ z( k$ F8 K& d2 w
    "size": 50326
& [/ @& O; v7 R8 z7 t7 x}
" O( y0 W1 q, c& \参数 ttl 表示过期时间(单位: m [分钟] | h [小时] | d [天] | w [周] | M [月] | y [年])
6 y; Z, w- `* D6 E* x+ e# I# c" e$ M$ H, j3 E4 ~$ U, E
查看5 Z% \0 B; I. s7 I6 Z' x
URL可在浏览器中直接打开:
9 N+ k; ~: y+ [* g
/ u6 _, `% X) ?2 t2 Ihttp://127.0.0.1:9222/3,01637037d6
2 F  f# P$ S0 Q% a$ jURL可访问的等效变种地址:1 a: l+ h$ `9 S- W' o/ l3 A

( f- R5 [7 ?6 _( H" Y3 W5 F, k% Q0 L' l. b+ c- T
: e3 p; @6 L( l( b4 c! t+ O) r4 U
http://127.0.0.1:9222/3,01637037d6.jpg
8 F' i" O7 ?; \+ Z1 z, c4 ?2 Phttp://127.0.0.1:9222/3/01637037d6# @6 E/ U: e+ M0 t3 y) ~* x
http://127.0.0.1:9222/3,01637037d6
1 [2 v* Z- G1 [4 ^+ a! w: u* V缩放" M9 u: i$ H8 L# E& ]5 z' y
http://127.0.0.1:9222/11,1af9f35ee7.jpg?width=200&height=200&mode=fit, _2 u8 e! D) q+ ^& s/ f  `
mode(值: fit | fill )) G/ [) j3 D- Z- |8 E# `' d, `/ J" }

, H/ [0 Y- \3 x- z. [覆盖4 @1 R1 U" g7 l& C8 p" T
直接对某个已存在的fileUrl 提交POST 请求,将新文件上传即可,新文件内容自动覆盖老的文件,如:
* Z" p# L, u1 y. L$ ]6 r3 p5 }5 b1 W0 {- n, _
curl -X POST -F file=@/2.png http://127.0.0.1:9222/11,1af9f35ee7% B2 K% X" R3 O) l! j" g, ?
返回结果为:, b8 Z+ |" g  ~$ E1 a# ^: B

  H, @5 ~. T9 p9 V3 W7 E% B3 h5 ~{8 O/ O8 _* j& V5 T4 \8 _+ g% v  p
    "name": "2.png",( h/ M& ?# A2 I  c+ s: Y! t) h
    "size": 50326
% r& e5 D1 G6 U}
8 D( a. c& D: q. e4 g3 w" K3 T删除
6 s% Y* W' D; t# K6 S5 Z使用文件所在的volume存储服务器地址执行如下命令
+ T! Y- o; E6 G8 |$ B% C  ^& `+ ?* W5 `" z4 G! N+ }6 d
方法一、* h$ \9 e9 n& ]) r0 F
curl -X DELETE http://127.0.0.1:9222/11,1af9f35ee7
& o4 c! J7 d/ R- f" v6 }! b. t  R0 D' t" O  N4 g
方法二、- y8 y4 K& I/ G2 j* s( F6 Z
curl -X POST http://127.0.0.1:9222/delete?fid=11,1af9f35ee7
  N5 Y# u: G$ l2 N0 T( Z! h8 ^) a$ M' I  H# M( M
返回值:
5 N# @) Z& H% p[ {  "fid": "11,1af9f35ee7", "size": 50326 } ]; e, d9 P* J9 P- E7 x1 N" W8 P$ E9 T
注: 无返回值或size值为0都为删除失败" |+ P* d' T9 P/ J1 {1 o) f6 j

1 h) _# ^5 i) U, S+ U, a9 s断点- |0 B. Z! I/ `; o
断点续传和断点(并发)下载,是通过标准HTTP的ETag, Accept-Range 进行支持,具体参看标准示例。
! e% n; x1 ~- A( p$ U" G6 Q
( [& j" o3 Q8 ]! a其他, S$ \  |" E/ }& p
一、volume的节点信息
: i) n0 k; b  t, Hcurl http://127.0.0.1:9222/status?pretty=y
  u( O" c% q+ y0 H1 x/ d0 X
, c8 \0 d: w  |二、查看master下volume节点" M3 _8 [9 \, V" j- T2 T" R
curl http://127.0.0.1:9333/dir/status?pretty=y
- U' c/ M5 U( W) ^! a* x" ]) f) U2 ?- u2 ^4 `0 C+ A" `. n
三、查看集群master信息
3 F+ T+ Y0 D5 ^* ^curl http://127.0.0.1:9333/cluster/status?pretty=y3 r: _2 \& Y+ I  I/ n3 J& X
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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