目录

一、概述

二、整合 fastdfs-nginx-module模块

三、扩展模块执行流程


一、概述

前面一篇文章,我们已经通过安装Nginx实现了从浏览器访问FastDFS中的文件信息,在生产环境中,我们的存储服务storage一般都是有几台机器组成一个组,当上传一个文件后,同组存储服务器之间需要进行文件复制,可能存在同步延迟的问题。

  • 什么是同步延迟问题?

举个例子:

假设 Tracker 服务器将文件上传到了 192.168.179.133,上传成功后文件 ID已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.179.132,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在192.168.179.132上取文件, 就会出现文件无法访问的错误。

为了解决这个问题,FastDFS提供了 fastdfs-nginx-module的Nginx模块, fastdfs-nginx-module 可以重定向文件链接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。

下面我们就总结一下如何整合 fastdfs-nginx-module模块到FastDFS中。

二、整合 fastdfs-nginx-module模块

【a】下载 fastdfs-nginx-module模块

这里以fastdfs-nginx-module_v1.16.tar.gz为示例,小伙伴们百度一下下载即可。

【b】解压缩fastdfs-nginx-module模块

将fastdfs-nginx-module_v1.16.tar.gz上传到服务器中:

然后进行解压:

[root@localhost fastdfs]# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
[root@localhost fastdfs]# ll
total 1448
drwxr-xr-x.  2 root root        6 Nov  9 16:05 client
drwxr-xr-x. 10 8980 users     258 Nov  9 14:42 FastDFS
drwxrwxr-x.  3  500   500      47 May  4  2014 fastdfs-nginx-module
-rw-r--r--.  1 root root    17510 Nov 16 15:49 fastdfs-nginx-module_v1.16.tar.gz
-rw-r--r--.  1 root root   345400 Nov  9 14:39 FastDFS_v5.05.tar.gz
drwxr-xr-x.  3 root root       18 Nov  9 15:52 file
drwxrwxr-x.  3 root root      102 Nov  9 14:31 libfastcommon-1.0.7
-rw-r--r--.  1 root root    73148 Nov  9 14:30 libfastcommonV1.0.7.tar.gz
drwxr-xr-x.  9 es   mysql     186 Nov  9 17:05 nginx-1.18.0
-rw-r--r--.  1 root root  1039530 Nov  9 17:03 nginx-1.18.0.tar.gz
drwxr-xr-x.  4 root root       30 Nov  9 15:52 storage
drwxr-xr-x.  4 root root       30 Nov  9 15:22 tracker
[root@localhost fastdfs]# cd fastdfs-nginx-module/
[root@localhost fastdfs-nginx-module]# ll
total 8
-rw-rw-r--. 1 500 500 2342 May  4  2014 HISTORY
-rw-rw-r--. 1 500 500 1733 May  4  2014 INSTALL
drwxrwxr-x. 2 500 500  109 May  4  2014 src

【c】配置Nginx,在nginx中添加模块

首先我们停止nginx服务,然后进入解压包目录,然后添加模块:

[root@localhost nginx-1.18.0]# ./configure --add-module=/fastdfs/fastdfs-nginx-module/src

【d】重新编译、安装

[root@localhost nginx-1.18.0]# make && make install

【e】查看Nginx的模块

[root@localhost nginx-1.18.0]# /usr/local/nginx/sbin/nginx -V

如果结果如下图所示,说明模块添加成功:

【f】复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录

[root@localhost /]# cd fastdfs/fastdfs-nginx-module/
[root@localhost fastdfs-nginx-module]# cd src/
[root@localhost src]# ll
total 76
-rw-rw-r--. 1 500 500 33207 Aug 30  2013 common.c
-rw-rw-r--. 1 500 500  3479 Jan  3  2012 common.h
-rw-rw-r--. 1 500 500   447 Nov  4  2010 config
-rw-rw-r--. 1 500 500  3679 Mar 30  2013 mod_fastdfs.conf
-rw-rw-r--. 1 500 500 28542 May  4  2014 ngx_http_fastdfs_module.c
[root@localhost src]# cp mod_fastdfs.conf /etc/fdfs/
[root@localhost src]# 

