FastDFS 简明教程

FastDFS

一、FastDFS简介

1、为什么需要 FastDFS

  • 分布式集群环境下,文件上传至节点A,这时通过负载均衡算法,访问到节点B,则不能访问到文件,这时 会出现有时能访问有时不能访问的问题
  • 同时要考虑为文件做冗余备份(即上传文件后,存多份,避免一份文件坏了,访问不了)、负载均衡、线性扩容等功能,这些都是单节点文件上传所不具备的

2、 FastDFS 体系结构

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问 (文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标, 使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

fastDFS体系结构

3、文件上传流程

文件上传流程

客户端上传文件后存储服务器将文件 ID 返回给客户端,此文件 ID 用于以后访问该文件的索引信息。文件索引信息 包括:组名,虚拟磁盘路径,数据两级目录,文件名。

文件上传后的地址

**组名:**文件上传后所在的 storage 组名称,在文件上传成功后有storage 服务器返回,需要客户端自行保存。

**虚拟磁盘路径:**storage 配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推。

**数据两级目录:**storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。

**文件名:**与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储 服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

二、FastDFS 安装

这里,我们使用 docker 进行安装,如果还有没有学过 docker 的小伙伴,建议去学习一下 docker ,可以打开新世界的大门

1、拉取 docker 镜像

fastdfs 有很多镜像版本,这里我们选择一个比较靠谱的

docker pull morunchang/fastdfs

2、运行 tracker

要是忘记了 tracker 是啥,请再看看前面的 FastDFS 架构

这里的 --net=host

docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh
  • 使用的网络模式是–net=host,host模式可以不用映射容器端口宿主机, 替换为你机器的Ip即可 是组名,即storage的组
  • 如果想要增加新的storage服务器,再次运行该命令,注意更换 新组名

或者,我们可以手动指定端口映射:

docker run -d -p 22122:22122 --name=tracker  morunchang/fastdfs sh tracker.sh

修改 tracker 的配置文件:

# 进入 tracker 的 bash
docker exec -it tracker bash

# 进入tracker配置文件目录
cd /etc/fdfs/

# 打开待修改的文件
vi client.conf

待修改的位置

3、运行 storage

docker run -d --name storage --net=host -e TRACKER_IP=<你的 tracker 所在的 ip 地址>:22122 -e
GROUP_NAME=<组名> morunchang/fastdfs sh storage.sh

docker run -d --name storage --net=host -e TRACKER_IP=47.117.129.89:22122 -e GROUP_NAME=group1    morunchang/fastdfs sh storage.sh
  • 使用的网络模式是–net=host,host模式可以不用映射容器端口宿主机, 替换为你机器的Ip即可
  • GROUP_NAME 是组名,即storage的组
  • 如果想要增加新的storage服务器,再次运行该命令,注意更换 新组名

也可以使用传统的方法:

docker run -d -p 23000:23000 --name=storage -e TRACKER_IP=47.117.129.89:22122 -e GROUP_NAME=group1    morunchang/fastdfs sh storage.sh

**注意:**这里我们为了进行测试,没有挂载数据卷,在实际的操作中,我们是必须要挂载数据卷的,不然一旦容器被关闭,我们所存储的所有图片就会丢失

4、修改 storage 的nginx 配置文件

Fastdfs 中,是内置了 nginx 的,我们需要修改一下其配置

修改nginx的配置:
进入storage的容器内部,修改nginx.conf

docker exec -it storage /bin/bash

进入后

vi /etc/nginx/conf/nginx.conf

添加以下内容(一般是已经存在的,不用改)

location ~ /M00 {     root /data/fast_data/data;     ngx_fastdfs_module;}

禁止缓存:

add_header Cache-Control no-store;

添加位置

退出容器

exit

重启storage容器

docker restart storage

5、测试配置是否成功

这里,我们在 tracker 容器,目录中,随便创建一个文件,然后尝试发送到 storage 中

随便创建一个文件:

echo "faroz" 
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FARO_Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值