SeaweedFS部署

SeaweedFS

介绍

SeaweedFS是一个分布式文件系统

应用场景:主要用于存储处理小文件、大文件分块成小文件上传

Githup地址: https://github.com/chrislusf/seaweedfs
官方文档:https://github.com/chrislusf/seaweedfs/wiki

seaweedfs源码解析:https://www.bbsmax.com/A/6pdDYXQKzw/

seaweedfs部署相关:https://www.bbsmax.com/A/n2d9Gw84JD/

http://www.wjhsh.net/quchunhui-p-14086075.html

http://www.diyhi.com/seaweedfs.html

https://blog.csdn.net/Along1325/article/details/121883109?spm=1001.2014.3001.5502

Weed master :不存储文件的元数据,只保留卷的ID到卷服务器的映射

Weed volume:存储备份文件

Weed filer:将文件放在目录下管理

1. 集群分布情况

IP 地址 主机类型 数据目录 盘符 角色 磁盘RAID 空间
10.11.11.33 CPU /data/seaweedfs 无需 master,filer 无需 无需
10.11.11.45 CPU /data/seaweedfs 无需 master,filer 无需 无需
10.11.11.37 CPU /data/seaweedfs 无需 master,filer 无需 无需
10.11.11.13 GPU /data/seaweedfs volume 2*8.4T 组成 Raid0 14.6T
10.11.11.14 GPU /data/seaweedfs volume 2*8.4T 组成 Raid0 14.6T
10.11.11.18 GPU /data/seaweedfs volume 2*8.4T 组成 Raid0 14.6T
10.11.11.11 GPU /data/seaweedfs /dev/sdb volume 2*8.4T 组成 Raid0 14.6T
10.11.11.21 GPU /data/seaweedfs /dev/sda volume 2*8.4T 组成 Raid0 14.6T

2. 部署前准备

  1. 首先从 10.11.11.41:/data/nfs /apps nfs defaults 0 0 共享存储的根目录获取名为 ”weed“ 的可执行程序,并将其复制到 /usr/local/bin 目录
  2. 其次建立 /data/seaweedfs 文件夹,若该节点为 volume 节点,请注意需要将该目录挂载在相应磁盘上

3. master 部署

10.11.11.33 部署
# 启动命令
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/master /data/seaweedfs/logs
nohup weed master -ip=10.11.11.33 -port=9333  -defaultReplication="001" -mdir=/data/seaweedfs/master  -peers=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333  > /data/seaweedfs/logs/master.log 2>&1&

注解:
-defaultReplication="001"  001:在相同的Rack(机架)备份一份数据
-mdir 存储元数据的目录,默认为/tmp
-peers 所有的master节点列表

10.11.11.37 部署
# 启动命令
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/master /data/seaweedfs/logs
nohup weed master -ip=10.11.11.37 -port=9333  -defaultReplication="001" -mdir=/data/seaweedfs/master  -peers=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333  > /data/seaweedfs/logs/master.log 2>&1&
10.11.11.45 部署
# 启动命令
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/master /data/seaweedfs/logs
nohup weed master -ip=10.11.11.45 -port=9333  -defaultReplication="001" -mdir=/data/seaweedfs/master  -peers=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333  > /data/seaweedfs/logs/master.log 2>&1&

4. volume 部署

10.11.11.11部署
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/volume1 /data/seaweedfs/logs
# 需注意的是,-max= 的值应根据磁盘大小来定,通过该配置,可以自由定义每个volume的容量。比如当-max=7 时,volume 容量为 7*30G = 210G
nohup weed volume -ip=10.11.11.11 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1 >/data/seaweedfs/logs/volume1.log 2>&1&


-dir:表示该DataNode数据存储的目录
-max:volume的最大数量,默认为7。本机volumes的最大值,在master上我们定义的每个卷为30G
-fileSizeLimitMB : 限制最大上传文件大小
-mserver :指定master服务地址
-dataCenter:当前volume服务的数据中心名称
-rack: 当前volume服务器的rack 名称
10.11.11.13 部署
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/volume1 /data/seaweedfs/logs
# 需注意的是,-max= 的值应根据磁盘大小来定,通过该配置,可以自由定义每个volume的容量。比如当-max=7 时,volume 容量为 7*30G = 210G
nohup weed volume -ip=10.11.11.13 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1 >/data/seaweedfs/logs/volume1.log 2>&1&
10.11.11.14 部署
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/volume1 /data/seaweedfs/logs
# 需注意的是,-max= 的值应根据磁盘大小来定,通过该配置,可以自由定义每个volume的容量。比如当-max=7 时,volume 容量为 7*30G = 210G
nohup weed volume -ip=10.11.11.14 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1 >/data/seaweedfs/logs/volume1.log 2>&1&
10.11.11.18 部署
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/volume1 /data/seaweedfs/logs
# 需注意的是,-max= 的值应根据磁盘大小来定,通过该配置,可以自由定义每个volume的容量。比如当-max=7 时,volume 容量为 7*30G = 210G
nohup weed volume -ip=10.11.11.18 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1 >/data/seaweedfs/logs/volume1.log 2>&1&
10.11.11.21 部署
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/volume1 /data/seaweedfs/logs
# 需注意的是,-max= 的值应根据磁盘大小来定,通过该配置,可以自由定义每个volume的容量。比如当-max=7 时,volume 容量为 7*30G = 210G
nohup weed volume -ip=10.11.11.21 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1 >/data/seaweedfs/logs/volume1.log 2>&1&

