FastDFS手把手安装

1.FastDFS介绍

1.1 什么是FastDFS

  FastDFS是用c语言编写的一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

1.2 FastDFS架构

  FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。
FastDFS的两个核心概念分别是:Tracker(跟踪器)、Storage(存储节点)
  Tracker server作用是负载均衡和调度,相当于mvc中的controller的角色,在访问上起负载均衡的作用。跟踪器和存储节点都可以由一台或多台服务器构成,跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务,其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。
  Storage server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将storage称为存储服务器。
如下图:
FastDFS手把手安装
Tracker 集群
  FastDFS集群中的Tracker server可以有多台,Tracker server之间是相互平等关系同时提供服务,Tracker server不存在单点故障。客户端请求Tracker server采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker。
跟踪器Tracker负责管理所有的Storage和group,每个Storage在启动后会连接Tracker,
告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,建立group==>[storage server list]的映射表,Tracker需要管理的元信息很少,会全部存储在内存中;另外tracker上的元信息都是由storage汇报的信息生成的,本身不需要持久化任何数据,这样使得tracker非常容易扩展,直接增加tracker机器即可扩展为tracker cluster来服务,cluster里每个tracker之间是完全对等的,所有的tracker都接受stroage的心跳信息,生成元数据信息来提供读写服务。

Storage集群
  存储节点Storage采用了分卷[Volume](或分组[group])的组织方式,存储系统由一个或多个组组成,组与组之间的文件是相互独立的,所有组的文件容量累加就是整个存储系统中的文件容量。存储节点Storage采用了分卷[Volume](或分组[group])的组织方式,存储系统由一个或多个组组成,组与组之间的文件是相互独立的,所有组的文件容量累加就是整个存储系统中的文件容量。一个组由一台或多台存储服务器组成,组内的Storage server之间是平等关系,不同组的Storage server之间不会相互通信,同组内的Storage server之间会相互连接进行文件同步,从而保证同组内每个storage上的文件完全一致的。一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的,以免造成存储空间的浪费.
采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由tracker进行调度选择。一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)

Storage状态收集
  Storage server会连接集群中所有的Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。

1.3 FastDFS的特点:

1、分组存储、灵活简洁
2、对等结构、不存在单点
3、文件ID有FastDFS生成,作为文件访问凭证。FastDFS不需要传统的name server
4、和流行的web server无缝连接,FastDFS已提供apache和nginx扩展模块
5、大、中、小文件均可以很好支持,支持海量小文件存储
6、支持多块磁盘,支持但盘数据恢复
7、支持相同文件内容只保存一份,节省存储空间
8、存储服务器上可以保存文件附加属性
9、下载文件支持多线程方式、支持断点续传

2.FastDFS环境准备

2.1 FastDFS下载

tracker和storage使用相同的安装包,
下载地址:
http://sourceforge.net/projects/FastDFS/
https://github.com/happyfish100/FastDFS(推荐)
这里使用版本:FastDFS_v5.05.tar.gz 。
安装资料上传百度网盘,以供下载:https://pan.baidu.com/s/1IoPQzrW8_ijHRgcleQoX7Q

2.2环境准备

  • 准备 centos
    FastDFS是C语言开发,建议在linux上运行,这里使用Centos6.5作为安装环境。
  • 安装 gcc
    安装FastDFS需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:

yum install -y gcc-c++

  • 安装 libevent
    FastDFS依赖libevent库,需要安装:

yum -y install libevent

2.3 安装libfastcommon

a.下载 软件: https://github.com/happyfish100/libfastcommon
FastDFS手把手安装
b.上传libfastcommonV1.0.7.tar.gz 到 /usr/local/myfastdfs目录下
FastDFS手把手安装
c.进行解压libfastcommonV1.0.7.tar.gz:
命令:tar -zxf libfastcommonV1.0.7.tar.gz
d.进入目录:cd /usr/local/fastdfs/libfastcommonV1.0.7/
FastDFS手把手安装
e.进行编译和安装:
命令:

./make.sh
./make.sh install

注意安装的路径:也就是说,我们的libfastcommon默认安装到了/usr/lib64/这个位置
f.进行软链接创建。
FastDFS主程序设置的目录为/usr/local/lib/,而我们的安装目录为/usr/lib64,所以我们需要创建/usr/lib64/下的一些核心执行程序的软连接文件。

  • 创建目录
    命令:

mkdir /usr/local/lib/

  • 创建软链接
    命令:

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

3.安装FastDFS

a.上传安装文件
FastDFS手把手安装
b.解压FastDFS_v5.05.tar.gz文件
FastDFS手把手安装
c.cd FastDFS 进行编译和安装
编译命令:

./make.sh

安装命令:

./make.sh install

d.采用默认安装方式脚本文件说明:
服务脚本在:

/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd
FastDFS手把手安装

配置文件在:

/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
FastDFS手把手安装

命令行工具:
在/usr/bin/目录下,Fdfs_*的一些列执行脚本
可以进入该目录 使用 ls | grep fdfs 命令查看
FastDFS手把手安装
e.因为FastDFS服务脚本设置的bin目录为/usr/local/bin/下,但是实际我们安装在了/u
sr/bin/下面。所以我们需要修改FastDFS配置文件中的路径,也就是需要修改两
个配置文件:
命令:

