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 部署到集群整合,整套流程可快速落地,非常适合企业级图片 / 文件服务场景。

相关推荐
小熊美家熊猫系统13 小时前
电子合同技术实现与合规实践
java·开发语言·分布式
AI 小老六16 小时前
Google AX 控制面拆解:分布式 Agent 如何把断点恢复、审计策略和执行调度收进同一条链路
人工智能·分布式·后端·ai·架构·ai编程
functionflux16 小时前
kafka-python:Python 生态中最成熟的 Kafka 客户端
分布式·python·其他·kafka
kyle~20 小时前
DDS分布式实时系统---自省机制
开发语言·分布式·机器人·c#·接口·ros2
q210306337221 小时前
kafka启动几秒后挂了,重启多次无果
分布式·kafka
凯源智能21 小时前
工商业分布式光伏箱变智能监控落地实战
分布式·箱变测控·光伏箱变测控装置·箱变监控系统·箱式变测控装置
沂水弦音1 天前
软控 EI 系列模块优势与竞品对比分析:面向 EtherCAT 分布式 I/O 的工程选型视角
分布式·制造·工业自动化·ethercat·io模块
木心术11 天前
在NVIDIA DGX Spark上部署NemoClaw的实际操作方案以及实际应用便利性。
大数据·分布式·spark
kuokay1 天前
MLOps 与 AIOps 的核心概
人工智能·分布式·大模型·agent·llama
openFuyao1 天前
openFuyao InferNex:云原生分布式 LLM 推理加速套件——从生产痛点到算力的极致释放
分布式·云原生·ai原生·openfuyao·多样化算力