5. filer 部署

作用:把文件放在目录下管理,通过文件路径对文件进行存储,获取和删除等操作。Filer是一个在seaweedfs之上的服务,它保存路径与文件id的映射关系,最终还是使用文件id来访问文件。

10.11.11.33 部署
mkdir -p /data/seaweedfs/filer/data
# 首先需要生成 filer 配置文件
weed scaffold -config=filer -output=/data/seaweedfs/filer/
# 之后修改 filer.toml 文件,filer的数据目录
vim /data/seaweedfs/filer/filer.toml
# 将其中 [leveldb*] 配置段中标记为 enabled=true 的那一段配置中的 dir = . 配置项更改为:dir = /data/seaweedfs/filer/data
# 启动命令
nohup weed filer -port=8888  -master=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -ip=10.11.11.33  >/data/seaweedfs/filer/filer.log 2>&1&
10.11.11.37 部署
mkdir -p /data/seaweedfs/filer/data
# 首先需要生成 filer 配置文件
weed scaffold -config=filer -output=/data/seaweedfs/filer/
# 之后修改 filer.toml 文件
vim /data/seaweedfs/filer/filer.toml
# 将其中 [leveldb*] 配置段中标记为 enabled=true 的那一段配置中的 dir = . 配置项更改为:dir = /data/seaweedfs/filer/data
# 启动命令
nohup weed filer -port=8888  -master=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -ip=10.11.11.37  >/data/seaweedfs/filer/filer.log 2>&1&
10.11.11.45 部署
mkdir -p /data/seaweedfs/filer/data
# 首先需要生成 filer 配置文件
weed scaffold -config=filer -output=/data/seaweedfs/filer/
# 之后修改 filer.toml 文件
vim /data/seaweedfs/filer/filer.toml
# 将其中 [leveldb*] 配置段中标记为 enabled=true 的那一段配置中的 dir = . 配置项更改为:dir = /data/seaweedfs/filer/data
# 启动命令
nohup weed filer -port=8888  -master=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -ip=10.11.11.45  >/data/seaweedfs/filer/filer.log 2>&1&

6. 磁盘mount

# 首先把 weed 程序拷贝到系统环境变量目录(weed程序所在共享存储的位置前面有写)
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
# 然后执行挂载
nohup weed mount -filer=10.11.11.37:8888 -filer.path=/jtproduction-zq -dir=/apps/sharedstorage/jtproduction-zq > /var/log/weed-mount-zq.log 2>&1&

7. 写入Systemctl管理

01 master 和 filer 节点
(1) 10.11.11.33 的 master 和 filer

进入/usr/lib/systemd/system目录

SeaweedFS-master.service

[Unit]
Description=SeaweedFS Master
After=network.target

[Service]
Type=simple
User=root
Group=root

ExecStart=/usr/local/bin/weed master -ip=10.11.11.33 -port=9333  -defaultReplication="001" -mdir=/data/seaweedfs/master  -peers=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333
WorkingDirectory=/data/seaweedfs/master/
SyslogIdentifier=seaweedfs-master

[Install]
WantedBy=multi-user.target

SeaweedFS-filer.service

[Unit]
Description=SeaweedFS Filer
After=network.target

[Service]
Type=simple
User=root
Group=root

ExecStart=/usr/local/bin/weed filer -port=8888  -master=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -ip=10.11.11.33
WorkingDirectory=/data/seaweedfs/filer/
SyslogIdentifier=seaweedfs-filer

[Install]
WantedBy=multi-user.target

最后,运行

systemctl enable SeaweedFS-master.service
systemctl enable SeaweedFS-filer.service
(2) 10.11.11.37 的 master 和 filer

进入/usr/lib/systemd/system目录

SeaweedFS-master.service

[Unit]
Description=SeaweedFS Master
After=network.target

[Service]
Type=simple
User=root
Group=root

ExecStart=/usr/local/bin/weed master -ip=10.11.11.37 -port=9333  -defaultReplication="001" -mdir=/data/seaweedfs/master  -peers=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333
WorkingDirectory=/data/seaweedfs/master/
SyslogIdentifier=seaweedfs-master

[Install]
WantedBy=multi-user.target

