zoukankan      html  css  js  c++  java
  • fastDFS 安装 配置 使用

     

    fastDFS 安装 配置 使用

    关于安装

    本文采用的是源码的安装方式,其他安装方式请自行百度

    简单介绍

    1、背景 
    FastDFS是一款开源的、分布式文件系统(Distributed File System),由淘宝开发平台部资深架构师余庆开发。该开源项目的主页是 http://code.google.com/p/fastdfs 。可以通过fastdfs.sourceforge.net 下载。FastDFS论坛是 http://www.csource.org ,目前是指向 ChinaUnix 开源项目孵化平台的一个板块 FastDFS,网址为 bbs.chinaunix.net/forum-240-1.html 。 
    2、上传流程 
    我们可以通过 FastDFS 对文件的上传过程,来初步了解 FastDFS 的基本架构。首先客户端 client 发起对 FastDFS 的文件传输动作,是通过连接到某一台 Tracker Server 的指定端口来实现的,Tracker Server 根据目前已掌握的信息,来决定选择哪一台 Storage Server ,然后将这个Storage Server 的地址等信息返回给 client,然后 client 再通过这些信息连接到这台 Storage Server,将要上传的文件传送到给 Storage Server上。 
    3、架构简析 
    以上这段粗糙简单的描述,基本理清了 FastDFS 的上传过程。我们可以知道,FastDFS 是包括一组 Tracker Server 和 Storage Server 的。Tracker Server 与 Storage Server 之间不直接通信,其基本的信息由配置文件在系统启动加载时获知。多台 Tracker Server 之间保证了 Tracker 的分布式,Tracker Server 之间是对等的,防止了单点故障。 Storage Server 是分成多个 Group,每个 Group 中的Storage 都是互相备份的,也就是说,如果 Group1 有 Storage1、Storage2、Storage3,其容量分别是100GB、100GB、100GB,那么 Group1 的存储能力是 100GB,而不是 300GB,这就是互相备份的意思。进一步说,整个 Group 的存储能力由该组中该储能力最小的 Storage 决定。多个 Group 之间的存储方式,可以采用 round robin(轮训)、load balanced(负载均衡)或指定 Group 的方式。另一点相对于MS(Master-Slave)模式的优势,就是 Tracker Server 与 Master 是决然不同的,不仅 master 有上面可能提到的单点故障问题,而且 client 与 master 之间可能会出现瓶颈。但 FastDFS 架构中,Tracker Server 不会称为系统瓶颈,数据最终是与一个 available 的 Storage Server 进行传输的。

      1. 首先下载相关的包内容 
        • FastDFS_v4.06.tar.gz 最新的FastDFS包
        • fastdfs-nginx-module_v1.15.tar.gz ngingx先关模块
        • fastdfs_client_java_v1.24.tar.gz进行请求的java代码
      2. 解压安装

        • 首先需要修改libevent 
          下载 http://monkey.org/~provos/libevent/ 中的libevent1.4.14b-stable

          rpm -e --nodepes `rpm -qa | grep libevent
          cd libevent1.4.14b
          ./configure --prefix=/usr
          make clean
          make
          make install
        • 然后进入FastDFS进行编译

          ./make.sh  
          ./make.sh install
        • 安装完成
      3. 开始配置 
        查看/etc/fdfs/将会有多个配置文件,下面开始配置

        • 配置Tracker(tracker.conf,配置中默认端口为22122)

          base_path=/home/yuqing/fastdfs -> base_path=/etc/fastdfs_tracker#可以自己指定目录位置,但目录必须存在,用于存储日志及storage server等信息,否则tracker server无法启动
          http.server_port=8080 -> http.server_port=8090#改成你想要的http端口,实际上要跟后面的nginx端口相同,将来http下载文件的端口就是他了

          配置完成后启动即可

          fdfs_trackerd  /etc/fdfs/tracker.conf 
        • 配置Storage(storage.conf,配置中默认端口为23000)

          base_path=/home/yuqing/fastdfs -> /home/soar/fastdfs_storge #可以自定义,但必须存在此目录,用于存储storage相关的log、group内的相关信息
          store_path0=/home/yuqing/fastdfs -> store_path0=/home/soar/fastdfs_storge #文件的存储位置,在一台storage server上可以指定多个存储位置
          group_name=group1 #这个组的名称
          tracker_server=192.168.209.121:22122 -> tracker_server=172.20.8.71:22122 #修改成tracker server的IP和端口信息

          然后启动即可

          fdfs_storaged /etc/fdfs/storage.conf  
        • 上传测试(配置Client,client.conf)

          base_path=/home/yuqing/fastdfs-> base_path=/data/fastdfs_tracker  
          tracker_server=192.168.209.121:22122 -> tracker_server=172.20.8.71:22122
          http.tracker_server_port=8080 ->http.tracker_server_port=8090

          然后测试上传

          fdfs_test /etc/fdfs/client.conf upload a.txt 

        可以发现已经上传,并且在日志中的目录中可以看到内容,但是还没有完成,我们还需要配置nginx来进行文件访问

      4. 集成nginx 
        nginx的编译安装请见nginx文档,只需要添加--add-module=/home/songzj/myserver/fastdfs-nginx-module/src/ 制定fastdfs的nginx模块就行,编译安装完成后修改nginx.conf

        location /group1/M00{  
        alias /data/fastdfs_storge/data;
        ngx_fastdfs_module;
        }

        然后进行软绑定

        ln -s /data/fastdfs_storge/data /data/fastdfs_storge/data/M00  

        然后将fastdfs-nginx-module拷贝cp mod_fastdfs.conf /etc/fdfs/ 
        再然后配置刚才拷贝的文件

        tracker_server=172.20.8.71:22122 
        url_have_group_name = true
        store_path0=/data/fastdfs_storge
        group_count = 1
        [group1]
        group_name=group1
        storage_server_port=23000
        store_path_count=1
        store_path0=/data/fastdfs_storge

        在测试就能下载下来 
        然后上传下载下来访问就行 
        java代码请看我们的后台

  • 相关阅读:
    target runtime apache v6.0 not defined解决
    java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
    The valid characters are defined in RFC 7230 and RFC 3986问题
    invalid END header解决方法
    You have more than one version of ‘org.apache.commons.logging.Log’ visible, which is not allowed问题解决
    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    在eclipse中import java web项目时遇到的一些问题并将该项目通过tomcat发布
    java byte转string 涉及到字节流中有中文
    spring+mybatis框架搭建时遇到Mapped Statements collection does not contain value for...的错误
    试试看读一下Zepto源码
  • 原文地址:https://www.cnblogs.com/owenma/p/5915345.html
Copyright © 2011-2022 走看看