FastFDS简介以及配置

FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制, 充分考了冗余份、负载均衡、线容等机制,并注重高可用、高性能等指,使用 FastDFS 很容易搭建一套高性能的文件服器集群提供文件上、下等服

FastDFS 架构包括 Tracker server Storage server。客户端请求 Tracker server 进行文 件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。

Tracker server 作用是负载均衡和调度,通过 Tracker server 在文件上传时可以根据一些 策略找到 Storage server 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务 器。

Storage server 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上, Storageserver 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将 storage 称为存储服务器。

FastFDS简介以及配置

Tracker: 可以实现集群,每个tracker的节点和地位平等。主要是收集Storage集群的状态。

Storage:保存文件。 Storage可以分为多个组,每个组之间保存的文件是不一样的。组内部可以存在多个成员,组成员内部保存的内容是一样的。组成员的地位一致,没有从属之分。 

上存过程:

FastFDS简介以及配置

首先 Tracker会定时的检查StorageServer的状态。

当Client发起上传请求的时候,Tracker会查询StorageServer可用的存储。然后给客户端返回StorageServer的ip和端口号。

Client收到Tracker返回的信息之后,可以直接访问StorageServer,把文件上传到对应的storage。

StorageServer收到Client的上传文件,会生成一个文件的唯一标识 file_id,并且把内容写入到磁盘,最后把 file_id 返回给Client。

下载:

FastFDS简介以及配置

Client向 TrackerServer 发起下载的请求,然后Tracker根据请求查询storageServer可用的storage,并且给Client返回相应的 ip和端口号。

Client收到端口号之后,再次带着file_id 直接向StorageServer请求资源。

storageServer根据file_id 找到对应的资源,并且返回给客户端。

接下来说一下我的部署过程。

首先准备好两个安装包,网上基本可以搜索到,如果找不到的话,可以给我留言。

libfastcommon-master.zip  (依赖包)

fastdfs-master.zip

1  安装FastDFS的依赖包。

    1.1  解压libfastcommon-master.zip,并且进入libfastcommon-master根目录

    1.2  执行  ./make.sh

    1.3  执行  sudo  ./make.sh  install

2  安装FastDFS

    2.1  解压fastdfs-master.zip并且进入目录

    2.2  执行  ./make.sh

    2.3  执行  sudo  ./make.sh  install

3  配置Tracker

    3.1  复制配置文件,并且改名字

        sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf 

    3.2  在/home/python/目录中创建目录 fastdfs/tracker     

        mkdir –p /home/python/fastdfs/tracker

    3.3 编辑/etc/fdfs/tracker.conf配置文件   

        sudo vim /etc/fdfs/tracker.conf

        修改 base_path=/home/python/fastdfs/tracker

4  配置存储服务器Storage

    4.1  复制配置文件,并且重新命名

            sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

    4.2  在/home/python/fastdfs/ 目录中创建目录 storage

             mkdir –p /home/python/fastdfs/storage

    4.3  编辑/etc/fdfs/storage.conf配置文件  sudo vim /etc/fdfs/storage.conf

          修改内容:

          base_path=/home/python/fastdfs/storage

          store_path0=/home/python/fastdfs/storage

          tracker_server=自己ubuntu虚拟机的ip地址:22122

5  启动Tracker 和 Storage

        sudo service fdfs_trackerd start

       sudo service fdfs_storaged start

6  修改 客户端配置文件client.conf

    6.1   sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

    6.2   编辑/etc/fdfs/client.conf配置文件  sudo vim /etc/fdfs/client.conf

        修改内容:   

        base_path=/home/python/fastdfs/tracker

        tracker_server=自己ubuntu虚拟机的ip地址:22122

7  上传文件测试

    fdfs_upload_file   /etc/fdfs/client.conf   要上传的图片文件

    如果返回类似group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg的文件id则说明文件上传成功

FastFDS简介以及配置

 

至此,FastDFS的安装与配置基本完成。

但是通常我们会把FastDFS 和 Nginx 搭配起来一起使用。所以我们还需要安装并且部署Nginx。

需要下载的文件:

nginx-1.8.1.tar.gz

fastdfs-nginx-module-master.zip

把以上两个文件解压,然后进入到nginx-1.8.1 目录中。

执行:

sudo  ./configure  --prefix=/usr/local/nginx/  --add-module=fastdfs-nginx-module-master解压后的目录的绝对路径/src

FastFDS简介以及配置

 继续执行下面命令:

    sudo ./make

    sudo ./make install

 

复制配置文件到 etc/fdfs 目录

sudo  cp  fastdfs-nginx-module-master解压后的目录中src下的mod_fastdfs.conf     /etc/fdfs/mod_fastdfs.conf

 

修改配置信息:

sudo vim /etc/fdfs/mod_fastdfs.conf

修改如下:

        connect_timeout=10

        tracker_server=自己ubuntu虚拟机的ip地址:22122

        url_have_group_name=true

        store_path0=/home/python/fastdfs/storage

 

继续执行命令:

    sudo cp 解压缩的fastdfs-master目录下的conf目录中的http.conf  /etc/fdfs/http.conf

    sudo cp 解压缩的fastdfs-master目录下的conf目录中的mime.types /etc/fdfs/mime.types

 

修改nginx配置文件

    sudo vim /usr/local/nginx/conf/nginx.conf

在http部分中添加配置信息如下:

server {

            listen       8888;

            server_name  localhost;

            location ~/group[0-9]/ {  # 相当于django中的url

                ngx_fastdfs_module;

            }

            error_page   500 502 503 504  /50x.html;

            location = /50x.html {

            root   html;

            }

        }

(这里有个坑: 在后面启动nginx进行访问FastDFS上的内容的时候,如果出现能够访问Nginx的欢迎页面,但是不能够访问FastDFS上存储的文件,那么,需要在 nginx.conf 的开头添加一个 user  root ;)

 

保存配置文件,然后启动nginx

    sudo /usr/local/nginx/sbin/nginx

到这一步,Nginx的配置也完成了。

这时候可以测试一下FastDFS + Nginx是否能够配合使用。

先上传一张图片到Storage,然后通过Nginx访问。

FastFDS简介以及配置

返回的group1就是图片在Storage上的地址信息,通过如下地址访问,如果能够显示图片,那么配置就成功了。

FastFDS简介以及配置

以上是我对于FastDFS + Nginx 配置的理解以及部署,如果有什么说的不对的地方,欢迎大家指正。