SeaweedFS-filer.service

[Unit]
Description=SeaweedFS Filer
After=network.target

[Service]
Type=simple
User=root
Group=root

ExecStart=/usr/local/bin/weed filer -port=8888  -master=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -ip=10.11.11.37
WorkingDirectory=/data/seaweedfs/filer/
SyslogIdentifier=seaweedfs-filer

[Install]
WantedBy=multi-user.target

最后,运行

systemctl enable SeaweedFS-master.service
systemctl enable SeaweedFS-filer.service
(3) 10.11.11.45 的 master 和 filer

进入/usr/lib/systemd/system目录

SeaweedFS-master.service

[Unit]
Description=SeaweedFS Master
After=network.target

[Service]
Type=simple
User=root
Group=root

ExecStart=/usr/local/bin/weed master -ip=10.11.11.45 -port=9333  -defaultReplication="001" -mdir=/data/seaweedfs/master  -peers=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333
WorkingDirectory=/data/seaweedfs/master/
SyslogIdentifier=seaweedfs-master

[Install]
WantedBy=multi-user.target

SeaweedFS-filer.service

[Unit]
Description=SeaweedFS Filer
After=network.target

[Service]
Type=simple
User=root
Group=root

ExecStart=/usr/local/bin/weed filer -port=8888  -master=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -ip=10.11.11.45
WorkingDirectory=/data/seaweedfs/filer/
SyslogIdentifier=seaweedfs-filer

[Install]
WantedBy=multi-user.target

最后,运行

systemctl enable SeaweedFS-master.service
systemctl enable SeaweedFS-filer.service
02 volume 节点
(1) 10.11.11.12

进入/usr/lib/systemd/system目录

SeaweedFS-volume.service

[Unit]
Description=SeaweedFS Volume
After=network.target

[Service]
Type=simple
User=root
Group=root

ExecStart=/usr/local/bin/weed volume -ip=10.11.11.12 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.11:9333,10.11.11.11:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1
WorkingDirectory=/data/seaweedfs/volume
SyslogIdentifier=seaweedfs-volume

[Install]
WantedBy=multi-user.target

最后,运行

systemctl enable SeaweedFS-volume.service
(2) 10.11.11.13

进入/usr/lib/systemd/system目录

SeaweedFS-volume.service

[Unit]
Description=SeaweedFS Volume
After=network.target

[Service]
Type=simple
User=root
Group=root

ExecStart=/usr/local/bin/weed volume -ip=10.11.11.13 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1
WorkingDirectory=/data/seaweedfs/volume
SyslogIdentifier=seaweedfs-volume

[Install]
WantedBy=multi-user.target

最后,运行

systemctl enable SeaweedFS-volume.service
(3) 10.11.11.14

进入/usr/lib/systemd/system目录

SeaweedFS-volume.service

[Unit]
Description=SeaweedFS Volume
After=network.target

[Service]
Type=simple
User=root
Group=root

ExecStart=/usr/local/bin/weed volume -ip=10.11.11.14 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1
WorkingDirectory=/data/seaweedfs/volume
SyslogIdentifier=seaweedfs-volume

[Install]
WantedBy=multi-user.target

最后,运行

systemctl enable SeaweedFS-volume.service
(4) 10.11.11.18

进入/usr/lib/systemd/system目录

SeaweedFS-volume.service

[Unit]
Description=SeaweedFS Volume
After=network.target

[Service]
Type=simple
User=root
Group=root

ExecStart=/usr/local/bin/weed volume -ip=10.11.11.18 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1
WorkingDirectory=/data/seaweedfs/volume
SyslogIdentifier=seaweedfs-volume

[Install]
WantedBy=multi-user.target

最后,运行

systemctl enable SeaweedFS-volume.service
(5) 10.11.11.21

进入/usr/lib/systemd/system目录

SeaweedFS-volume.service

[Unit]
Description=SeaweedFS Volume
After=network.target

[Service]
Type=simple
User=root
Group=root

ExecStart=/usr/local/bin/weed volume -ip=10.11.11.21 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1
WorkingDirectory=/data/seaweedfs/volume
SyslogIdentifier=seaweedfs-volume

[Install]
WantedBy=multi-user.target

最后,运行

systemctl enable SeaweedFS-volume.service

挂载步骤

# 首先把 weed 程序拷贝到系统环境变量目录(weed程序我已经拷到共享存储里了)
cp /apps/weed /usr/local/bin/
# 然后执行挂载
nohup weed mount -filer=10.246.29.37:8888 -filer.path=/jt -dir=/apps > /var/log/weed-mount-zq.log 2>&1&

取消挂载步骤

ps -aux | grep "weed mount" 找到 pid,

然后执行普通 kill (不要执行 -9)

ps aux | grep 'weed' | awk '{print $2}'

umount /apps  取消挂载

你可能感兴趣的:(linux)