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

相关推荐
独隅15 小时前
ZooKeeper 基础原理深度解析
分布式·zookeeper·云原生
MY_TEUCK16 小时前
【Redis 高级实战】分布式缓存、 多级缓存与最佳实践一篇打通
redis·分布式·缓存
老毛肚17 小时前
Redis分布式篇
数据库·redis·分布式
juniperhan17 小时前
Flink 系列第16篇:Flink 核心数据类型类详解(POJO、Row、Tuple)
java·大数据·数据仓库·分布式·flink
zshs00017 小时前
重读《凤凰架构》,从分布式演进史看技术选型的本质
分布式·后端·架构
代码漫谈20 小时前
深入RabbitMQ腹地:核心概念、底层原理与生产级实践
分布式·消息队列·rabbitmq
旷世奇才李先生1 天前
Redis高级实战:分布式锁、缓存穿透与集群部署(附实战案例)
redis·分布式·缓存
代码漫谈2 天前
RabbitMQ 解析:核心价值、环境搭建与应用
分布式·消息队列·rabbitmq