FastDFS分布式存储

一、FastDFS 核心架构与角色

FastDFS 整体由三类角色构成,分工明确、易于理解:

1. Tracker Server(调度节点)

  • 负责集群调度、负载均衡,管理所有 Storage 与分组信息
  • 接收 Storage 心跳上报,动态维护节点状态
  • 自身不持久化数据,支持多节点对等集群,扩展简单

2. Storage Server(存储节点)

  • 实际负责文件存储、备份、同步
  • Group(分组) 为单位,同组内节点互为副本
  • 直接使用操作系统文件系统,支持多磁盘多目录配置

3. Client(业务客户端)

  • 提供上传、下载、删除等文件操作接口
  • 通过 Tracker 调度,与目标 Storage 完成数据交互

二、文件上传与下载流程

1. 上传流程

  1. 客户端向 Tracker 请求可用存储节点
  2. Tracker 按策略选择 Group、Storage、存储路径
  3. 客户端上传文件到 Storage
  4. Storage 生成唯一 FileID,返回给客户端
  5. 同组 Storage 后台异步完成文件同步

2. 下载流程

  1. 客户端携带 FileID 请求 Tracker
  2. Tracker 解析组名、路径,定位目标 Storage
  3. 直接从 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 部署到集群整合,整套流程可快速落地,非常适合企业级图片 / 文件服务场景。

相关推荐
NJCloud2 小时前
ELK企业级日志分析平台(四)——基于 ELFK + Kafka 的日志采集与传输平台部署实践
linux·运维·分布式·elk·kafka
国科安芯2 小时前
星载网络化控制的总线脊梁:四路CANFD在分布式载荷管理中的架构优势
分布式·单片机·嵌入式硬件·架构·系统架构·canfd·低轨卫星星座
Allen_LVyingbo3 小时前
分布式GPU智能算法深度研究2026年版(下)
人工智能·分布式·算法·机器学习·知识图谱
何以解忧,唯有..19 小时前
Redisson分布式锁实现原理深度解析
分布式
萧瑟余晖20 小时前
Java深入解析篇三十六之分布式系统详解
java·开发语言·分布式
cc复CC1 天前
从零开始手写 Spark 03|RDD 的惰性流水线
分布式
cc复CC1 天前
从零开始手写 Spark 02|数据流与延迟迭代
大数据·分布式
七夜zippoe1 天前
基于 DolphinDB 构建分布式集群:从节点配置到高可用部署的完整实践
分布式·集群·dolphindb·节点配置·高可用部署
Acrellea1 天前
并网验收难破局:分布式光伏如何攻克孤岛、逆流两大技术关卡
分布式
杨运交2 天前
[060][调度模块]Redisson vs Redis 原生锁:两种分布式锁实现深度对比
数据库·redis·分布式