fastDFS分布式文件系统

项目描述:

服务器通过fastDFS相关命令将文件上传到分布式文件系统存储节点中,web服务器nginx接收并解析客户端(通常是浏览器)的请求,
在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上传的图片都有图片显示说明两者都反向代理成功

posted @ 2023-02-28 22:21  balabalahhh  阅读(342)  评论(0)    收藏  举报