一、FastDFS 核心架构与角色
FastDFS 整体由三类角色构成,分工明确、易于理解:
1. Tracker Server(调度节点)
- 负责集群调度、负载均衡,管理所有 Storage 与分组信息
- 接收 Storage 心跳上报,动态维护节点状态
- 自身不持久化数据,支持多节点对等集群,扩展简单
2. Storage Server(存储节点)
- 实际负责文件存储、备份、同步
- 以 Group(分组) 为单位,同组内节点互为副本
- 直接使用操作系统文件系统,支持多磁盘多目录配置
3. Client(业务客户端)
- 提供上传、下载、删除等文件操作接口
- 通过 Tracker 调度,与目标 Storage 完成数据交互
二、文件上传与下载流程
1. 上传流程
- 客户端向 Tracker 请求可用存储节点
- Tracker 按策略选择 Group、Storage、存储路径
- 客户端上传文件到 Storage
- Storage 生成唯一 FileID,返回给客户端
- 同组 Storage 后台异步完成文件同步
2. 下载流程
- 客户端携带 FileID 请求 Tracker
- Tracker 解析组名、路径,定位目标 Storage
- 直接从 Storage 读取并返回文件
三、FastDFS + Nginx 集群部署(OpenEuler 实战)
环境规划
- tracker01:192.168.10.101
- tracker02:192.168.10.102
- storage1:192.168.10.103
- storage2:192.168.10.104
- nginx-proxy:192.168.10.105
1. 基础环境配置
关闭防火墙与 SELinux:
plaintext
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
2. 安装依赖库 libfastcommon
plaintext
yum install -y zlib-devel gcc libtool pcre-devel libevent
tar -zxvf libfastcommon-1.0.36.tar.gz
cd libfastcommon-1.0.36
./make.sh && ./make.sh install
cp libfastcommon.so /usr/lib
3. 安装 FastDFS
plaintext
tar -zxvf fastdfs-5.11.tar.gz
cd fastdfs-5.11
./make.sh && ./make.sh install
4. 配置并启动 Tracker
plaintext
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
vi /etc/fdfs/tracker.conf
disabled=false
port=22122
base_path=/fastdfs/tracker
store_group=group1
mkdir -p /fastdfs/tracker
/etc/init.d/fdfs_trackerd start
5. 配置并启动 Storage
plaintext
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
vi /etc/fdfs/storage.conf
disabled=false
port=23000
base_path=/fastdfs/storage
store_path0=/fastdfs/storage
tracker_server=192.168.10.101:22122
tracker_server=192.168.10.102:22122
group_name=group1
mkdir -p /fastdfs/storage
/etc/init.d/fdfs_storaged start
6. 配置 Client 并测试上传
plaintext
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
vi /etc/fdfs/client.conf
base_path=/fastdfs/tracker
tracker_server=192.168.10.101:22122
tracker_server=192.168.10.102:22122
# 测试上传
fdfs_upload_file /etc/fdfs/client.conf test.jpg
7. Storage 节点安装 Nginx + fastdfs-nginx-module
作用:解决同组节点文件同步延迟导致的访问失败,支持 HTTP 直接访问文件。
plaintext
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf nginx-1.19.5.tar.gz
cd nginx-1.19.5
./configure --add-module=../fastdfs-nginx-module/src
make && make install
cp ../fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vi /etc/fdfs/mod_fastdfs.conf
tracker_server=192.168.10.101:22122
tracker_server=192.168.10.102:22122
url_have_group_name=true
store_path0=/fastdfs/storage
ln -s /fastdfs/storage/data /fastdfs/storage/M00
8. Nginx 配置
plaintext
location /group1/M00 {
ngx_fastdfs_module;
}
9. 部署前端 Nginx 代理
配置 upstream 做负载均衡,统一入口访问存储集群。
四、FastDFS 适用场景与优势
- 适合:图片、短视频、文档等 4KB~500MB 中小文件
- 优势:轻量、部署简单、线性扩容、高可用、负载均衡友好
- 特点:分组存储、同组副本、异步同步、Tracker 无状态
五、总结
FastDFS 是一款专为互联网中小文件设计的分布式存储系统,架构清晰、运维成本低,配合 Nginx 可实现高可用、高并发的文件访问服务。从 Tracker/Storage 部署到集群整合,整套流程可快速落地,非常适合企业级图片 / 文件服务场景。