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.提前下载好需要的软件包(你也可以按照其他版本,但是需要版本间匹配):
  • 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端口。

问题

  1. 如何获取所有文件信息
    答:没有直接API.可以通过binlog查看所有文件描述符所在group,然后利用fdfs_file_info来查看具体每个文件的信息。这需要预先存储文件信息到数据库才能便于检索。

  2. 一个节点文件被删除,如何恢复
    答:如果是集群,一个节点文件删除,那么其他的节点也会同步删除。如果修改(vim)某个节点的文件其他节点并不会同步,下载时会负载均衡获取其中一个节点上的文件返回。

  3. 一个tracker_server可以挂多个storage server, 那每个storage server可以有几个group?
    答:一般一个storage server对应一个group id.

  4. 如何负载均衡
    答:一个storage可以对应多个tracker. 另外可以配置nginx负载均衡访问storage.
    当集群中的一个storage配置了多个tracker后,其他节点即使没有配置多tracker也会把数据写到多个storage.
    client即使配置多个tracker但storage没有配置多个也不会把数据写到多个上面。

  5. 使用的是什么协议?
    答:专用TCP协议,专用协议最大的好处就是写的操作效率跟高,在tcp/ip之上. FastDFS下载文件支持http.

  6. 待搞明白问题: tracker.conf 和 storage.conf 中的 http.server_port 是什么作用?我配置了nginx,并且都和nginx的80端口不一致,重启时访问文件时也没有报错。

posted @   JaneySJ  阅读(802)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示