TL;DR

  • 场景: 三台主机(h121/122/123)同时部署 tracker、storage、Nginx,按轮询上传存储。
  • 结论: 按 store_lookup=0 与多 tracker_server 列表即可跑通;关键在 Nginx+mod_fastdfs 路由与监控校验。
  • 产出: 一套可复用的集群配置清单 + 版本矩阵 + 常见错误速查卡,便于上线与回归。

版本矩阵

条目/特性已验证说明
多 Tracker(h121/h122/h123)并行client.conf/storage.conf 均配置三条 tracker_server,可路由与容灾。
store_lookup=0 轮询贴合多 storage 组装场景,默认即为 0,与配置一致。
Storage 三节点(同一 group)按文中示例已联通并可监控;同步状态以 fdfs_monitor 为准。
Nginx + mod_fastdfs已给出 mod_fastdfs.conf tracker 列表与 Nginx 路由配置。
fdfs_monitor 观测与巡检已展示运行截图,可用于 ACTIVE/SYNCING/DISCONNECTED 判定。

1. FastDFS 集群介绍

1.1 基本概念

FastDFS(Fast Distributed File System)是一款开源的轻量级分布式文件系统,由阿里巴巴资深架构师余庆开发。它主要用于解决大容量文件存储和高并发访问的问题,特别适合中小型互联网企业使用。

1.2 核心组件

FastDFS集群主要由两个核心组件构成:

  • Tracker Server(跟踪服务器): 负责调度和管理整个文件系统,记录storage server的状态信息。通常采用主备架构保证高可用性。一个集群可以部署多个tracker server实现负载均衡。
  • Storage Server(存储服务器): 负责实际的文件存储工作,以组(group)为单位组织。每个group包含多个storage server,采用冗余备份机制确保数据安全。

1.3 主要特点

  • 高性能: 采用内存索引方式,文件定位快速
  • 高扩展性: 支持在线扩容,不影响现有服务
  • 高可用性: 无单点故障,自动故障转移
  • 负载均衡: 支持多tracker和多storage的负载均衡
  • 文件去重: 相同文件只存储一份,节省空间

2. 架构设置

我们需要三台服务器,三个 tracker 和 三个 storage。

  • h121: tracker + storage group + nginx
  • h122: tracker + storage group + nginx
  • h123: tracker + storage group + nginx

3. 集群配置

3.1 tracker集群

vim /etc/fdfs/tracker.conf

修改配置:

# 0 轮询
# 1 指定组
# 2 剩余存储空间多的优先
store_lookup=0

h121 h122 h123 都需要配置(默认值是0)

3.2 storage集群

vim /etc/fdfs/storage.conf

写入以下内容:

tracker_server = h121.wzk.icu:22122
tracker_server = h122.wzk.icu:22122
tracker_server = h123.wzk.icu:22122

h121 h122 h123 都需要进行配置。

然后重启 tracker 和 storage:

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

3.3 FastDFS 访问原理

FastDFS 的访问机制中,tracker 服务器虽然在逻辑上是对等的,但在实际运行过程中存在 Leader 选举机制。

3.4 测试上传

vim /etc/fdfs/client.conf

修改内容:

tracker_server = h121.wzk.icu:22122
tracker_server = h122.wzk.icu:22122
tracker_server = h123.wzk.icu:22122

上传文件:

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf ~/wzk.png

4. Nginx结合

vim /etc/fdfs/mod_fastdfs.conf

修改内容:

tracker_server = h121.wzk.icu:22122
tracker_server = h122.wzk.icu:22122
tracker_server = h123.wzk.icu:22122

5. 错误速查

症状根因定位修复
上报报错 connect to tracker timeout / Connection refused :22122tracker 列表/端口不通、DNS 未解析telnet h121 22122dig h121.wzk.icu检查端口连通性,修复DNS解析或tracker配置
下载 404(Nginx 命中但取不到文件)URL 前缀与 group 映射不一致查 Nginx 日志与 mod_fastdfs.conf统一前缀,校验 group_nameurl_have_group_name
fdfs_monitor 显示某节点长期 DISCONNECTEDstorage 进程挂/磁盘满/权限或网络问题systemctl status fdfs_storageddf -h清理磁盘、修复权限;重启 storage
新增 storage 同步极慢或不动时间漂移、带宽瓶颈、I/O 慢date -R 校时、iftopNTP 校时;高峰期限速/离线预热