SeaweedFS分布式文件系统配置

下面介绍在CentOS系统下的SeaweedFS配置方法,演示主机操作系统为CentOS 7.6。本次演示使用5台服务器,1台主服务器(master),4台卷服务器(volume),在相同的机架上复制一份副本。使用Redis管理文件映射关系,Redis安装在主服务器(master)上。


实现规划

主机名称 机架 IP地址 安装软件 开放端口 绑定域名
M1 ***.100.100.49(公网)
172.26.188.150(内网)
Redis(端口:6379 密码:asdbgt123456)
SeaweedFS的master服务
6379 (内网开放)
9333 (内网开放)
19333 (内网开放)
V1 rack1 ***.92.29.143(公网)
172.26.188.151(内网)
SeaweedFS的volume服务
SeaweedFS的filer服务
Nginx
80 (公网开放)
7777 (只读端口,由Nginx将公网请求转发到此端口)
8080 (内网开放)
18080 (内网开放)
8888 (内网开放)
18888 (内网开放)
img1.diyhi.com
V2 rack1 ***.100.150.81(公网)
172.26.188.152(内网)
SeaweedFS的volume服务
SeaweedFS的filer服务
Nginx
80 (公网开放)
7777 (只读端口,由Nginx将公网请求转发到此端口)
8080 (内网开放)
18080 (内网开放)
8888 (内网开放)
18888 (内网开放)
img2.diyhi.com
V3 rack2 ***.92.122.114(公网)
172.26.188.153(内网)
SeaweedFS的volume服务
SeaweedFS的filer服务
Nginx
80 (公网开放)
7777 (只读端口,由Nginx将公网请求转发到此端口)
8080 (内网开放)
18080 (内网开放)
8888 (内网开放)
18888 (内网开放)
img3.diyhi.com
V4 rack2 ***.100.154.197(公网)
172.26.188.154(内网)
SeaweedFS的volume服务
SeaweedFS的filer服务
Nginx
80 (公网开放)
7777 (只读端口,由Nginx将公网请求转发到此端口)
8080 (内网开放)
18080 (内网开放)
8888 (内网开放)
18888 (内网开放)
img4.diyhi.com
S1 ***.100.153.26(公网)
172.26.188.155(内网)
JDK 1.8
Tomcat 8.5
MySQL 5.7
Nginx
80 (公网开放)
shop.diyhi.com

下载安装

1、打开SeaweedFS下载页面https://github.com/chrislusf/seaweedfs/releases 当前最新版本为1.41

2、下载对应当前系统版本的安装包,64位Linux适合linux_amd64.tar.gz

输入命令 wget https://github.com/chrislusf/seaweedfs/releases/download/1.41/linux_amd64.tar.gz

3、创建目录

输入命令 mkdir /usr/local/seaweedfs/

4、解压到/usr/local/seaweedfs/

输入命令 tar zxvf linux_amd64.tar.gz -C /usr/local/seaweedfs/

5、进入目录/usr/local/seaweedfs/

输入命令 cd /usr/local/seaweedfs/

6、建立存储数据用的文件夹,若文件夹不存在启动volume时会出错

输入命令 mkdir /usr/local/seaweedfs/mdata
输入命令 mkdir /usr/local/seaweedfs/data

