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

相关推荐
PingCAP14 小时前
善战者无赫赫之功:消费金融核心系统的数据库选型与升级路径
数据库·分布式·架构
库库的数据库笔记15 小时前
金融核心交易系统的数据库国产信创改造该如何做?
大数据·数据库·分布式·mysql·oracle·金融·数据库架构
爱吃火鸡面呀20 小时前
深入理解 Spark RDD:五大特性与实战解析
大数据·分布式·spark
Norris Huang1 天前
Kafka Connect 与 Flink CDC 写入 Iceberg:Upsert 的代价,以及 S3 Tables 的真正价值
分布式·flink·kafka
我就是不信1 天前
集群高并发环境下如何保证分布式唯一全局ID生成?
分布式
黄俊懿2 天前
【架构师从入门到进阶】第六章:服务集群优化——第八节:线程数公式
java·服务器·数据库·分布式·性能优化·架构·系统架构
大菠萝爱上小西瓜2 天前
基于 Spark + Iceberg 湖仓一体的 Netflix 流媒体用户行为全链路数仓与 ALS 智能推荐决策系统(含穿透下钻大屏)
大数据·分布式·spark
吴建旭 智宅焕2 天前
智能家居售后服务体系的架构设计:分布式售后风险的集中式兜底方案
分布式·智能家居
lisanmengmeng2 天前
Ganglia分布式集群监控系统安装手册
分布式
Smoothcloud润云3 天前
GPU算力平台推荐:新手租GPU时,镜像环境和显存应该怎么选?
大数据·人工智能·pytorch·分布式·深度学习·gpu算力