fastDFS分布式文件系统
项目描述:
项目环境:
Centos7+ Ubuntu18 + fastdfs + Nginx + gcc
注:centos和ubuntu都有部署fastdfs和nginx,但是只有centos启动了追踪器,所以两者的追踪器配置文件都应该以centos的为标准
项目步骤:
1.规划整个项目的架构及流程,了解fastDFS分布式文件系统
项目架构图:
 
补充:
fastdfs分布式系统的框架图:

fastDFS框架中的三个角色:
- 追踪器(Tracker) - 管理者 - 守护进程
管理存储节点
- 存储节点(Storage) - 守护进程
存储节点是有多个的
- 客户端(Client)
文件上传
文件下载
fastDFS三个角色之间的关系:

实现:

2.fastdfs安装、配置文件的设置 和 启动
- fastdfs安装:安装包 fdfs,安装过程如下(只列了centos的过程)
$mkdir package // 在~目录下创建一个package目录 $cd package // 进入package目录下 $mkdir fdfs // 在package目录下创建fdfs目录 /* ------------------------------------------- */ 把安装包里的压缩包上传到fdfs目录下(用的Xftp) /* ------------------------------------------- */ 1.libfastcommon-1.36.zip(fastdfs的基础库包) $unzip libfastcommon-1.36.zip // 解压缩 $cd libfastcommon-master // 进入lib...目录 $./make.sh $sudo ./make.sh install 2.fastdfs-5.10.tar.gz $tar zxvf fastdfs-5.10.tar.gz // 解压缩 $cd fastdfs-5.10 // 进入fastdfs-5.10目录 $./make.sh $sudo ./make.sh install
- fdfs配置文件
配置文件默认位置:/etc/fdfs $cd /etc/fdfs $sudo cp tracker.conf.sample tracker.conf // 将 tracker.conf.sample 复制一份在/etc/fdfs目录下,同时将拷贝的更名为tracker.conf $sudo vim tracker.conf //修改配置 一些配置项如下:(其他的配置项可自行根据需要修改) 1.tracker配置文件 #将追踪器和部署的主机IP地址进行绑定,也可以不指定 #如果不指定,会自动绑定当前主机IP bind_addr=192.168.192.131 #追踪器监听的端口 port=22122 #追踪器存储日志信息的目录(必须是一个存在的目录!) #下面是示例,记得自己建一个目录并且修改配置文件中的路径 base_path=/home/yuqing/fastdfs 2.storage配置文件 #当前存储节点和所对应的主机进行IP地址的绑定,如果不写,由fastdfs自动绑定 bind_addr= #存储节点绑定的端口 port=23000 #存储节点写log日志的路径(记得自行修改配置) base_path=/home/yuqing/fastdfs #存储节点提供的存储文件的路径个数(有多个的话记得修改配置文件) stare_path_count=1 #具体的存储路径 store_path0=/home/yuqing/fastdfs #如果有多个,就 #store_path1=/home/yuqing/fastdfs1 #store_path2=/home/yuqing/fastdfs2 #...... #依此类推 #追踪器的地址信息 tracker_server=192.168.192.131:22122 #如果不止一个追踪器,就 #tracker_server=192.168.192.132:22122 #...... 3.客户端配置文件 #客户端写log日志的目录 #该目录必须存在! #当前用户对于该路径中的文件有读写权限 #指定的路径属于root base_path=/home/yuqing/fastdfs #要连接的追踪器的地址信息 tracker_server=192.168.247.135:22122 #tracker_server=192.168.247.136:22122 #......
- 启动(追踪器、存储节点和客户端不一定是同一台计算机!只是做这个项目简单起见放在了同一台主机上)
启动程序在 /usr/bin/fdfs_* //可通过 ls ls /usr/bin/fdfs_* 查看 1.首先启动追踪器 #启动 fdfs_tracked /etc/fdfs/tracker.conf(追踪器配置文件) #关闭 fdfs_tracked /etc/fdfs/tracker.conf stop #重启 fdfs_tracked /etc/fdfs/tracker.conf restart 2.其次是存储节点 #启动 fdfs_storaged /etc/fdfs/storage.conf(存储节点配置文件) #关闭 fdfs_storaged /etc/fdfs/storage.conf stop #重启 fdfs_storaged /etc/fdfs/storage.conf restart 3.最后是客户端(传文件或者取文件,有用到的时候启动,可以先不启动) #上传 fdfs_upload_file /etc/fdfs/client.conf(客户端配置文件) xxx(要上传的文件) #成功上传后会得到结果字符串fileID:group1/M00/00/00/...... #下载 fdfs_download_file /etc/fdfs/client.conf group......(上传成功后得到的字符串fileID)
可以通过 $ps aux | grep fdfs 判断有没有启动成功,如下图,是启动成功了的