master参数
cpuprofile string cpu配置文件输出文件
-defaultReplication string 默认复制类型(如果未指定) (默认 "000")
000: 只存储一份,默认设置
001: 在相同的Rack复制一份
010: 在同一DC的不同rack上复制一次
100: 在不同的DC复制一次
200: 在另外两个不同的DC上复制两次
110: 在不同的rack上复制一次,并在不同的DC上复制一次。
-disableHttp 禁用http请求,只允许gRPC操作。
-garbageThreshold float 清空和回收空间的阈值 (默认 0.3)
-ip string 指定ip地址 (默认 "localhost")
-ip.bind string 要绑定的IP地址 (默认 "0.0.0.0")
-maxCpu int 最大CPU数。 0表示可用所有CPU
-mdir string 用于存储元数据的数据目录
-memprofile string 内存配置文件输出文件
-peers string 以逗号分隔的所有主(master)节点 ip:port 列表, 示例: 127.0.0.1:9093,127.0.0.1:9094
-port int http监听端口 (默认 9333)
-pulseSeconds int 心跳之间的秒数 (默认 5)
-volumePreallocate uint 预分配卷的磁盘空间
-volumeSizeLimitMB uint Master停止指向超大卷的写入 (默认 30000)
-whiteList string 逗号分隔的Ip地址具有写入权限。 空的没有限制。
volume参数
-cpuprofile string 输出cpu配置文件
-dataCenter string 当前卷服务器的数据中心名称
-dir string 用于存储数据文件的目录. dir[,dir]...
-idleTimeout int 空闲连接时间 (默认 30)
-images.fix.orientation 上传时调整jpg方向。
-index string 内存模式[memory|leveldb|boltdb|btree]. (默认 "memory")
-ip string ip或服务器名称
-ip.bind string 要绑定的IP地址 (默认 "0.0.0.0")
-max string 最大卷(volume)个数 (默认 "7")
-maxCpu int 最大cpu使用数,0为使用全部
-memprofile string 输出内存配置文件
-mserver string 逗号分隔的主(master)服务器 (默认 "localhost:9333")
-port int http监听端口 (默认 8080)
-port.public string 可公开访问的端口
-publicUrl string 可公开访问的地址
-pulseSeconds string master与volume的心跳间隔,心跳之间的秒数必须小于或等于主设备的设置(默认 5)
-rack string 当前卷服务器的机架名称
-read.redirect 重定向移动或非本地卷。 (默认 true)
-whiteList string 白名单 逗号分隔的Ip地址具有写入权限。 空的没有限制。(卷服务器上的白名单将在即将发布的版本中弃用。)
filer参数
-collection string 所有数据都将存储在此集合中
-dataCenter string 首选在此数据中心写入volumes
-defaultReplicaPlacement string 默认复制类型(如果未指定) (默认 "000")
000: 只存储一份,默认设置
001: 在相同的Rack复制一份
010: 在同一DC的不同rack上复制一次
100: 在不同的DC复制一次
200: 在另外两个不同的DC上复制两次
110: 在不同的rack上复制一次,并在不同的DC上复制一次。
-dirListLimit int 限制子目录列表大小 (默认 100000)
-disableDirListing 关闭目录列表
-disableHttp 禁用http请求,只允许gRpc操作
-ip string filer服务器http监听ip地址
-master string 逗号分隔的主服务器 (默认 "localhost:9333")
-maxMB int 分割大于限制的文件 (默认 32)
-port int 文件服务器http监听端口 (默认 8888)
-port.grpc int Filer服务器的 grpc监听端口,默认为 http的端口+10000
-port.readonly int 开放的公共只读端口
-redirectOnRead 是否在文件GET请求期间代理或重定向到卷(volume)服务器

grpc端口

grpc端口为-port +10000 如果您使用“-port = 18081”启动卷(volume)服务器,则grpc端口为10000 + 18081 = 28081
默认的grpc端口:
主服务器(master) -- 默认http为 9333,grpc为 19333
卷服务器(volume) -- 默认http为 8080,grpc为 18080
管理服务器(filer) -- 默认http为 8888,grpc为 18888



主服务(master)配置 主机:M1

1.创建seaweedfs启动用户并授权

输入命令 getent group seaweedfs || groupadd -r seaweedfs

输入命令 getent passwd seaweedfs || useradd -r -d /opt -s /bin/nologin -g seaweedfs seaweedfs

2.更改文件权限

输入命令 chown -R seaweedfs:seaweedfs /usr/local/seaweedfs

3.配置开机启动主服务(master)脚本

A.增加seaweedfs-master.service 在/usr/lib/systemd/system目录下增加seaweedfs-master.service,目录必须是绝对目录

输入命令 cd /usr/lib/systemd/system

输入命令 vim seaweedfs-master.service

B. 将下面的配置内容复制到seaweedfs-master.service文件中。请按实际情况更改下面的IP地址。

				[Unit]
				Description=SeaweedFS Master
				After=network.target
				
				[Service]
				Type=simple
				User=seaweedfs
				Group=seaweedfs
				
				ExecStart=/usr/local/seaweedfs/weed -v=0 master -ip=172.26.188.150 -port=9333 -defaultReplication=000 -mdir=/usr/local/seaweedfs/mdata
				WorkingDirectory=/usr/local/seaweedfs/
				SyslogIdentifier=seaweedfs-master
				
				[Install]
				WantedBy=multi-user.target
				

保存配置文件后执行systemctl daemon-reload命令刷新

输入命令 systemctl daemon-reload

