FastDFS分布式文件系统简介及单机版安装步骤详解

来源:互联网 发布:惠普打印机网络共享 编辑:程序博客网 时间:2024/06/05 19:52

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储,文件同步,文件访问(文件上传,文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站,视频网站等等。FastDFS为互联网量身定制,充分考虑了冗余备份,负载均衡,线性扩容等机制,并注重高可用,高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传,下载等服务。FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用,存储节点存储文件,完成文件管理的所有功能。

1.安装环境装备

跟踪服务器:192.168.29.128存储服务器:192.168.29.129服务器环境:Centos7数据目录:/opt/fastDFS/fastDFSDatadir

2.跟踪服务器和存储服务器均执行如下操作

2.1 编译安装所需依赖包

# yum install make cmake gcc gcc-c++

2.2 解压libfastcommon-master.zip(需提前上传或下载libfastcommon-master.zip到/usr/local/src目录)

# cd /usr/local/src/# unzip libfastcommon-master.zip# cd libfastcommon-master

解压libfastcommon-master.zip

2.3 编译安装

# ./make.sh# ./make.sh installlibfastcommon 默认安装到了/usr/lib64/libfastcommon.so/usr/lib64/libfdfsclient.so

2.4 因为 FastDFS 主程序设置的lib目录是/usr/local/lib,所以需要创建软链接

# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so# ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so# ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

2.5 解压FastDFS(需提前上传或下载FastDFS_v5.05.tar.gz到/opt/fastDFS目录下)

# cd /opt/fastDFS# tar -zxvf FastDFS_v5.05.tar.gz# cd FastDFS

解压FastDFS

2.6 编译安装

# ./make.sh# ./make.sh install采用默认安装的方式安装,安装后的相应文件与目录:A.服务脚本在:/etc/init.d/fdfs_storaged/etc/init.d/fdfs_trackerB.配置文件在(样例配置文件)/etc/fdfs/client.conf.sample/etc/fdfs/storage.conf.sample/etc/fdfs/tracker.conf.sampleC.命令工具在/usr/bin/目录下的:fdfs_appender_testfdfs_appender_test1fdfs_append_filefdfs_crc32fdfs_delete_filefdfs_download_filefdfs_file_infofdfs_monitorfdfs_storagedfdfs_testfdfs_test1fdfs_trackerdfdfs_upload_appenderfdfs_upload_filestop.shrestart.sh

2.7 因为FastDFS服务脚本设置的bin目录是/usr/local/bin,但实际命令安装在/usr/bin,可以进入/user/bin目录使用以下命令查看fastDFS的相关命令:
这里写图片描述

因此需要修改FastDFS服务脚本中相应的命令路径,也就是把/etc/init.d/fdfs_storaged和/etc/init.d/fdfs_tracker两个脚本中的/usr/local/bin修改成/usr/bin:

# vi /etc/init.d/fdfs_trackerd使用查找替换命令进统一修改:%s+/usr/local/bin+/usr/bin# vi /etc/init.d/fdfs_storaged使用查找替换命令进统一修改:%s+/usr/local/bin+/usr/bin

3.配置 FastDFS 跟踪器(192.168.29.128)

3.1 复制FastDFS跟踪器样例配置文件,并重命名:

# cd /etc/fdfs/# cp tracker.conf.sample tracker.conf

跟踪器样例配置文件

3.2 创建数据目录

# mkdir -p /opt/fastDFS/fastDFSDatadir/tracker

3.3 编辑跟踪器配置文件

# vi /etc/fdfs/tracker.conf修改内容如下:disabled=falseport=22122base_path=/opt/fastDFS/fastDFSDatadir/tracker

其他配置信息保持默认,具体配置参数可以参考:FastDFS配置参数详解

3.4 防火墙中打开跟踪器端口

3.5 启动Tracker

# /etc/init.d/fdfs_trackerd start(初次成功启动,会在/opt/fastDFS/fastDFSDatadir/tracker目录下创建data,logs两个目录)

启动Tracker

4.配置FastDFS存储(192.168.29.129)

4.1 复制FastDFS存储器样例配置文件,并重命名

# cd /etc/fdfs/# cp storage.conf.sample storage.conf

存储器样例配置文件

4.2 创建数据目录

# mkdir -p /opt/fastDFS/fastDFSDatadir/storage

4.3 编辑存储器样例配置文件

# vi /etc/fdfs/storage.conf修改的内容如下:disabled=falseport=23000base_path=/opt/fastDFS/fastDFSDatadir/storagestore_path0=/opt/fastDFS/fastDFSDatadir/storagetracker_server=192.168.29.128:22122http.server_port=8888

其他配置信息保持默认,具体配置参数可以参考:FastDFS配置参数详解

4.4 防火墙中打开存储器端口

4.5 启动 Storage

# /etc/init.d/fdfs_storaged start(初次成功启动,会在/opt/fastDFS/fastDFSDatadir/storage目录下创建data,logs两个目录)

启动 Storage

5.文件上传测试(192.168.29.128)

5.1 复制FastDFS客户端样例配置文件,并重命名

# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

这里写图片描述

5.2 修改Tracker服务器中的客户端配置文件

# vi /etc/fdfs/client.conf修改内容如下base_path=/opt/fastDFS/fastDFSDatadir/trackertracker_server=192.168.29.128:22122

5.3 执行如下文件上传命令

# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/fastDFS/FastDFS_v5.05.tar.gz返回ID:group1/M00/00/00/wKgdgVkKT42AU1H4AAVFOL7FJU4.tar.gz能返回以上文件ID,说明文件上传成功

上传文件测试

6. 在每个存储节点上安装Nginx模块

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

6.2 上传 fastdfs-nginx-module_v1.16.tar.gz 到/usr/local/src

6.3 解压

# cd /usr/local/src/# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

6.4 修改fastdfs-nginx-module的config配置文件

# cd fastdfs-nginx-module/src# vi configCORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"修改为:CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"(注意:这个路径修改是很重要的,不然在Nginx编译的时候会报错)

6.5 编译安装Nginx的时候添加fastdfs-nginx-module
如果对Nginx编译安装不熟悉的话,可以参考我之前的博客:Nginx编译安装详细教程及常用命令介绍

这里只需在配置Nginx参数的时候 使用如下命令添加模块# ./configure --prefix=/opt/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src

6.6 复制fastdfs-nginx-module源码中的配置文件到/etc/fdfs目录,并修改

# cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/# vi /etc/fdfs/mod_fastdfs.conf修改以下配置:connect_timeout=10base_path=/tmptracker_server=192.168.29.128:22122storage_server_port=23000group_name=group1url_have_group_name = truestore_path0=/opt/fastDFS/fastDFSDatadir/storage

6.7 复制FastDFS的部分配置文件到/etc/fdfs目录

# cd /opt/fastDFS/FastDFS/conf# cp http.conf mime.types /etc/fdfs/

6.8 在/fastdfs/storage文件存储目录下创建软连接,将其链接到实际存放数据的目录

ln -s /opt/fastDFS/fastDFSDatadir/storage/data /opt/fastDFS/fastDFSDatadir/storage/data/M00

6.9 配置Nginx

在http节点下添加以下server配置server{    listen      8888;    server_name localhost;    location ~/group([0-9])/M00{        ngx_fastdfs_module;    } } A.8888端口值是要与/etc/fdfs/storage.conf中的http.server_port=8888相对应,因为http.server_port默认为 8888,如果想改成80,则要对应修改过来B.Storage对应有多个group的情况下,访问路径带group名,如/group1/M00/00/00/xxx,对应的 Nginx 配置为:location ~/group([0-9])/M00 {    ngx_fastdfs_module;} C.如查下载时如发现老报404,将nginx.conf第一行user nobody修改为user root后重新启动

6.10 防火墙中打开Nginx的8888端口

6.11 重启Nginx

6.12 访问http://192.168.29.129:8888/group1/M00/00/00/wKgdgVkKT42AU1H4AAVFOL7FJU4.tar.gz下载刚刚上传的文件,如果成功下载,则说明配置都成功了

注意:千万不要使用kill -9命令强杀FastDFS进程,否则可能会导致binlog数据丢失

源码地址:https://github.com/happyfish100/
下载地址:http://sourceforge.net/projects/fastdfs/files/
官方论坛:http://bbs.chinaunix.net/forum-240-1.html

0 0