Docker安装FastDFS

1. FastDFS简介

1.1 FastDFS体系结构

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

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

FastDFS架构包括Tracker Server和Storage Server。客户端请求Tracker Server进行文件上传、下载,通过Tracker Server 调度最终由Storage Server完成文件上传和下载。

Tracker Server作用是负载均衡调度,通过Tracker Server在文件上传时可以根据一定的策略找到storage server提供文件上传服务。可以将tracker server称为追踪服务器调度服务器。storage server作用是文件存储,客户端上传的文件最终存储在storage服务器上,storage server没有实现自己的文件系统,而是利用操作系统的文件系统来管理文件。可以将storage称为存储服务器。

image-20210913155932638

1.2 上传流程

image-20210913160252586

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

1559118013272

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

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

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

文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储

服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

2. FastDFS搭建

2.1 安装FastDFS镜像

我们使用Docker搭建FastDFS的开发环境

  1. 拉取镜像

    [root@iZe9dbx33shi0fZ ~]# docker pull morunchang/fastdfs
    
  2. 查看镜像

    [root@iZe9dbx33shi0fZ ~]# docker images
    REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
    morunchang/fastdfs   latest              a729ac95698a        5 years ago         460MB
    
  3. 运行tracker

    [root@iZe9dbx33shi0fZ ~]# docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh
    
  4. 运行storage

    参数解读:
    	-d 后台运行
    	--name 给容器起名字
    	--net 使用的网络模式
    	-e 设置变量
    [root@iZe9dbx33shi0fZ ~]# docker run -d --name storage --net=host -e TRACKER_IP=121.43.116.109:22122 -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh
    
    • 使用的网络模式是-net=host
    • 121.43.116.109宿主机的ip(自己服务器的公网ip)
    • group1是组名,即storage的组
    • 如果想要增加新的storage服务器,再次运行该命令,注意更换 新组名

2.2 配置Nginx

Nginx在这里主要提供对FastDFS图片访问的支持,Docker容器(刚才搭建的FastDFS容器)中已经集成了Nginx,我们需要修改nginx的配置,进入storage的容器内部,修改nginx.conf配置文件

  1. 进入容器

    参数解读:
    	-it 以交互模式运行容器
    [root@iZe9dbx33shi0fZ ~]# docker exec -it storage  /bin/bash
    
  2. 编辑配置文件

    root@iZe9dbx33shi0fZ:/# vi /etc/nginx/conf/nginx.conf
    
  3. 加入以下配置文件内容

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

    默认文件中已经添加了

  4. 禁止缓存

    add_header Cache-Control no-store;
    

    修改完以后的文件如下图所示

    image-20210913163229137

  5. 退出容器

    root@iZe9dbx33shi0fZ:/# exit
    
  6. 重启storage容器

    [root@iZe9dbx33shi0fZ ~]# docker restart storage
    
  7. 查看启动的容器

    [root@iZe9dbx33shi0fZ ~]# docker ps
    CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                               NAMES
    c5ae007af5b2        morunchang/fastdfs   "sh storage.sh"          15 minutes ago      Up 39 seconds                                           storage
    e2aa3965b4e2        morunchang/fastdfs   "sh tracker.sh"          17 minutes ago      Up 17 minutes                                           tracker
    
  8. 开机自启设置

    [root@iZe9dbx33shi0fZ ~]# docker update --restart=always tracker
    tracker
    [root@iZe9dbx33shi0fZ ~]# docker update --restart=always storage
    storage
    

自此FastDFS搭建安装完成,但是用java客户端连接的时候会出现连接超时的情况,下面是解决方案

3. 解决java客户端连接出现连接超时的问题

修改fdfs的配置文件

  1. 进入交互模式

    [root@iZe9dbx33shi0fZ ~]# docker exec -it storage  /bin/bash
    
  2. 进入配置文件所在的目录

    root@iZe9dbx33shi0fZ:/# cd /etc/fdfs
    
  3. 查看文件

    image-20210913164706350

    主要修改以上三个文件

    将这三个文件中出现tracker_server:xxx.xx.xx.xx:22122的地方换成tracker_server:自己服务器的ip地址:22122

    image-20210913165030466

好像就只有client.conf文件中出现了。

修改完以后,不要忘记重启两个容器

[root@iZe9dbx33shi0fZ ~]# docker restart tracker
tracker
[root@iZe9dbx33shi0fZ ~]# docker restart storage
storage

三个重要端口

  1. storage server的端口号 默认23000 【在storage.conf中】
  2. tracker server的端口号 默认22122 【在tracker.conf中】
  3. nginx的端口号 默认8080 【在tracker.conf中】

三个重要端口

  1. storage server的端口号 默认23000 【在storage.conf中】
  2. tracker server的端口号 默认22122 【在tracker.conf中】
  3. nginx的访问端口 默认8080【在nginx.conf中】
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值