vi /etc/init.d/fdfs_storaged

进行全局替换命令:%s+/usr/local/bin+/usr/bin(命令模式下,输入该命令。即:后输入该命令)

命令:

vi /etc/init.d/fdfs_trackerd

进行全局替换命令:%s+/usr/local/bin+/usr/bin

4.配置跟踪器

a.进入 cd/etc/fdfs/ 目录配置跟踪器文件,把tracker.conf.sample文件进行copy一份:去修改tracker.conf文件。
FastDFS手把手安装

b.修改tracker.conf文件
命令:

vi /etc/fdfs/tracker.conf

如下图所示:我们暂时修改配置文件里的base_path即可。
FastDFS手把手安装
c.修改为自己的路径地址:base_path=/fastdfs/tracker
注意:对于tracker.conf配置文件参数解释可以找官方文档,地址为:http://bbs.chinaunix.net/thread-1941456-1-1.html
FastDFS手把手安装

d.最后我们一定要创建之前定义好的目录(也就是/fastdfs/tracker):
命令:

mkdir -p /fastdfs/tracker

e.关闭防火墙:

service iptables stop
vi /etc/sysconfig/iptables

添加:-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
重启:service iptables restart

5.启动跟踪器

FastDFS手把手安装
目录命令:cd /fastdfs/tracker/ && ll
启动tracker命令:/etc/init.d/fdfs_trackerd start
查看进程命令:ps -el | grep fdfs
停止tracker命令:/etc/init.d/fdfs_trackerd stop(这里只是说明停止命令,但在搭建过程中,不要停止!!!)
可以设置开机启动跟踪器:(一般生产环境需要开机启动一些服务,如keepalived、linux、tomcat)
命令:vi /etc/rc.d/rc.local
加入配置:

/etc/init.d/fdfs_trackerd start
FastDFS手把手安装

6.配置FastDFS存储器

a.进入文件目录:cd /etc/fdfs/,进行copy storage文件一份
命令:cd /etc/fdfs/
命令:cp storage.conf.sample storage.conf
FastDFS手把手安装
b. 修改storage.conf文件
命令:vi /etc/fdfs/storage.conf
修改内容:
base_path=/fastdfs/storage
FastDFS手把手安装
store_path0=/fastdfs/storage
FastDFS手把手安装
tracker_server=192.168.171.155:22122(当前机器ip)
FastDFS手把手安装
http.server_port=8888(端口需定义)
FastDFS手把手安装
c.创建存储目录:mkdir -p /fastdfs/storage

d. 关闭防火墙:
命令:vi /etc/sysconfig/iptables
添加:-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
重启:service iptables restart

e. 启动存储(storage)
命令:/etc/init.d/fdfs_storaged start (关闭命令:/etc/init.d/fdfs_storaged stop)
(初次启动成功后会在/fastdbf/storage/ 目录下创建 data、logs俩个目录)
FastDFS手把手安装
f.查看FastDFS storage 是否启动成功
命令:

ps -ef | grep fdfs
FastDFS手把手安装

并且我们进入到/fastdfs/storage/data/文件夹下会看到一些目录文件(256*256)
如下:
命令:

cd /fastdfs/storage/data/ && ls
FastDFS手把手安装

g.同理,也可以设置开机启动存储器:(一般生产环境需要开机启动一些服务,如keepalived、linux、tomcat)
命令:

vi /etc/rc.d/rc.local

加入配置:

/etc/init.d/fdfs_storaged start

到此为止我们的FastDFS环境已经搭建完成!

7.测试FastDFS

A.我们先使用命令上传一个文件。注意:是在tracker(跟踪器)中上传。
首先我们在跟踪器里copy一份client.conf文件。
命令:

cd /etc/fdfs/

命令:

cp client.conf.sample client.conf
FastDFS手把手安装

B.编辑client.conf文件
命令:vi /etc/fdfs/client.conf
修改内容:
base_path=/fastdfs/tracker
FastDFS手把手安装
tracker_server=192.168.171.155:22122
FastDFS手把手安装

C.我们找到命令的脚本位置,并且使用命令,进行文件的上传:
命令:cd /usr/bin/
命令:ls | grep fdfs
FastDFS手把手安装
D.使用命令fdfs_upload_file进行上传操作:
首先,我们先看一下存储器,进入到data下,在进入00文件夹
下,发现00文件夹下还有一堆文件夹,然后继续进入00文件夹下,最终我们所
进入的文件夹为:
/fastdfs/storage/data/00/00 里面什么文件都没有。

然后,我们进行上传操作,比如把/usr/local/下的1.jpg文件上传到FastDFS系统中去,在跟踪器中上传文件,命令如
下:
命令:

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/1.jpg

FastDFS手把手安装
最后我们发现,命令执行完毕后,返回一个group1/M00/00/00/…的ID,其实就
是返回当前所上传的文件在存储器中的哪一个组、哪一个目录位置,所以我们查看存储器中的/fastdfs/storage/data/00/00文件夹位置,发现已经存在了刚才上传的文件,到此为止,我们的测试上传文件已经OK了。
FastDFS手把手安装