FastDFS搭建图片服务器单实例

论坛 期权论坛 脚本     
匿名技术用户   2020-12-22 18:39   113   0

一、FastDFS官方介绍

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,Google FS以及FastDFS、mogileFS、 HDFS、TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。 

1、FastDFS架构图

FastDFS架构图

1)Tracker cluster中各个tracker server相互独立,不进行相互通信。
2)Storage cluster中各个storage组(Volume1,Volume2...)相互独立,不进行相互通信,也就是说各个组之间保存的数据是不相同的。但是各个组中的storage server之间是属于互相备份的关系,也就是说storage server之间保存相同的数据。
3)每个storage server会启动一个单独的线程主动向Tracker cluster中每个tracker server报告其状态信息,包括磁盘使用情况,文件同步情况及文件上传下载次数统计等信息。

2、文件上传和下载的时序图

这里写图片描述

1)Client通过Tracker server将文件上传到Storage server。
2)Tracker server向Client返回一台可用的Storage server的IP地址和端口号。
3)Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件上传。
4)上传完成,Storage server返回Client一个文件ID,文件上传结束。

文件下载时序图

1)Client通过Tracker server下载指定Storage组中某个Storage server上的某个文件(文件名包括Storage组名称)。
2)Tracker server向Client返回一台可用的Storage server的IP地址和端口号。
3)Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件下载。

二、安装并配置FastDFS

1、运行环境及相关软件

CentOS 7.4
FastDFS_v5.08.tar.gz
nginx-1.8.1.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
libfastcommon

2、服务器规划

服务器名称 IP地址和端口 备注
fastdfs-tracker *:22122 跟踪服务器/调度服务器
fastdfs-storage *:23000 存储服务器

3、centOS安装GCC

首先先执行  whereis gcc 查看系统是否安装了GCC

已安装:
这里写图片描述

未安装:
这里写图片描述

如果未安装,执行Centos系统下载gcc命令:yum install gcc 
安装完后执行上面的查询命令

4、安装FastDFS

1)首先创建工具目录(非必须)

创建目录:mkdir -p /home/oldcat/tools
进入目录:cd /home/oldcat/tools

2) 下载并安装FastDFS依赖包libfastcommon

下载: wget https://codeload.github.com/happyfish100/libfastcommon/zip/master
解压: unzip master
进入目录: cd libfastcommon-master/

安装: ./make.sh && ./make.sh install

3)下载并安装FastDFS

下载压缩包:wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.08/FastDFS_v5.08.tar.gz
解压: tar xf FastDFS_v5.08.tar.gz
进入目录:cd FastDFS
安装: ./make.sh && ./make.sh install

采用默认方式安装后查看文件及目录:

1)服务脚本:ll /etc/init.d/ |grep fdfs

这里写图片描述

2)样例配置文件 :ll /etc/fdfs/

这里写图片描述

3)命令行工具:ll /usr/bin|grep fdfs

这里写图片描述

注意:虽然FastDFS区分tracker和storage服务器,但是安装的软件及步骤均相同,只是不同的配置文件而已,因此以上安装适用tracker server和storage server

5、配置跟踪服务器(tracker server)

1)拷贝tracker server和client端样例配置文件并重命名

复制tracker server配置文件:cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

这里写图片描述
复制client端配置文件: cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
这里写图片描述

2)编辑tracker server配置文件tracviewker.conf,需要修改内容如下:

    disabled=false(默认为false,表示是否无效)
    port=22122(默认为22122)
    base_path=/data/file/fastdfs/tracker

3)编辑client端的配置文件client.conf,需要修改内容如下

    base_path=/data/file/fastdfs/tracker
    tracker_server=119.29.14.88:22122

4)创建tracker server数据目录

mkdir -p /data/file/fastdfs/tracker

5)测试启动tracker server,启动成功会自动在/data/file/fastdfs/tracker目录新建data和logs目录

输入启动命令 /etc/init.d/fdfs_trackerd start 显示如图 启动成功

这里写图片描述

输入端口查询命令 ss -lntup|grep 22122
查看22122端口信息和创建的data、logs

这里写图片描述

6)关闭tracker server

输入停止命令:/etc/init.d/fdfs_trackerd stop

这里写图片描述

