FastDFS安装部署与使用
FastDFS 简介
Fastdfs(https://github.com/happyfish100) 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。
FastDFS 系统有三个角色:跟踪服务器(Tracker Server)和存储服务器(Storage Server)以及客户端(Client)。
- Tracker Server:跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。
- Storage Server:存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。
- Client:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。
安装部署
- 1.安装依赖库: yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y
- 2.提前下载好需要的软件包(你也可以按照其他版本,但是需要版本间匹配):
- (1)下载libfastcommon环境包:wget https://github.com/happyfish100/libfastcommon/archive/refs/tags/V1.0.64.tar.gz
- (2)下载Fastdfs分离出的网络框架-libserverframe:wget https://github.com/happyfish100/libserverframe/archive/refs/tags/V1.1.23.tar.gz
- (3)下载Fastdfs包:wget https://github.com/happyfish100/fastdfs/archive/refs/tags/V6.9.1.tar.gz
- 3.按照上面的顺序以此解压包,并cd进入之后执行 ./make.sh && ./make.sh isntall
- 4.配置文件:依次安装完成后,配置文件也被安装在/etc/fdfs/下
- cd /fastdfs-6.9.1/conf 并执行 cp anti-steal.jpg http.conf mime.types /etc/fdfs/
- 修改/etc/fdfs/下面的tracker.conf,storage.conf和client.conf 主要是修改base_path等路径(搜索关键字/home/yuqing/),tracker_server(一般填写本机IP,多个server请填写多个)
- 5.启动服务:
- (1)安装完成后有服务启动文件/usr/lib/systemd/system/fdfs_trackerd.service 和 fdfs_storaged.service,根据情况修改里面的 PIDFile 文件位置和二进制文件位置。
- (2)systemctl start fdfs_trackerd; systemctl start fdfs_trackerd
- (3)netstat -apn|grep fdfs 可以查看到22122端口和23000端口的服务
- 6.验证服务:
- fdfs_monitor /etc/fdfs/client.conf 查看运行状态,集群状态
- fdfs_upload_file /etc/fdfs/client.conf test.jpg
- fdfs_download_file client.conf group1/M00/00/00/wKgfgGTtl_mAfzbcAAAADVZ4uvs276.txt; fdfs_download_file client.conf group1/M00/00/00/CTveAAADeLE3ZJc.29.txt /usr/other-name.txt
- fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/CgAH2Fgr06mAYTveAAADeLE3ZJc.29.txt
- fdfs_append_file <config_file> <appender_file_id> <local_filename> 上传断点文件
- fdfs_regenerate_filename <config_file> <appender_file_id> 重新生成appendered文件的标识符,要在fdfs_append_file命令之后用
log
FastDFS记录binlog和程序运行log.
另外,通过程序运行log(位置和binlog平行目录下)可以看到当配置多个storage负载均衡时会产生一个tracker leader.
nginx配合FastDFS实现HTTP文件访问
安装nginx并修改nginx的配置文件,添加如下内容:
location /group1/M00 {
alias /home/fastdfs/storage/data;
}
重启nginx即可。可以访问已上传文件http://192.168.1.2/group1/M00/00/00/wKgfgGTtl_mAfzbcAAAADVZ4uvs276.txt,访问端口是nginx端口。
问题
-
如何获取所有文件信息
答:没有直接API.可以通过binlog查看所有文件描述符所在group,然后利用fdfs_file_info来查看具体每个文件的信息。这需要预先存储文件信息到数据库才能便于检索。 -
一个节点文件被删除,如何恢复
答:如果是集群,一个节点文件删除,那么其他的节点也会同步删除。如果修改(vim)某个节点的文件其他节点并不会同步,下载时会负载均衡获取其中一个节点上的文件返回。 -
一个tracker_server可以挂多个storage server, 那每个storage server可以有几个group?
答:一般一个storage server对应一个group id. -
如何负载均衡
答:一个storage可以对应多个tracker. 另外可以配置nginx负载均衡访问storage.
当集群中的一个storage配置了多个tracker后,其他节点即使没有配置多tracker也会把数据写到多个storage.
client即使配置多个tracker但storage没有配置多个也不会把数据写到多个上面。 -
使用的是什么协议?
答:专用TCP协议,专用协议最大的好处就是写的操作效率跟高,在tcp/ip之上. FastDFS下载文件支持http. -
待搞明白问题: tracker.conf 和 storage.conf 中的 http.server_port 是什么作用?我配置了nginx,并且都和nginx的80端口不一致,重启时访问文件时也没有报错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!