FastDFS 是一个开源的轻量级分布式文件系统,它由纯C语言开发,特别适合以中小文件(通常范围在4KB到500MB之间)为载体的在线服务,如图片分享、视频网站、文档存储等,其设计目标是高性能、高可用、高扩展性,尽管 CentOS 6 已进入生命周期结束(EOL)阶段,但在许多遗留系统中,它仍然是运行的操作系统,在这些系统上部署和维护 FastDFS 仍然具有现实意义,本文将详细介绍在 CentOS 6 环境下安装、配置和使用 FastDFS 的全过程。
核心架构理解
在开始部署之前,理解 FastDFS 的核心架构至关重要,它主要由两个角色组成:Tracker 服务器和 Storage 服务器。
- Tracker 服务器(跟踪器):它不存储文件本身,而是作为调度中心,客户端在访问文件系统时,首先会询问 Tracker 服务器,由 Tracker 根据负载均衡策略(如轮询、按负载等)为客户端指派一个可用的 Storage 服务器,Tracker 服务之间是对等的,可以部署多台以实现高可用。
- Storage 服务器(存储节点):负责存储实际的文件数据和文件的元数据(文件大小、后缀名、创建时间等),所有 Storage 服务器都是平级的,它们会定期向 Tracker 服务器报告自己的状态(如存储空间、同步状态等),Storage 服务器可以按组进行组织,同一个组内的服务器存储的文件是完全相同的,实现了数据冗余备份。
为了更清晰地展示两者的区别,请看下表:
角色 | 主要职责 | 是否存储文件 | 是否需要高可用 |
---|---|---|---|
Tracker 服务器 | 负载均衡、调度、状态管理 | 否 | 是,可集群部署 |
Storage 服务器 | 文件存储、文件同步、元数据管理 | 是 | 是,可分组实现冗余 |
文件上传的流程大致如下:客户端向 Tracker 请求上传,Tracker 返回一个可用的 Storage 服务器地址,客户端直接与该 Storage 通信,将文件发送过去,Storage 返回文件 ID(包含组名、路径和文件名),客户端保存此 ID,下载时,客户端拿着文件 ID 询问 Tracker,Tracker 返回文件所在的 Storage 地址,客户端直接去该 Storage 下载文件。
在 CentOS 6 上的安装步骤
由于 CentOS 6 的软件源较旧,FastDFS 通常需要通过编译源代码的方式进行安装。
环境准备
确保系统已安装必要的编译工具和依赖库,FastDFS 依赖于 libevent
,一个高性能的事件通知库。
# 安装编译工具 yum groupinstall -y "Development Tools" yum install -y wget # 安装 libevent yum install -y libevent libevent-devel
安装 FastDFS
从 FastDFS 的 GitHub 官方仓库下载最新的稳定版源代码。
# 下载并解压 FastDFS wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz tar -xvf V5.11.tar.gz cd fastdfs-5.11 # 编译并安装 ./make.sh ./make.sh install
安装完成后,配置文件默认位于 /etc/fdfs/
目录下,可执行文件位于 /usr/bin/
目录。
配置 Tracker 服务器
编辑 Tracker 的配置文件 /etc/fdfs/tracker.conf
。
# 创建数据和日志目录 mkdir -p /data/fastdfs/tracker # 编辑配置文件 vim /etc/fdfs/tracker.conf
需要关注以下关键配置项:
disabled=false
:启用此配置文件。bind_addr=
:可以留空,表示绑定所有网卡。port=22122
:Tracker 服务的端口号。base_path=/data/fastdfs/tracker
:Tracker 存储数据和日志的根目录。http.server_port=8080
:Tracker 内置的 HTTP 服务端口(一般不用,主要与 Nginx 集成)。
启动 Tracker 服务:
# 启动服务 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf # 查看服务是否启动 ps -ef | grep fdfs_trackerd
配置 Storage 服务器
编辑 Storage 的配置文件 /etc/fdfs/storage.conf
。
# 创建数据和日志目录 mkdir -p /data/fastdfs/storage # 编辑配置文件 vim /etc/fdfs/storage.conf
关键配置项如下:
disabled=false
:启用此配置文件。group_name=group1
:Storage 所属的组名,同一组内数据互为备份。bind_addr=
:留空。port=23000
:Storage 服务的端口号。base_path=/data/fastdfs/storage
:Storage 存储数据和日志的根目录。store_path0=/data/fastdfs/storage
:文件存储的实际路径,可以配置多个(store_path1, store_path2…)。tracker_server=192.168.1.100:22122
:Tracker 服务器的 IP 地址和端口,可以配置多个,用逗号或换行分隔。
启动 Storage 服务:
# 启动服务 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf # 查看服务是否启动 ps -ef | grep fdfs_storaged
启动后,Storage 会自动连接 Tracker,并在 /data/fastdfs/storage/data
目录下创建 00/00/
之类的多级目录用于存储文件。
客户端测试与 Nginx 集成
客户端上传测试
FastDFS 提供了客户端工具 fdfs_test
用于测试,我们需要先修改客户端配置文件 /etc/fdfs/client.conf
,确保 tracker_server
指向正确的地址。
vim /etc/fdfs/client.conf # 修改 tracker_server tracker_server=192.168.1.100:22122
然后执行上传命令测试:
# 上传一个本地文件 /usr/bin/fdfs_test /etc/fdfs/client.conf upload /root/test.jpg
成功后,命令会返回一个类似 group1/M00/00/00/wKgBf1x...
的文件 ID,这表示文件已成功存储在 Storage 服务器上。
与 Nginx 集成提供 HTTP 访问
Storage 服务器本身不提供 HTTP 访问能力,为了让用户能通过浏览器直接访问上传的文件,需要集成 Nginx,这需要安装一个专门的 Nginx 模块 fastdfs-nginx-module
。
下载并编译 Nginx,同时添加 FastDFS 模块:
# 下载 FastDFS Nginx 模块和 Nginx wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz wget http://nginx.org/download/nginx-1.14.2.tar.gz # 解压 tar -xvf V1.20.tar.gz tar -xvf nginx-1.14.2.tar.gz # 编译安装 Nginx,并添加模块 cd nginx-1.14.2 ./configure --add-module=../fastdfs-nginx-module-1.20/src make && make install
安装完成后,需要从 FastDFS 源码中复制 mod_fastdfs.conf
配置文件到 Nginx 配置目录,并进行相应修改,确保 tracker_server
、store_path0
等与 Storage 的配置一致,在 Nginx 的 nginx.conf
中配置 location
,使其指向 FastDFS 模块。
location ~/group[0-9]/M00 { ngx_fastdfs_module; }
重启 Nginx 后,即可通过 http://<nginx_ip>/group1/M00/...
的 URL 访问上传的文件。
小编总结与注意事项
在 CentOS 6 上部署 FastDFS 是一个相对直接的过程,主要依赖于源码编译,其轻量级和高性能的特性使其在特定场景下依然具有价值,必须强调的是,CentOS 6 已停止官方支持,存在严重的安全风险,任何新的项目或系统升级都应优先选择仍在维护的操作系统,如 CentOS Stream、Rocky Linux 或 AlmaLinux,对于遗留系统,应制定清晰的迁移计划,并采取严格的网络隔离等安全措施,以降低风险,FastDFS 的集群部署和性能调优是更深入的话题,需要根据实际的业务负载和硬件条件进行精细化的配置。
相关问答FAQs
问题1:我已经成功上传了文件,也得到了文件ID,为什么在浏览器中输入URL无法访问?
解答: 这是一个非常常见的问题,FastDFS 的 Storage 服务器本身不提供原生的 HTTP 服务来对外提供文件访问,它只负责通过其专有的协议(默认端口23000)与客户端进行文件传输,要实现通过 HTTP 访问,必须为 Storage 服务器配置一个 Web 服务器,最常见的就是 Nginx,你需要安装 Nginx 并编译 fastdfs-nginx-module
模块,该模块的作用是接收 HTTP 请求,解析出文件ID中的组名和文件路径,然后直接在本地磁盘(即 Storage 的存储路径)中查找文件并返回给客户端,请检查你是否已正确安装并配置了 Nginx 及其 FastDFS 模块。
问题2:Tracker 服务器和 Storage 服务器可以部署在同一台机器上吗?
解答: 可以,但这通常只推荐用于开发、测试环境或小型的、对可用性要求不高的生产环境,将 Tracker 和 Storage 部署在同一台机器上会存在资源竞争(CPU、内存、磁盘I/O、网络带宽),并且无法实现真正的高可用,在生产环境中,为了确保系统的稳定性和可靠性,强烈建议将 Tracker 服务器和 Storage 服务器部署在不同的物理机上,Tracker 服务器集群负责调度,Storage 服务器集群(按组)负责存储,这种分离部署的方式才能最大化发挥 FastDFS 分布式架构的优势。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复