【g】修改mod_fastdfs.conf如下配置,其它默认

  • connect_timeout=10;
  • tracker_server=192.168.179.133:22122;
  • url_have_group_name = true:如果文件ID的uri中包含/group**,则要设置为true;
  • store_path0=/fastdfs/file:Storage 配置的store_path0路径,必须和storage.conf中的一致;

【h】复制 FastDFS 的部分配置文件到/etc/fdfs 目录

[root@localhost /]# cd fastdfs/
[root@localhost fastdfs]# ll
total 1448
drwxr-xr-x.  2 root root        6 Nov  9 16:05 client
drwxr-xr-x. 10 8980 users     258 Nov  9 14:42 FastDFS
drwxrwxr-x.  3  500   500      47 May  4  2014 fastdfs-nginx-module
-rw-r--r--.  1 root root    17510 Nov 16 15:49 fastdfs-nginx-module_v1.16.tar.gz
-rw-r--r--.  1 root root   345400 Nov  9 14:39 FastDFS_v5.05.tar.gz
drwxr-xr-x.  3 root root       18 Nov  9 15:52 file
drwxrwxr-x.  3 root root      102 Nov  9 14:31 libfastcommon-1.0.7
-rw-r--r--.  1 root root    73148 Nov  9 14:30 libfastcommonV1.0.7.tar.gz
drwxr-xr-x.  9 es   mysql     186 Nov  9 17:05 nginx-1.18.0
-rw-r--r--.  1 root root  1039530 Nov  9 17:03 nginx-1.18.0.tar.gz
drwxr-xr-x.  4 root root       30 Nov  9 15:52 storage
drwxr-xr-x.  4 root root       30 Nov  9 15:22 tracker
[root@localhost fastdfs]# cd FastDFS/
[root@localhost FastDFS]# ll
total 124
drwxr-xr-x. 3 8980 users  4096 Nov  9 14:42 client
drwxr-xr-x. 2 8980 users  4096 Nov  9 14:41 common
drwxr-xr-x. 2 8980 users   146 Dec  2  2014 conf
-rw-r--r--. 1 8980 users 35067 Dec  2  2014 COPYING-3_0.txt
-rw-r--r--. 1 8980 users  2802 Dec  2  2014 fastdfs.spec
-rw-r--r--. 1 8980 users 31386 Dec  2  2014 HISTORY
drwxr-xr-x. 2 8980 users    48 Dec  2  2014 init.d
-rw-r--r--. 1 8980 users  7755 Dec  2  2014 INSTALL
-rwxr-xr-x. 1 8980 users  5813 Dec  2  2014 make.sh
drwxr-xr-x. 2 8980 users  4096 Dec  2  2014 php_client
-rw-r--r--. 1 8980 users  2380 Dec  2  2014 README.md
-rwxr-xr-x. 1 8980 users  1768 Dec  2  2014 restart.sh
-rwxr-xr-x. 1 8980 users  1680 Dec  2  2014 stop.sh
drwxr-xr-x. 4 8980 users  4096 Nov  9 14:42 storage
drwxr-xr-x. 2 8980 users  4096 Dec  2  2014 test
drwxr-xr-x. 2 8980 users  4096 Nov  9 14:42 tracker
[root@localhost FastDFS]# cd conf/
[root@localhost conf]# ll
total 84
-rw-r--r--. 1 8980 users 23981 Dec  2  2014 anti-steal.jpg
-rw-r--r--. 1 8980 users  1461 Dec  2  2014 client.conf
-rw-r--r--. 1 8980 users   858 Dec  2  2014 http.conf
-rw-r--r--. 1 8980 users 31172 Dec  2  2014 mime.types
-rw-r--r--. 1 8980 users  7829 Dec  2  2014 storage.conf
-rw-r--r--. 1 8980 users   105 Dec  2  2014 storage_ids.conf
-rw-r--r--. 1 8980 users  7102 Dec  2  2014 tracker.conf
[root@localhost conf]# cp anti-steal.jpg http.conf mime.types /etc/fdfs/

复制完如下图所示:

