FastDFS 是阿里余庆大神以 C 语言开发的开源轻量级分布式文件系统。

系统对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载)等,特别适合以文件为载体的在线服务,如:图片网站,视频网站等。
从2008年研发FastDFS开源至今,在一些互联网创业公司中备受推崇,GitHub开源地址:https://github.com/happyfish100/fastdfs

背景:

  1. 在我们的项目中有很多需要存储的内容出现,比如图片,视频,文件等,早期用户量不大,产生的文件也不是很多,这时我们可以把文件和服务程序放在一个服务器中。
  2. 随着文件越来越多,服务器的资源会被文件资源大量占据,从而影响到服务器的稳定,这时我们可以单独的把文件服务器拆出来。
  3. 拆解出来后,文件服务的使用不会影响到我们的系统服务的稳定,但是当用户量越来越大,存储的文件就会越来越多,这时如果还是单台的文件服务,比如1000T的文件,这时是存储不下去的,这时就产生了分布式文件存储
  4. 我们解决将这1000T的文件分散的存储到各个节点上,然后当我们需要读取文件的时候又能非常快的帮我们把文件找到。

docker搭建分布式文件存储系统FastDFS

#关闭防火墙
systemctl stop firewalld

#搜索镜像文件
docker search fastdfs

#下载镜像文件
docker pull season/fastdfs:1.2

#创建挂载文件夹
mkdir -p /data/docker/fastdfs/tracker/data
mkdir -p /data/docker/fastdfs/storage/data
mkdir -p /data/docker/fastdfs/nginx/conf
mkdir -p /data/docker/fastdfs/storage/store_path
mkdir -p /data/docker/fastdfs/storage/fdfs_conf

#运行tracker容器
#docker stop tracker && docker rm tracker
docker run -d --name tracker \
--net=host \
-p 22122:22122 \
-v /data/docker/fastdfs/tracker/data:/fastdfs/tracker/data \
-v /data/docker/fastdfs/tracker/client.conf:/etc/fdfs/client.conf \
--privileged=true --restart=always season/fastdfs:1.2 tracker

#运行storage容器
#docker stop storage && docker rm storage
docker run -d --name storage \
--net=host \
-p 23000:23000 \
-v /data/docker/fastdfs/storage/data:/fastdfs/storage/data \
-v /data/docker/fastdfs/storage/store_path:/fastdfs/store_path \
-v /data/docker/fastdfs/storage/fdfs_conf/client.conf:/fdfs_conf/client.conf \
-v /data/docker/fastdfs/storage/fdfs_conf/storage.conf:/fdfs_conf/storage.conf \
-e TRACKER_SERVER:10.20.167.74:22122 \
-e GROUP_NAME=group1 \
--restart=always season/fastdfs:1.2 storage

#将配置文件复制复制一份出来修改成想要的ip
docker cp storage:/fdfs_conf/storage.conf /data/docker/fastdfs/storage/fdfs_conf/storage.conf
docker cp storage:/fdfs_conf/client.conf /data/docker/fastdfs/storage/fdfs_conf/client.conf

#重启storage
docker restart storage

#检查tracker容器与storage容器关联是否成功
docker exec -it storage /bin/bash
fdfs_monitor /fdfs_conf/storage.conf

#用docker模拟客户端上传文件到storage容器
#进入tracker容器
docker exec -it tracker bash
fdfs_upload_file /fdfs_conf/storage.conf 1.txt

#退出容器,查看文件
cd /data/docker/fastdfs/storage/store_path/data/00/00

#配置fastdfs_nginx
docker cp storage:/etc/nginx/conf/nginx.conf /data/docker/fastdfs/nginx/conf/nginx.conf
#修改location
---------------------------
location / {
    root   /fastdfs/store_path/data;
    ngx_fastdfs_module;
    index  index.html index.htm;
}

---------------------------
#docker stop fastdfs_nginx && docker rm fastdfs_nginx
docker run -d --name fastdfs_nginx \
--add-host=tracker:10.20.167.74 \
-p 8888:80 \
-v /data/docker/fastdfs/storage/store_path:/fastdfs/store_path \
-v /data/docker/fastdfs/nginx/conf/nginx.conf:/etc/nginx/conf/nginx.conf \
-e TRACKER_SERVER:10.20.167.74:22122 \
--privileged=true --restart=always season/fastdfs:1.2 nginx

#测试nginx访问
curl -i http://10.20.167.74:8888/group1/M00/00/00/ChSnSmQFnkKAKZKwAAAAC7kDAGc490.txt

Q.E.D.


行走在天地间自由的灵魂