FastDFS分布式文件系统

一.FastDFS:

  是一个分布式文件系统,具有文件存储,文件同步,文件访问解决了大量文件存储问题

二.FastDFS:架构

     Client:
  客户端
  Tracker:
  tracker是一个追踪服务器,它时刻的关注着Storage服务器,它是storage和client的桥梁  
  Storage:
  文件存储服务器,用来存放文件的

  工作流程:

         

   <1>  单机版:

      1.单机版的配置:

           由于FastDFS的安装解压后,需要编译后才能安装(c语言书写的)所以我们需要依赖   gcc

         a: yum install gcc-c++ perl-devel pcre-devel openssl-devel zlib-devel wget        //该依赖是用来编译C语言写的程序

         由于FastDFS编译完后,需要make install 进行安装,在安装的过程中他需要依赖 libfastcommon

         b: wget https://github.com/happyfish100/libfastcommon/archive/V1.0.35.tar.gz 

         开始下载FastDFS 文件

         c: wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz   // 最后用5.11版本  后面跟nginx搭建

          以上的啊a,b,c的操作都是准备工作    

       现在我们将分别解压下载后的 V1.0.35.tar.gz 和 V5.11.tar.gz

         d: tar -zxvf   V1.0.35.tar.gz  解压   进入解压后的文件 cd libfastcommon-1.0.35/   执行 ./make.sh 完成 编译    执行./make.sh install完成安装

            e:tar -zxvf   V5.11.tar.gz  解压   进入解压后的文件 cd fastdfs-5.10/   执行 ./make.sh 完成 编译    执行./make.sh install完成安装  

                 以上的d,e操作完成了FastDFS的安装,接下来我们看看 文件的安装位置在哪  

         安装完了,FastDFS分布式文件系统将会分为 配置文件 启动脚本  相关命令   

                             配置文件-->存放在  /etc/fdfs/  目录下

               这里我们需要将里面的client.conf.sample,storage.conf.sample和tracker.conf.sample这三个配置文件

               通过执行 cp 命令(cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf ) 来文件 重命名 除掉.sample 比喻结果 client.conf   这三个文件

               很重要他将是我们的启动文件 

        启动脚本-->存放在 /etc/init.d/  目录下

              /etc/init.d/fdfs_tracker   start   //启动

        相关命令-->存放在 /usr/bin 目录下  都是一fdfs_开头的   这些命令是正对一些文件操作的 比喻上传 下载 删除

      到了这一步了,先别急,我们首先要创建一个文件作为 FastDFS 运行时产生的数据存储位置

               执行  mkdir -p /data/fastdfs/{tracker,storage/store}  命令   /data/fastdfs/storage/store 是存放文件的目录

      最后一步配置了

        进入我们的配置文件  打开tracker.conf文件 修改他的 base_path=/data/fastdfs/tracker   保存退出

        打开storage.conf (配置存储服务器)

                 vi /etc/fdfs/storage.conf

                 base_path=/data/fastdfs/storage

                 store_path0=/data/fastdfs/storage/store/

                 group_name=group2

                 tracker_server=192.168.128.141:22122            //这个追踪服务器他的 ip:port 指向追踪器服务器的 可以配置多个

        配置客户端配置器

                vi /etc/fdfs/client.conf
                base_path=/tmp
                tracker_server=192.168.128.141.22122            //这个追踪服务器他的 ip:port 指向追踪器服务器的 可以配置多个

  <2> 集群版的搭建:

        集群版的搭建很容易:只需要在单机版的搭建的最后一步的文件配置上 配置多个tracker 追踪服务就ok        

  总结流程执行流程:

      client接受请求去找tracker追踪器,这个tracker追踪器他监控着多个storage文件存储服务器(从storage.conf文件中可以知道那个文件存储服务器是由XXX追踪器管理的,但是文件服务器也能搭建集群,就是说storage存储服务器交给多个tracker他去管理,而怎么知道有哪些tracker追踪器可以从client客户端知晓。最终的一个意思就是FastDFS的集群搭建,从追踪器开始搭建,3个追踪器,6个存储服务器,存储服务器分为三组每一组两个存储服务器(他们之能过自动的完成备份),过后以组来划分每一组都拥有3个追踪器达到的效果是高性能,高并发高可用。client客户端是用来分配调用的是哪一个追踪器)

三.nginx来整合FastDFS


    a. 不用nginx时出现的问题:
       1.FastDFS的HTTP服务较为简单,无法提供负载均衡等高性能的服务

       2.同卷之间的文件备份具有延迟,如果在这个时间段上client进行了访问就会出现问题 

       3.当访问文件的时候IP地址时刻在更换

    b. 用nginx的好处:

       解决上面的问题,nginx作为反向代理屏蔽了IP地址得到差异,它拥有高性能的负载均衡,还有一个叫着FastDFS模块nginx他解决了文件备份延迟导致的错误

    重定向到源服务器去取文件

    c. 搭建Nginx

      1.下载

        yum install git

                           # fastdfs 需 >=5.11

             git clone https://github.com/happyfish100/fastdfs.git
        ./make.sh clean
        ./make.sh && ./make.sh install
        # fastdfs模块依赖
        https://github.com/happyfish100/fastdfs-nginx-module.git
        # nginx
        wget http://nginx.org/download/nginx-1.11.1.tar.gz

      2.安装

        tar -zxvf nginx-1.11.1.tar.gz

        cd nginx-1.11.1
        # nginx和fastdfs模块联合编译
        ./configure --add-module=/root/fastdfs-nginx-module/src/ --prefix=/usr/local/nginx
        # 安装nginx
        make && make install
        # 拷贝mod_fastdfs.conf 到/etc/fdfs目录下
        cp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
        # 拷贝fastdfs-5.10/conf下anti-steal.jpg 、http.conf mime.types 文件
        cd /root/fastdfs/conf/
        cp http.conf mime.types anti-steal.jpg /etc/fdfs/

      3.配置

        # 修改nginx.conf

        location ~/group([0-2])/M00 {

        root /data/fastdfs/storage/store;
        ngx_fastdfs_module;
        }
        # 修改/etc/fdfs/mod_fastdfs.conf配置文件
        tracker_server=192.168.128.141:22122
        url_have_group_name = true
        group_name=group1
        store_path0=/data/fastdfs/storage/store

    4. 启动nginx

        cd /usr/local/nginx/sbin
        ./nginx -t
        ./nginx -c /usr/local/nginx/conf/nginx.conf

    以上几步就完成了nginx与FastDFS的搭建,可以通过HTTP去访问文件夹,但是在访问的时候出现了,时刻的需要更换IP地址,接下来搭建一个nginx的方向代理服务

                            

    upstream fdfs_group1 {

      server 192.168.128.137:80 weight=1 max_fails=2 fail_timeout=30s;

      server 192.168.128.151:80 weight=1 max_fails=2 fail_timeout=30s;

      }

    upstream fdfs_group2 {

      server 192.168.128.150:80 weight=1 max_fails=2 fail_timeout=30s;

      server 192.168.128.152:80 weight=1 max_fails=2 fail_timeout=30s;

      }

原文地址:https://www.cnblogs.com/youer66/p/youer.html