docker下的FastDFS分布式文件服务器

项目需要存储海量小文件,传统方法是上传到某个磁盘中的文件夹,但是对于大量的小文件,这种方式不可取。所以打算采用分布式文件系统。
分布式文件系统:顾名思义,他是可以集群的。我选用fastdfs服务器存储文件

使用docker搭建FastDFS文件服务器:

  1. 虚拟机安装docker:yum install docker-engine
  2. 配置好阿里的yum源,之前我配置的是清华的yum,试了好多fastdfs的源都下载很慢。
  3. 执行docker pull morunchang/fastdfs 拉取文件服务器的镜像
  4. 查看是否拉取成功:docker images
  5. 运行trackerdocker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh
  6. 运行storagedocker run -d --name storage --net=host -e TRACKER_IP=<linux服务器的ip地址(外网可访问)>:22122 -e GROUP_NAME=<自定义组名> morunchang/fastdfs sh storage.sh
  7. 查看是否成功启动:docker ps
    在这里插入图片描述

可以看到成功启动了
8. 修改nginx的配置,不拦截上传内容:
fastdfs内置nginx

  • 进入容器内部:docker exec -it storage /bin/bash
    在这里插入图片描述
  • 修改nginx配置文件:vi /data/nginx/conf/nginx.conf
  • 添加修改内容:
//添加修改内容
location /group1/M00 {
   proxy_next_upstream http_502 http_504 error timeout invalid_header;
     proxy_cache http-cache;
     proxy_cache_valid  200 304 12h;
     proxy_cache_key $uri$is_args$args;
     proxy_pass http://fdfs_group1;
     expires 30d;
 }
  • 重启storage服务:docker restart storage

我对tracker和storage的理解是:
tracker是fastdfs客户端用来和storage通信的媒介
客户端大部分的操作过程是先通过查询tracker,从tracker返回具体的storageIp,然后连接返回的storageIp,执行具体的操作。

在tracker.conf中有关upload storage选择的相关配置

1)选择upload的group

0:表示所有的group以轮询方式选择

1:指定group,该group的名称由store_group配置指定

2:负载均衡,表示选择空余容量最大的group

2)选择group中的storage

0:group中的所有的storage轮询选择

1:选择IP地址最大的storage

2:根据优先级配置(在每个storage.conf中的upload_priority配置)

3)选择storage中的store_path

0:对所有的store path进行轮询

1:负载均衡,选择空闲空间最大的store_path

(3)tracker选择download storage
tracker在下载而选择一个storage时配置的参数是:download_server,可以选择从源storage优先下载或者轮询下载。tracker会先检查下载的group中是否有active的storage,没有就返回失败。

springboot集成fastdfs时的一个坑,linux对外暴露的端口有:8080,22122,23000,几乎没人提到23000端口,这其实是storage的默认端口。


不使用docker搭建fastdfs的一些坑:
1.fastdfs_nginx_module的版本号和fastdfs不兼容,5.0.5对应1.16
2.cd fastdfs-nginx-module/src 下的config文件配置问题: http://bbs.chinaunix.net/thread-4169828-1-1.html
3.配置storage的nginx访问路径时,nginx的配置文件中加user root;不然会报nginx 404

猜你喜欢

转载自blog.csdn.net/KKALL1314/article/details/84348611