使用配置好的系统服务管理seaweedfs-master
systemctl enable seaweedfs-master 配置开机启动
systemctl start seaweedfs-master 启动
systemctl stop seaweedfs-master 停止
systemctl restart seaweedfs-master 重启
systemctl disable seaweedfs-master 删除开机启动
systemctl daemon-reload 刷新

Redis配置

Redis服务器需预先安装好, Redis安装教程在《CentOS服务器环境配置演示》中已有介绍,这里就不再赘述。请按实际情况更改下面的IP地址。

输入命令 vim /etc/redis.conf 设置IP地址为 bind 172.26.188.150
将配置文件 #requirepass foobared 去掉行前的注释,并修改密码为所需的密码 requirepass asdbgt123456    asdbgt123456为密码

防火墙开放端口配置

仅允许内网IP访问指定端口

#(1)允许172.26.188.0 IP段访问6379端口
输入命令 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="6379" accept'
#(2)允许172.26.188.0 IP段访问9333端口
输入命令 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="9333" accept'
#(3)允许172.26.188.0 IP段访问19333端口
输入命令 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="19333" accept'
#(4)执行完命令要刷新才能生效
输入命令 firewall-cmd --reload
#(5)列出所有的开放端口
输入命令 firewall-cmd --list-all


移除策略

firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="IP地址" port protocol="tcp" port="端口号" accept'
#例如移除9333端口策略
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="9333" accept'
输入命令 firewall-cmd --reload 执行完命令要刷新才能生效


卷服务(volume)配置 主机:V1

下载SeaweedFS并复制到指定目录前面已有教程介绍,这里就不再赘述。

1.创建seaweedfs启动用户并授权

输入命令 getent group seaweedfs || groupadd -r seaweedfs

输入命令 getent passwd seaweedfs || useradd -r -d /opt -s /bin/nologin -g seaweedfs seaweedfs

2.更改文件权限

输入命令 chown -R seaweedfs:seaweedfs /usr/local/seaweedfs

3.配置开机启动卷服务(volume)脚本

A.增加seaweedfs-volume.service 在/usr/lib/systemd/system目录下增加seaweedfs-volume.service,目录必须是绝对目录

输入命令 cd /usr/lib/systemd/system

输入命令 vim seaweedfs-volume.service

B. 将下面的配置内容复制到seaweedfs-volume.service文件中。请按实际情况更改下面的IP地址。

				[Unit]
				Description=SeaweedFS Volume
				After=network.target
				
				[Service]
				Type=simple
				User=seaweedfs
				Group=seaweedfs
				
				ExecStart=/usr/local/seaweedfs/weed -v=0 volume -max=5 -mserver=172.26.188.150:9333 -ip=172.26.188.151 -port=8080 -dir=/usr/local/seaweedfs/data -dataCenter=dc1 -rack=rack1
				WorkingDirectory=/usr/local/seaweedfs/
				SyslogIdentifier=seaweedfs-volume
				
				[Install]
				WantedBy=multi-user.target
				

保存配置文件后执行systemctl daemon-reload命令刷新

输入命令 systemctl daemon-reload

注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为26
使用配置好的系统服务管理seaweedfs-volume
systemctl enable seaweedfs-volume 配置开机启动
systemctl start seaweedfs-volume 启动
systemctl stop seaweedfs-volume 停止
systemctl restart seaweedfs-volume 重启
systemctl disable seaweedfs-volume 删除开机启动
systemctl daemon-reload 刷新

配置文件管理服务(filer)

1.生成文件管理(filer)服务配置文件

A.进入/usr/local/seaweedfs/目录,生成filer.toml文件
输入命令 cd /usr/local/seaweedfs/
输入命令 ./weed scaffold -config filer -output="/usr/local/seaweedfs/"

B.配置filer.toml文件。使用Redis存储文件映射关系。请按实际情况更改下面的IP地址和密码。
					[leveldb2]
					enabled = false

					[redis]
					enabled = true
					address  = "172.26.188.150:6379"
					password = "asdbgt123456"
				
打开filer.toml文件将参数参考上面的修改。请按实际情况更改IP地址和密码。
输入命令 vim filer.toml

修改完成后要更改文件权限

输入命令 chown -R seaweedfs:seaweedfs /usr/local/seaweedfs

2.配置开机启动文件服务(filer)脚本

A.增加seaweedfs-filer.service 在/usr/lib/systemd/system目录下增加seaweedfs-filer.service,目录必须是绝对目录

输入命令 cd /usr/lib/systemd/system

输入命令 vim seaweedfs-filer.service

B. 将下面的配置内容复制到seaweedfs-filer.service文件中。请按实际情况更改下面的IP地址。

				[Unit]
				Description=SeaweedFS Filer
				After=network.target
				
				[Service]
				Type=simple
				User=seaweedfs
				Group=seaweedfs
				
				ExecStart=/usr/local/seaweedfs/weed -v=0 filer -master=172.26.188.150:9333 -port=8888 -port.readonly=7777 -defaultReplicaPlacement=001
				WorkingDirectory=/usr/local/seaweedfs/
				SyslogIdentifier=seaweedfs-filer
				
				[Install]
				WantedBy=multi-user.target
				

保存配置文件后执行systemctl daemon-reload命令刷新

输入命令 systemctl daemon-reload

使用配置好的系统服务管理seaweedfs-filer
systemctl enable seaweedfs-filer 配置开机启动
systemctl start seaweedfs-filer 启动
systemctl stop seaweedfs-filer 停止
systemctl restart seaweedfs-filer 重启
systemctl disable seaweedfs-filer 删除开机启动
systemctl daemon-reload 刷新


配置Nginx转发请求

配置Nginx将80端口的请求转发到7777端口

	
					server {
					   listen 80;
					   server_name _;
					
					   return 404;
					}
					
					server {
					    listen       80;
					    server_name  img1.diyhi.com;
					    location /{
					                #屏蔽目录
					                if ($uri !~ \. ) {
					                        return 403;
					                }
					
					                proxy_set_header Host $host;
					                proxy_set_header X-Real-Ip $remote_addr;
					                proxy_set_header X-Forwarded-For $remote_addr;
					                proxy_pass $scheme://172.26.188.151:7777;
					     }
					}


				


防火墙开放端口配置

仅允许内网IP访问指定端口

#(1)允许172.26.188.0 IP段访问8080端口
输入命令 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'
#(2)允许172.26.188.0 IP段访问18080端口
输入命令 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="18080" accept'
#(3)允许172.26.188.0 IP段访问8888端口
输入命令 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8888" accept'
#(4)允许172.26.188.0 IP段访问18888端口
输入命令 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="18888" accept'
#(5)执行完命令要刷新才能生效
输入命令 firewall-cmd --reload
#(6)列出所有的开放端口
输入命令 firewall-cmd --list-all


移除策略

firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="IP地址" port protocol="tcp" port="端口号" accept'
#例如移除8080端口策略
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'
输入命令 firewall-cmd --reload 执行完命令要刷新才能生效


卷服务(volume)配置 主机:V2

下载SeaweedFS并复制到指定目录前面已有教程介绍,这里就不再赘述。

1.创建seaweedfs启动用户并授权

输入命令 getent group seaweedfs || groupadd -r seaweedfs

输入命令 getent passwd seaweedfs || useradd -r -d /opt -s /bin/nologin -g seaweedfs seaweedfs

2.更改文件权限

输入命令 chown -R seaweedfs:seaweedfs /usr/local/seaweedfs

3.配置开机启动卷服务(volume)脚本

A.增加seaweedfs-volume.service 在/usr/lib/systemd/system目录下增加seaweedfs-volume.service,目录必须是绝对目录

输入命令 cd /usr/lib/systemd/system

输入命令 vim seaweedfs-volume.service

B. 将下面的配置内容复制到seaweedfs-volume.service文件中。请按实际情况更改下面的IP地址。

				[Unit]
				Description=SeaweedFS Volume
				After=network.target
				
				[Service]
				Type=simple
				User=seaweedfs
				Group=seaweedfs
				
				ExecStart=/usr/local/seaweedfs/weed -v=0 volume -max=5 -mserver=172.26.188.150:9333 -ip=172.26.188.152 -port=8080 -dir=/usr/local/seaweedfs/data -dataCenter=dc1 -rack=rack1
				WorkingDirectory=/usr/local/seaweedfs/
				SyslogIdentifier=seaweedfs-volume
				
				[Install]
				WantedBy=multi-user.target
				

保存配置文件后执行systemctl daemon-reload命令刷新

输入命令 systemctl daemon-reload

注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为26
使用配置好的系统服务管理seaweedfs-volume
systemctl enable seaweedfs-volume 配置开机启动
systemctl start seaweedfs-volume 启动
systemctl stop seaweedfs-volume 停止
systemctl restart seaweedfs-volume 重启
systemctl disable seaweedfs-volume 删除开机启动
systemctl daemon-reload 刷新

配置文件管理服务(filer)

1.生成文件管理(filer)服务配置文件

A.进入/usr/local/seaweedfs/目录,生成filer.toml文件
输入命令 cd /usr/local/seaweedfs/
输入命令 ./weed scaffold -config filer -output="/usr/local/seaweedfs/"

B.配置filer.toml文件。使用Redis存储文件映射关系。请按实际情况更改下面的IP地址和密码。
					[leveldb2]
					enabled = false

					[redis]
					enabled = true
					address  = "172.26.188.150:6379"
					password = "asdbgt123456"
				
打开filer.toml文件将参数参考上面的修改。请按实际情况更改IP地址和密码。
输入命令 vim filer.toml

修改完成后要更改文件权限

输入命令 chown -R seaweedfs:seaweedfs /usr/local/seaweedfs

2.配置开机启动文件服务(filer)脚本

A.增加seaweedfs-filer.service 在/usr/lib/systemd/system目录下增加seaweedfs-filer.service,目录必须是绝对目录

输入命令 cd /usr/lib/systemd/system

输入命令 vim seaweedfs-filer.service

B. 将下面的配置内容复制到seaweedfs-filer.service文件中。请按实际情况更改下面的IP地址。

				[Unit]
				Description=SeaweedFS Filer
				After=network.target
				
				[Service]
				Type=simple
				User=seaweedfs
				Group=seaweedfs
				
				ExecStart=/usr/local/seaweedfs/weed -v=0 filer -master=172.26.188.150:9333 -port=8888 -port.readonly=7777 -defaultReplicaPlacement=001
				WorkingDirectory=/usr/local/seaweedfs/
				SyslogIdentifier=seaweedfs-filer
				
				[Install]
				WantedBy=multi-user.target
				

保存配置文件后执行systemctl daemon-reload命令刷新

输入命令 systemctl daemon-reload

使用配置好的系统服务管理seaweedfs-filer
systemctl enable seaweedfs-filer 配置开机启动
systemctl start seaweedfs-filer 启动
systemctl stop seaweedfs-filer 停止
systemctl restart seaweedfs-filer 重启
systemctl disable seaweedfs-filer 删除开机启动
systemctl daemon-reload 刷新


配置Nginx转发请求

配置Nginx将80端口的请求转发到7777端口

	
					server {
					   listen 80;
					   server_name _;
					
					   return 404;
					}
					
					server {
					    listen       80;
					    server_name  img2.diyhi.com;
					    location /{
					                #屏蔽目录
					                if ($uri !~ \. ) {
					                        return 403;
					                }
					
					                proxy_set_header Host $host;
					                proxy_set_header X-Real-Ip $remote_addr;
					                proxy_set_header X-Forwarded-For $remote_addr;
					                proxy_pass $scheme://172.26.188.152:7777;
					     }
					}


				


防火墙开放端口配置

仅允许内网IP访问指定端口

#(1)允许172.26.188.0 IP段访问8080端口
输入命令 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'
#(2)允许172.26.188.0 IP段访问18080端口
输入命令 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="18080" accept'
#(3)允许172.26.188.0 IP段访问8888端口
输入命令 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8888" accept'
#(4)允许172.26.188.0 IP段访问18888端口
输入命令 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="18888" accept'
#(5)执行完命令要刷新才能生效
输入命令 firewall-cmd --reload
#(6)列出所有的开放端口
输入命令 firewall-cmd --list-all


移除策略

firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="IP地址" port protocol="tcp" port="端口号" accept'
#例如移除8080端口策略
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'
输入命令 firewall-cmd --reload 执行完命令要刷新才能生效


卷服务(volume)配置 主机:V3

...  ...
...  ...
省略的教程和上面的主机V1,V2配置相同
...  ...
...  ...

3.配置开机启动卷服务(volume)脚本

A.增加seaweedfs-volume.service 在/usr/lib/systemd/system目录下增加seaweedfs-volume.service,目录必须是绝对目录

输入命令 cd /usr/lib/systemd/system

输入命令 vim seaweedfs-volume.service

