FastDfs介绍

分布式文件系统

静态资源服务器

图片服务器(在分布式环境中,部署多个同样的系统可以共享。多个不一样的系统也可以共

享资源)。

介绍

什么是FastDFS

FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互

联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并

注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文

件服务器集群提供文件上传、下载等服务。

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存

储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问

题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

https://baike.baidu.com/item/fastdfs

和之前对比,把上传的位置做了变化。这次把图片上传到远程的图片服务器。分布式共享。

流程

文件上传时序图:(按照时间的请求顺序)

在存储服务器上存储了具体的内容,返回给客户端的只是存储的地
址, 以后就拿这个远程的地址就可以访问到文件了。

下载文件时序图

下载案例:
http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.13/bin/apachetomcat-
9.0.13.zip
有地址,部署在web服务器,就支持直接下载。
开源地址:
https://github.com/happyfish100

FastDfs安装

FastDfs安装

安装

一台虚拟机来模拟,一个Tracker、一个Storage服务。配和nginx访问
图片。

(因为需要对外访问,最后可以通过域名访问到图片。)
https://www.baidu.com/img/bd_logo1.png

下载:https://github.com/happyfish100

初始环境

所需软件: 链接 https://pan.baidu.com/s/1DcUH0TngCiR2LAsLxHWZIg 提取码 mfdp

软件上传:

在线安装libevent工具包:
确认是否安装:

1
rpm -qa | grep libevent

(已安装不需要装,没有安装需要装)

1
yum -y install libevent

安装libfastcommon工具包

解压缩:

1
unzip libfastcommon-master.zip

若unzip命令没找到:

1
2
3
yum install -y unzip zip
./make.sh
./make.sh install

若32位目录中没有libfastcommon.so文件,就
把/usr/lib64/libfastcommon.so文件向/usr/lib/下复制一份
(新版红色框部分标示32位、64位目录都已安装。)

解压:

编译与安装:

观察:可以兼容32,64位系统

Tracker服务安装

安装Tracker服务,这只是一个监听服务。
1)解压缩:

1
unzip fastdfs-master.zip

2)

1
./make.sh

3)

1
./make.sh install

:安装后在/usr/bin/目录下有以fdfs开头的文件
都是编译出来的。配置文件都放到/etc/fdfs文件夹
4)把/opt/qf/fastdfs/fastdfs-master/conf目录下的所有的配置文件
都复制到/etc/fdfs下(从源码的配置文件/opt/qf/fastdfs-soft/fastdfsmaster/
conf/*中复制)。

1
cp /opt/qf/fastdfs/fastdfs-master/conf/* /etc/fdfs/

5)配置tracker服务。修改/ etc/fdfs /tracker.conf文件。
base_path=/home/shuju/fastdfs[手动创建目录]
http.server_port=85
6)启动tracker。

1
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

重启使用命令:

1
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
1
restart

Storage服务安装

安装storage服务,这个就是真正的存储服务。
如果是在不同的服务器安装,第三步的1~4需要重新执行。这里我们在
同样一台服务器,不再需要对源码进行重复的编译和安装,仅仅只需要
配置storage服务。修改/ etc/fdfs /storage.conf文件

Storage存储和日志存放路径:
base_path=/home/shuju/fastdfs
图片保持路径: store_path0=/home/shuju/fastdfs
指定Tracker服务器: tracker_server=101.21.26.229
:22122(阿里云使用外网IP,正常公司内部的正式服务器也只有内网IP)
http.server_port=85 # 此处需要和后面 nginx 监听端口保
持一致
启动storage服务
启动:

1
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

日志/home/shuju/fdfs/logs/storaged.log 外网若链接不成功
改内网IP
重启:

1
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
1
restart

链接成功,测试服务

测试需要使用客户端的配置文件,所以需要修改配置文
件/etc/fdfs/client.conf

客户端日志保持base_path=/home/shuju/fastdfs
指定Tracker服务器: tracker_server= 101.21.26.229
:22122(外网IP)
http.tracker_server_port=85 (配置nginx)

测试指令一:
指令的位置:/usr/bin
上传图片:

1
./fdfs_upload_file /etc/fdfs/client.conf /etc/fdfs/anti-steal.jpg

存储地址:
group1/M00/00/00/rBGMA1q4VqqATqNmAABdrZgsqUU938.jpg

真实地址:
服务器存储地址:/home/shuju/fastdfs/data/00/00

测试指令二:
上传图片:

1
./fdfs_test /etc/fdfs/client.conf upload /etc/fdfs/anti-steal.jpg

显示有完整url :
http://192.168.132.134:85/group1/M00/00/00/wKiEhlvUNWWAAjA5AAFl0YAhvnQ243.jpg
这个路径是后来可以通过域名的方式直接访问

注意:防火墙放行:22122 23000 两个端口

通过java程序实现上传下载具体代码:

https://github.com/SchoderZhao/fastdfsDemo