6、配置存储服务器(storage server)

1)拷贝storage server样例配置文件并重命名

拷贝命令:cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

2)编辑storage server配置文件storage.conf,需要修改内容如下:

    disabled=false(默认为false,表示是否无效)
    port=23000(默认为23000)
    base_path=/data/file/fastdfs/storage
    tracker_server=119.29.14.88:22122
    store_path0=/data/file/fastdfs/storage    http.server_port=8888(默认为8888,nginx中配置的监听端口那之一致)

3)创建storage server数据目录

这里写图片描述

4)测试启动storage server,启动成功会自动在/data/file/fastdfs/tracker目录新建data和logs目录(启动storage server的前提是tracker server必须事先已启动)

启动tracker server:/etc/init.d/fdfs_trackerd start
这里写图片描述
查看
这里写图片描述
启动storage server:/etc/init.d/fdfs_storaged start
这里写图片描述
查看
这里写图片描述
查看storage目录下创建的data和logs
这里写图片描述

6、文件上传测试

执行如下上传命令:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /data/uploadfile/timg1.jpg
这里写图片描述
返回文件ID即说明文件已经上传成功

四、存储服务器(storage server)安装并配置nginx

1)下载并安装fastdfs-nginx-module模块

注:FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设Tracker服务器将文件上传到了192.168.4.125,上传成功后文件ID已经返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储192.168.4.126,在文件还没有复制完成的情况下,客户端如果用这个文件ID在192.168.4.126上取文件,就会出现文件无法访问的错误。而fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。

执行下载命令:wget http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
解压:tar xf fastdfs-nginx-module_v1.16.tar.gz 
进入src目录下:cd fastdfs-nginx-module/src/
编辑config文件:vim config
执行如下命令进行批量替换并保存退出:
:%s+/usr/local/+/usr/+g

2)拷贝fastdfs-nginx-module模块中配置文件到/etc/fdfs目录中并编辑

复制fastdfs-nginx-module模块中配置文件: cp /home/oldcat/tools/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
修改配置文件: vi /etc/fdfs/mod_fastdfs.conf
修改内容如下:
    connect_timeout=10
    base_path=/tmp(默认为/tmp)
    tracker_server=119.29.14.88:22122
    storage_server_port=23000(默认配置为23000)
    url_have_group_name = true
    store_path0=/data/file/fastdfs/storage
    group_name=group1(默认配置为group1)

3)安装nginx依赖库

yum install -y pcre-devel zlib-devel

4)下载并安装nginx

下载nginx压缩包: wget http://nginx.org/download/nginx-1.8.1.tar.gz
解压: tar xf nginx-1.8.1.tar.gz 
进入解压目录: cd nginx-1.8.1
执行配置: ./configure --prefix=/application/nginx/ --add-module=../fastdfs-nginx-module/src/
执行安装: make && make install

5)拷贝FastDFS中的部分配置文件到/etc/fdfs目录中

cp /home/oldcat/tools/FastDFS/conf/http.conf /etc/fdfs/
cp /home/oldcat/tools/FastDFS/conf/mime.types /etc/fdfs/

6)配置nginx,如下所示:

ln -s /data/file/fastdfs/storage/data//data/file/fastdfs/storage/data/M00 
编辑配置文件: vi /application/nginx/conf/nginx.conf
    user  root;    
    worker_processes  1;
    events {
       worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       8888;
            server_name  localhost;
            location ~/group[0-9]/ {
                ngx_fastdfs_module;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            root   html;
            }
        }
    }
说明: 
a、"user root"是解决下载操作时报404的问题
b、8888端口号与/etc/fdfs/storage.conf中的http.server_port=8888相对应
c、storage对应有多个group的情况下,访问路径带group名称,例如:/group1/M00/00/00/**,对应nginx配置:
location ~/group[0-9]/ {
       ngx_fastdfs_module;
 }

7)拷贝nginx服务到/etc/init.d/目录下并启动

拷贝命令:cp /application/nginx/sbin/nginx /etc/init.d/
启动nginx: /etc/init.d/nginx

8)通过浏览器访问之前已经上传的文件

这里写图片描述
浏览器可以成功访问到上传的图片,说明使用FastDFS搭建的图片服务器成功完成!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP