FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题,同时也能做到在集群环境下一台机子上传文件,同时该组下的其他节点下也备份了上传的文件。做分布式系统开发时,其中要解决的一个问题就是图片、音视频、文件共享的问题和数据备份,分布式文件系统正好可以解决这个需求。FastDFS的服务主要有两个角色Tracker和Storage,Tracker服务用于负责调度storage节点与client通信,在访问上起负载均衡的作用,和记录storage节点的运行状态,是连接client和storage节点的枢纽,Storage用于保存文件。
一. FastDFS集群部署
名称 | 描述 |
---|---|
centos系统版本 | 6.9 |
libfatscommon | FastDFS分离出的一些公用函数包 |
FastDFS | FastDFS主程序 |
fastdfs-nginx-module | FastDFS和nginx的关联模块 |
nginx | nginx1.15.5 |
yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y
说明 | 位置 |
---|---|
FastDFS所以安装包安装位置 | /usr/local/src |
tracker数据 | /data/fdfs/tracker |
Storage数据 | /data/fdfs/Storage |
配置文件路径 | /etc/fdfs |
unzip libfastcommon-master.zip
cd libfastcommon-master
./make.sh && ./make.sh install #编译安装
unzip fastdfs-master.zip
cd fastdfs-master
./make.sh && ./make.sh install #编译安装
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf #客户端文件,测试用
cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/ #供nginx访问使用
cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/ #供nginx访问使用
unzip fastdfs-nginx-module-master.zip
cp /usr/local/src/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs #复制配置文件到fdfs目录
tar -zxvf nginx-1.15.5.tar.gz
cd nginx-1.15.5
#添加fastdfs-nginx-module模块
./configure --add-module=/usr/local/src/fastdfs-nginx-module-master/src/
make && make install #编译安装
(1). tracker配置
#服务器ip为 172.16.79.41,172.16.79.42
mkdir -p /data/fdfs/tracker
vim /etc/fdfs/tracker.conf
#需要修改的内容如下
port=22122 # tracker服务器端口(默认22122,一般不修改)
base_path=/data/fdfs/tracker #存储日志和数据的根目录
(2). storage配置
mkdir -p /data/fdfs/storage
vim /etc/fdfs/storage.conf
#需要修改的内容如下
port=23000 # storage服务端口(默认23000,一般不修改)
base_path=/data/fdfs/storage # 数据和日志文件存储根目录
store_path0=/data/fdfs/storage # 第一个存储目录
tracker_server=172.16.79.41:22122 # 服务器1
tracker_server=172.16.79.42:22122 # 服务器2
http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
(3). client配置
mkdir -p /home/moe/dfs
vim /etc/fdfs/client.conf
#需要修改的内容如下
base_path=/home/moe/dfs
tracker_server=172.16.79.41:22122 # 服务器1
tracker_server=172.16.79.42:22122 # 服务器2
(4).配置nginx访问,可以直接通过 IP:port/path访问上传的资源
vim /etc/fdfs/mod_fastdfs.conf
#需要修改的内容如下
tracker_server=172.16.79.41:22122 # 服务器1
tracker_server=172.16.79.42:22122 # 服务器2
url_have_group_name=true
store_path0=/data/fdfs/storage
#配置nginx.config
vim /usr/local/nginx/conf/nginx.conf
#添加如下配置
server {
listen 8888; ## 该端口为storage.conf中的http.server_port相同
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
......
......
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 防火墙是iptables
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
service iptables restart #重启防火墙
# 防火墙是firewall
systemctl start firewalld
firewall-cmd --zone=public --add-port=22122/tcp --permanent
firewall-cmd --zone=public --add-port=23000/tcp --permanent
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload
netstat -ntlp # 查看当前所有tcp端口·
netstat -ntulp |grep 22122 #查看22122端口使用情况·
#tracker
/etc/init.d/fdfs_trackerd start #启动tracker服务
/etc/init.d/fdfs_trackerd restart #重启动tracker服务
/etc/init.d/fdfs_trackerd stop #停止tracker服务
chkconfig fdfs_trackerd on #自启动tracker服务
#storage
/etc/init.d/fdfs_storaged start #启动storage服务
/etc/init.d/fdfs_storaged restart #重动storage服务
/etc/init.d/fdfs_storaged stop #停止动storage服务
chkconfig fdfs_storaged on #自启动storage服务
#nginx
/usr/local/nginx/sbin/nginx #启动nginx
/usr/local/nginx/sbin/nginx -s reload #重启nginx
/usr/local/nginx/sbin/nginx -s stop #停止nginx
# 会显示会有几台storage服务器,有2台就会显示 Storage 1-Storage 2的详细信息
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
#上传成功返回 文件访问 ID
# fdfs_upload_file 客户端配置文件 上传文件路径
fdfs_upload_file /etc/fdfs/client.conf /data/test.png
二. Spring Boot集成FastDFS
代码传送门
重复上传,会得到不同的返回路径。
删除,则会把两台服务器上的文件都会删除掉。
注意: 这里的集群只确保文件的多机备份,上传的文件会在集群中同组storage内分别保存一份.
但上述方式并不保证集群的高可用,如果某台服务器挂了,客户端会报异常.
三. 清空FastDFS的文件数据
ps -ef | grep fdfs
kill -9 进程
-- 分别删除tracker和storage下的data目录 (tracker.conf 和 storage.cong 配置的 base_path)
rm -rf /data/fdfs/tracker/data
rm -rf /data/fdfs/storage/data
/etc/init.d/fdfs_trackerd start
/etc/init.d/fdfs_storaged start
-- 如果上面的启动方式不成功,换下面的方式,带配置文件启动
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
-- 启动成功,22122和23000都被监听了
netstat -untlp | grep fdfs
转载:https://www.jianshu.com/p/cdccd2beca63?from=timeline&isappinstalled=0
CentOS FastDFS 配置之常见错误:https://www.cnblogs.com/jaredzhuo/articles/7365153.html