3.服务器端Nginx安装及配置(nginx fastdfs模块)
问题:客户端发送请求使用的协议是HTTP协议,fastDFS不能解析HTTP协议
解决:Nginx能解析HTTP协议,所以可以在Nginx中安装fastDFS的插件
安装Nginx 在网上找教程就可以,注意版本,版本过高的话跟fastdfs搭配使用会有些问题,我下载的是nginx-1.10.3.tar.gz
one tip:Nginx快速启动的方式 ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
Nginx和fastDFS的整合 1.在fastDFS存储节点上安装Nginx 2.安装fastDFS插件(插件安装包fastdfs-nginx-module_v1.16.tar.gz) 将插件安装包下载到~/package/nginx目录下,解压缩 $cd fastdfs-nginx-module $cd src $pwd // 得到绝对路径/home/lxq/package/nginx/fastdfs-nginx-module/src $cd /home/lxq/package/nginx/nginx-1.10.3 // 进入nginx源码安装目录 $sudo ./configure --add-module=/home/lxq/package/nginx/fastdfs-nginx-module/src $sudo vim objs/Makefile //进入Makefile文件,在ALL_INCS处做如下两处修改(就是把local去了) -I /usr/local/include/fastdfs \ --> -I /usr/include/fastdfs \ -I /usr/local/include/fastcommon/ \ --> -I /usr/include/fastcommon/ \ $make $sudo make install $ps aux | grep nginx //可以发现nginx没有worker进程(可以去nginx的logs文件查看原因),说明它没办法工作,所以接下来我们还要配置mod_fastdfs.conf文件
$cd home/lxq/package/nginx/fastdfs-nginx-module/src $sudo cp mod_fastdfs.conf /etc/fdfs // 将文件拷贝到/etc/fdfs目录下 $cd /etc/fdfs $sudo vim mod_fastdfs.conf //参照存储节点的storage.conf进行修改,就不赘述了 $cd /home/lxq/package/fdfs/fastdfs-5.10/conf // $sudo cp http.conf /etc/fdfs $cd /home/lxq/package/nginx/nginx-1.10.3/conf // $sudo cp mime.types /etc/fdfs $sudo nginx -s stop $sudo nginx
nginx配置文件修改,如图(http模块的server里):
  
配置之后重启nginx
4.在本地windows里安装一个nginx实现反向代理和负载均衡
- nginx安装(解压到一个纯英文目录即可):nginx1.12.0
- nginx配置(.../nginx-1.12.0/conf/nginx.conf里配置):

5.服务器端通过fastDFS文件系统上传文件至存储节点
centos:
 
ubuntu:
 
6.客户端(浏览器)通过访问本地Windows的IP请求文件,检验反向代理和负载均衡是否成功
- 首先,访问Centos上传的图片
第一次:

刷新一遍:

再次刷新:

(多刷新几次都是按这个比例来的)
符合前面负载均衡的2:1
ps:其实负载均衡应该适用在fildID相等的情况(如果不是fastDFS这种,而是其他文件系统 就是在多台服务器部署有相同文件,然后当网络上对这个文件有大量的访问时,可以用负载均衡减小一部分服务器的压力)。我这里并没有出现这种情况,只是为了出现象
- 访问ubuntu上传的图片
第一次:

刷新一次:

(多刷新几次都是按这个比例来的)
分别访问Centos和Ubuntu上传的图片都有图片显示说明两者都反向代理成功
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号