【i】配置nginx,修改nginx.conf

[root@localhost fdfs]# cd /usr/local/nginx/
[root@localhost nginx]# ll
total 4
drwx------. 2 nobody root    6 Nov  9 17:07 client_body_temp
drwxr-xr-x. 2 root   root 4096 Nov  9 17:14 conf
drwx------. 2 nobody root    6 Nov  9 17:07 fastcgi_temp
drwxr-xr-x. 2 root   root   40 Nov  9 17:06 html
drwxr-xr-x. 2 root   root   41 Nov  9 17:30 logs
drwx------. 2 nobody root    6 Nov  9 17:07 proxy_temp
drwxr-xr-x. 2 root   root   36 Nov 16 16:09 sbin
drwx------. 2 nobody root    6 Nov  9 17:07 scgi_temp
drwx------. 2 nobody root    6 Nov  9 17:07 uwsgi_temp
[root@localhost nginx]# cd conf/
[root@localhost conf]# ll
total 68
-rw-r--r--. 1 root root 1077 Nov  9 17:06 fastcgi.conf
-rw-r--r--. 1 root root 1077 Nov 16 16:09 fastcgi.conf.default
-rw-r--r--. 1 root root 1007 Nov  9 17:06 fastcgi_params
-rw-r--r--. 1 root root 1007 Nov 16 16:09 fastcgi_params.default
-rw-r--r--. 1 root root 2837 Nov 16 16:09 koi-utf
-rw-r--r--. 1 root root 2223 Nov 16 16:09 koi-win
-rw-r--r--. 1 root root 5231 Nov  9 17:06 mime.types
-rw-r--r--. 1 root root 5231 Nov 16 16:09 mime.types.default
-rw-r--r--. 1 root root 2763 Nov  9 17:14 nginx.conf
-rw-r--r--. 1 root root 2656 Nov 16 16:09 nginx.conf.default
-rw-r--r--. 1 root root  636 Nov  9 17:06 scgi_params
-rw-r--r--. 1 root root  636 Nov 16 16:09 scgi_params.default
-rw-r--r--. 1 root root  664 Nov  9 17:06 uwsgi_params
-rw-r--r--. 1 root root  664 Nov 16 16:09 uwsgi_params.default
-rw-r--r--. 1 root root 3610 Nov 16 16:09 win-utf
[root@localhost conf]# vim nginx.conf

在80端口下添加fastdfs-nginx模块:

location ~/group([0-9])/M00 {ngx_fastdfs_module;
}

注意点:

  • listen 80 端口值是要与 /etc/fdfs/storage.conf 中的 http.server_port=80 (前面改成80了)相对应。如果改成其它端口,则需要统一,同时在防火墙中打开该端口。
  • location 的配置,如果有多个group则配置location ~/group([0-9])/M00 ,没有则不用配group。

【j】启动nginx

[root@localhost sbin]# ./nginx
ngx_http_fastdfs_set pid=10971

打印出如下就算配置成功:

【k】测试

重新上传一张图片:

[root@localhost /]#
[root@localhost /]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf timg.png
group1/M00/00/00/wKizhV-yOiOAUrLTAAAxXVoV3i4802.png
[root@localhost /]# 

在地址栏访问:http://192.168.179.133/group1/M00/00/00/wKizhV-yOiOAUrLTAAAxXVoV3i4802.png。

如果能成功访问到图片,说明我们的配置没有问题。

注意:

这里跟上一篇文章中介绍的直接使用nginx路由访问不同的是,这里配置 fastdfs-nginx-module 模块,可以重定向文件链接到源服务器取文件,确保不会因为同步延迟导致访问文件失败问题。

最终部署结构图(图片来源于网络):可以按照下面的结构搭建环境。

三、扩展模块执行流程

大体流程图如下:

扩展模块解析了请求的文件路径以后,到指定的Tracker Server获取组名为group1的这台机器所在的IP以及端口号,扩展模块获取了Strorage所在的IP以及端口以后,就会自动使用FastDFS的命令到指定的机器中获取文件流。