B. 将下面的配置内容复制到seaweedfs-volume.service文件中。请按实际情况更改下面的IP地址。

				[Unit]
				Description=SeaweedFS Volume
				After=network.target
				
				[Service]
				Type=simple
				User=seaweedfs
				Group=seaweedfs
				
				ExecStart=/usr/local/seaweedfs/weed -v=0 volume -max=5 -mserver=172.26.188.150:9333 -ip=172.26.188.153 -port=8080 -dir=/usr/local/seaweedfs/data -dataCenter=dc1 -rack=rack2
				WorkingDirectory=/usr/local/seaweedfs/
				SyslogIdentifier=seaweedfs-volume
				
				[Install]
				WantedBy=multi-user.target
				

保存配置文件后执行systemctl daemon-reload命令刷新

输入命令 systemctl daemon-reload

注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为26
...  ...
...  ...
...  ...

配置Nginx转发请求

配置Nginx将80端口的请求转发到7777端口

	
					server {
					   listen 80;
					   server_name _;
					
					   return 404;
					}
					
					server {
					    listen       80;
					    server_name  img3.diyhi.com;
					    location /{
					                #屏蔽目录
					                if ($uri !~ \. ) {
					                        return 403;
					                }
					
					                proxy_set_header Host $host;
					                proxy_set_header X-Real-Ip $remote_addr;
					                proxy_set_header X-Forwarded-For $remote_addr;
					                proxy_pass $scheme://172.26.188.153:7777;
					     }
					}


				


...  ...
...  ...
...  ...


卷服务(volume)配置 主机:V4

...  ...
...  ...
省略的教程和上面的主机V1,V2配置相同
...  ...
...  ...

3.配置开机启动卷服务(volume)脚本

A.增加seaweedfs-volume.service 在/usr/lib/systemd/system目录下增加seaweedfs-volume.service,目录必须是绝对目录

输入命令 cd /usr/lib/systemd/system

输入命令 vim seaweedfs-volume.service

B. 将下面的配置内容复制到seaweedfs-volume.service文件中。请按实际情况更改下面的IP地址。

				[Unit]
				Description=SeaweedFS Volume
				After=network.target
				
				[Service]
				Type=simple
				User=seaweedfs
				Group=seaweedfs
				
				ExecStart=/usr/local/seaweedfs/weed -v=0 volume -max=5 -mserver=172.26.188.150:9333 -ip=172.26.188.154 -port=8080 -dir=/usr/local/seaweedfs/data -dataCenter=dc1 -rack=rack2
				WorkingDirectory=/usr/local/seaweedfs/
				SyslogIdentifier=seaweedfs-volume
				
				[Install]
				WantedBy=multi-user.target
				

保存配置文件后执行systemctl daemon-reload命令刷新

输入命令 systemctl daemon-reload

注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为26
...  ...
...  ...
...  ...

配置Nginx转发请求

配置Nginx将80端口的请求转发到7777端口

	
					server {
					   listen 80;
					   server_name _;
					
					   return 404;
					}
					
					server {
					    listen       80;
					    server_name  img4.diyhi.com;
					    location /{
					                #屏蔽目录
					                if ($uri !~ \. ) {
					                        return 403;
					                }
					
					                proxy_set_header Host $host;
					                proxy_set_header X-Real-Ip $remote_addr;
					                proxy_set_header X-Forwarded-For $remote_addr;
					                proxy_pass $scheme://172.26.188.154:7777;
					     }
					}


				


...  ...
...  ...
...  ...


商城系统安装SeaweedFS配置参数


商城管理后台分布式文件系统状态图



备份逻辑卷(volume)

使用自带的backup命令可以创建备份,在一个磁盘空间充足的服务器上运行“weed backup”命令进行备份。假如我们要备份第5卷。

A、进入目录/usr/local/seaweedfs/

输入命令 cd /usr/local/seaweedfs/

B、建立存储数据用的文件夹

输入命令 mkdir /usr/local/seaweedfs/backup

C、执行备份命令

输入命令 ./weed backup -server=172.26.188.150:9333 -dir=/usr/local/seaweedfs/backup/ -volumeId=5

远端不存在的volume ID也是可以运行的,但不会在本地创建任何文件,如果远端增加了此volume,则下次备份会进行同步

此命令不是服务,要想连续运行需要设置为定时任务,每次运行都会和本地卷比对一次,进行增量备份,备份多个volume可以用脚本遍历一定范围的volume(如1-100)