1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 分布式文件存储FastDFS之配置Nginx模块

分布式文件存储FastDFS之配置Nginx模块

时间:2022-01-07 06:47:27

相关推荐

分布式文件存储FastDFS之配置Nginx模块

目录

一、概述

二、整合 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]# lltotal 1448drwxr-xr-x. 2 root root 6 Nov 9 16:05 clientdrwxr-xr-x. 10 8980 users258 Nov 9 14:42 FastDFSdrwxrwxr-x. 3 500 50047 May 4 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.gzdrwxr-xr-x. 3 root root 18 Nov 9 15:52 filedrwxrwxr-x. 3 root root102 Nov 9 14:31 libfastcommon-1.0.7-rw-r--r--. 1 root root 73148 Nov 9 14:30 libfastcommonV1.0.7.tar.gzdrwxr-xr-x. 9 es mysql186 Nov 9 17:05 nginx-1.18.0-rw-r--r--. 1 root root 1039530 Nov 9 17:03 nginx-1.18.0.tar.gzdrwxr-xr-x. 4 root root 30 Nov 9 15:52 storagedrwxr-xr-x. 4 root root 30 Nov 9 15:22 tracker[root@localhost fastdfs]# cd fastdfs-nginx-module/[root@localhost fastdfs-nginx-module]# lltotal 8-rw-rw-r--. 1 500 500 2342 May 4 HISTORY-rw-rw-r--. 1 500 500 1733 May 4 INSTALLdrwxrwxr-x. 2 500 500 109 May 4 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]# lltotal 76-rw-rw-r--. 1 500 500 33207 Aug 30 common.c-rw-rw-r--. 1 500 500 3479 Jan 3 common.h-rw-rw-r--. 1 500 500 447 Nov 4 config-rw-rw-r--. 1 500 500 3679 Mar 30 mod_fastdfs.conf-rw-rw-r--. 1 500 500 28542 May 4 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]# lltotal 1448drwxr-xr-x. 2 root root 6 Nov 9 16:05 clientdrwxr-xr-x. 10 8980 users258 Nov 9 14:42 FastDFSdrwxrwxr-x. 3 500 50047 May 4 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.gzdrwxr-xr-x. 3 root root 18 Nov 9 15:52 filedrwxrwxr-x. 3 root root102 Nov 9 14:31 libfastcommon-1.0.7-rw-r--r--. 1 root root 73148 Nov 9 14:30 libfastcommonV1.0.7.tar.gzdrwxr-xr-x. 9 es mysql186 Nov 9 17:05 nginx-1.18.0-rw-r--r--. 1 root root 1039530 Nov 9 17:03 nginx-1.18.0.tar.gzdrwxr-xr-x. 4 root root 30 Nov 9 15:52 storagedrwxr-xr-x. 4 root root 30 Nov 9 15:22 tracker[root@localhost fastdfs]# cd FastDFS/[root@localhost FastDFS]# lltotal 124drwxr-xr-x. 3 8980 users 4096 Nov 9 14:42 clientdrwxr-xr-x. 2 8980 users 4096 Nov 9 14:41 commondrwxr-xr-x. 2 8980 users 146 Dec 2 conf-rw-r--r--. 1 8980 users 35067 Dec 2 COPYING-3_0.txt-rw-r--r--. 1 8980 users 2802 Dec 2 fastdfs.spec-rw-r--r--. 1 8980 users 31386 Dec 2 HISTORYdrwxr-xr-x. 2 8980 users 48 Dec 2 init.d-rw-r--r--. 1 8980 users 7755 Dec 2 INSTALL-rwxr-xr-x. 1 8980 users 5813 Dec 2 make.shdrwxr-xr-x. 2 8980 users 4096 Dec 2 php_client-rw-r--r--. 1 8980 users 2380 Dec 2 README.md-rwxr-xr-x. 1 8980 users 1768 Dec 2 restart.sh-rwxr-xr-x. 1 8980 users 1680 Dec 2 stop.shdrwxr-xr-x. 4 8980 users 4096 Nov 9 14:42 storagedrwxr-xr-x. 2 8980 users 4096 Dec 2 testdrwxr-xr-x. 2 8980 users 4096 Nov 9 14:42 tracker[root@localhost FastDFS]# cd conf/[root@localhost conf]# lltotal 84-rw-r--r--. 1 8980 users 23981 Dec 2 anti-steal.jpg-rw-r--r--. 1 8980 users 1461 Dec 2 client.conf-rw-r--r--. 1 8980 users 858 Dec 2 http.conf-rw-r--r--. 1 8980 users 31172 Dec 2 mime.types-rw-r--r--. 1 8980 users 7829 Dec 2 storage.conf-rw-r--r--. 1 8980 users 105 Dec 2 storage_ids.conf-rw-r--r--. 1 8980 users 7102 Dec 2 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]# lltotal 4drwx------. 2 nobody root 6 Nov 9 17:07 client_body_tempdrwxr-xr-x. 2 root root 4096 Nov 9 17:14 confdrwx------. 2 nobody root 6 Nov 9 17:07 fastcgi_tempdrwxr-xr-x. 2 root root 40 Nov 9 17:06 htmldrwxr-xr-x. 2 root root 41 Nov 9 17:30 logsdrwx------. 2 nobody root 6 Nov 9 17:07 proxy_tempdrwxr-xr-x. 2 root root 36 Nov 16 16:09 sbindrwx------. 2 nobody root 6 Nov 9 17:07 scgi_tempdrwx------. 2 nobody root 6 Nov 9 17:07 uwsgi_temp[root@localhost nginx]# cd conf/[root@localhost conf]# lltotal 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]# ./nginxngx_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的命令到指定的机器中获取文件流。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。