分布式文件存储FastDFS之配置Nginx模块相关推荐

  1. 分布式文件存储FastDFS介绍安装部署及相关Java代码编写

    分布式文件存储FastDFS 一.FastDFS简介 1.1 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传 ...

  2. 分布式文件存储FastDFS使用教程(下载安装使用)

    分布式文件存储FastDFS 1.FastDFS 1.1 FastDFS简介 1.1.1 FastDFS体系结构 1.1.2 上传流程 1.2 FastDFS搭建 1.2.1 安装FastDFS镜像 ...

  3. 分布式文件存储FASTDFS

    分布式文件存储FASTDFS 目录 概 述 小结 参考资料和推荐阅读 LD is tigger forever,CG are not brothers forever, throw the pot a ...

  4. (转)分布式文件存储FastDFS(四)配置fastdfs-apache-module

    http://blog.csdn.net/xingjiarong/article/details/50560605 在前边我们已经配置好了FastDFS的环境,但是此时的FastDFS还不能通过htt ...

  5. (转)分布式文件存储FastDFS(三)FastDFS配置

    http://blog.csdn.net/xingjiarong/article/details/50559768 在上一节中我们一起搭建了一个单节点的FastDFS系统,但是仅仅将系统搭建起来是远远 ...

  6. 基于SpringBoot下使用分布式文件存储FastDFS

    一.FastDFS简介 1.1 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存 ...

  7. 分布式文件存储——FastDFS

    FastDFS FastDFS 是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题. 特别适合以文件为 ...

  8. 【工具类】分布式文件存储-FastDFS

    FastDFS简介 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡 ...

  9. (转) 分布式文件存储FastDFS(一)初识FastDFS

    http://blog.csdn.net/xingjiarong/article/details/50559849 一.FastDFS简介 FastDFS是一款开源的.分布式文件系统(Distribu ...

  10. 分布式文件存储FastDFS(一)初识FastDFS

    一.FastDFS简介 FastDFS是一款开源的.分布式文件系统(Distributed File System),由淘宝开发平台部资深架构师余庆开发.作为一个分布式文件系统,它对文件进行管理,功能 ...

最新文章

  1. 去掉 Idea 中注入 Mapper 警告的方法
  2. VMware vCenter Converter Standlone迁移手册
  3. 计算机控制电缆敷设长度,计算机控制电缆ZR-DJYPVP-22-6*3*1.0电缆
  4. Stanford UFLDL教程 矢量化编程
  5. DR模式 mysqlABB读写分离
  6. 动态IP代理软件有话说:天下爬虫框架皆出Scrapy
  7. Spring全自动AOP和项目加入jar包
  8. exec族函数、system函数、popen函数、PATH
  9. 宁波大学2020计算机技术复试线,宁波大学关于公布2020年硕士研究生复试分数线的通知...
  10. 国防科技大学计算机非军籍研究生就业情况,国防科技大学无军籍,将来就业前景怎样?涨知识了...
  11. matlab 请验证三角等式,[转载]matlab
  12. python 7-24 sdut-array2-2-局部峰值 (10 分)
  13. wdlinux LAMP
  14. 视频目标跟踪算法Mean Shift和Particle Filter
  15. 通过apizza生成python接口测试代码
  16. ITSS服务管理体系建立流程(四个阶段)附:广东软件行业协会ITSS评估
  17. ehvierwer登录与不登录_微信上不去了怎么办,峰哥教你微信登录不上去的办法
  18. 46個不可不知的常識
  19. 不用运动快速有效减肥——红光光浴#大健康#红光光浴#红光#种光光学
  20. 2022-2028年中国5G 汽车产业应用市场竞争策略及未来发展潜力报告

热门文章

  1. 飞思卡尔c语言,飞思卡尔MCU的C语言编程框架
  2. 中山大学计算机学院官网万海,中山大学
  3. C++ 标准模板库STL
  4. git diff与git status
  5. 633. 平方数之和
  6. 332.重新安排行程
  7. 309.最佳买卖股票时机含冷冻期
  8. 随机过程第二章part2
  9. Normal Equation----machine learning
  10. oracle binlog同步,系统设计 | 通过Binlog来实现系统间数据同步