文档库 最新最全的文档下载
当前位置:文档库 › FastDFS介绍和安装

FastDFS介绍和安装

FastDFS介绍和安装
FastDFS介绍和安装

1.FastDFS介绍

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

安装流程

1、Tracker

a)主要是配置0

2、storage

a)主要是配置

3、Nginx+fastdfs_nginx_module

1.1FastDFS架构

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

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

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

如下图:

Tracker 集群

FastDFS集群中的Tracker server可以有多台,Tracker server之间是相互平等关系同时提供服务,Tracker server不存在单点故障。客户端请求Tracker server 采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker。Storage集群

Storage集群采用了分组存储方式。storage集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的Storage server之间是平等关系,不同组的Storage server之间不会相互通信,同组内的Storage server之间会相互连接进行文件同步,从而保证同组内每个storage上的文件完全一致的。一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。

采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由tracker进行调度选择。一个分组的存储服务

器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。

Storage状态收集

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

文件上传流程

客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。

?组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需

要客户端自行保存。

?虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了

store_path0则是M00,如果配置了store_path1则是M01,以此类推。

?数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据

文件。

?文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储

服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

文件下载流程

tracker根据请求的文件路径即文件ID 来快速定义文件。

比如请求下边的文件:

1.通过组名tracker能够很快的定位到客户端需要访问的存储服务器组是group1,并选择合适的存储服务器提供客户端访问。

2.存储服务器根据“文件存储虚拟磁盘路径”和“数据文件两级目录”可以很快定位到文件所在目录,并根据文件名找到客户端需要访问的文件。

2.FastDFS+Nginx实现文件服务器

2.1架构

架构图

3.安装配置

1.1下载

tracker和storage使用相同的安装包

下载地址:https://www.wendangku.net/doc/e015758022.html,/projects/FastDFS/或https://https://www.wendangku.net/doc/e015758022.html,/happyfish100/FastDFS(推荐)

本教程下载:FastDFS_v5.05.tar.gz

3.1FastDFS依赖库安装

a)依赖库gcc-c++安装

FastDFS采用C语言编写,因此需要先安装C++库。

如下命令来执行云安装:yum install gcc-c++

如下图:

b)Libevent安装

FastDFS依赖libevent库,需要安装:

yum -y install libevent

c)安装libfastcommon

libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。

首先上传libfastcommon包到服务器。

将文件上传到服务器

在将文件移动到/usr/local/server目录进行解压

编译、安装

注意:一定要将/usr/lib64目录下的libfastcommon.os拷贝到/usr/lib目录下。

4.1Tracker安装

上传FastDFS_v5.05.tar.gz文件到服务器

解压执行编译安装

解压:tar –xfFastDFS_v5.05.tar.gz

编译:到解压目录FastDFS下,可以看到一个make.sh,输入编译指令./make.sh执行编译。

安装:./make.sh install

如图:

执行完成后,会将如下3个文件拷贝到/etc/fdfs目录下,拷贝这个动作它自己会执行。

client.conf.sample

storage.conf.sample

tracker.conf.sample

a)配置tracker

client.conf.sample

storage.conf.sample

tracker.conf.sample

把如上3个文件的.sample后缀去掉,修改后

client.conf

storage.conf

tracker.conf

编辑tracker.conf文件

Base_path是日志和数据存储目录,需要修改陈自己的路径,这里改成/home/FastDFS,然后在home目录下创建FastDFS目录。

这里不需要改,但要明白store_lookup=N 和store_group=groupN这里的N 必须相同。

创建FastDFS文件夹

b)启动tracker

启动命令:

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.confrestart

通过ps–ef|grep tracker 查看进程信息。

c)设置开机启动

设置开机启动,只需要将启动命令写入/etc/rc.local即可!

vi /etc/rc.local

把如下指令写入rc.local即可。

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.confrestart

5.1FastDFS—storage安装

Storage在同一台安装tracker的机器上不需要进行安装,只需要修改配置即可,但如果不是同一台机器这里需要执行上面tracker安装的过程(libfastcommon、libevent、storage的编译+安装)

a)配置

到/etc/fdfs目录,编辑storage.conf,修改storage相关配置。

vistorage.conf

group_name=group1

base_path=/home/yuqing/FastDFS改为:base_path=/home/FastDFS

store_path0=/home/yuqing/FastDFS改为:

store_path0=/home/FastDFS/fdfs_storage

#如果有多个挂载磁盘则定义多个store_path,如下

#store_path1=.....

#store_path2=......

tracker_server=192.168.174.130:22122 #配置tracker服务器:IP

#如果有多个则配置多个tracker

tracker_server=192.168.101.4:22122

注意:store_path0=/home/FastDFS/fdfs_storage

这里的路径必须存在,否则启动storage的时候会一直报错。

创建fdfs_storage目录

Cd /home/FastDFS

mkdirfdfs_storage

b)启动storage

执行命令:

/usr/bin/fdfs_storaged /etc/fdfs/storage.confrestart

查看进程:

Ps –ef|grep storage

启动的时候这里通常会有点卡,等1分钟,如果还卡着说明配置有问题,就需要回头仔细检查配置文件了。

c)设置开启启动

仍然只需要在/etc/rc.local文件中加入启动命令即可。

/usr/bin/fdfs_storaged /etc/fdfs/storage.confrestart

6.1本地测试

a)测试配置

本地测试文件上传,也需要配置相关参数,首先配置/etc/fdfs/client.conf

Viclient.conf

修改2个参数

Base_path=/home/FastDFS

Tracker_server=192.168.174.130:22122

这里的base_path指定了FastDFS数据的存储目录,而tracker_server指定了对应stracker的ip以及访问端口。

b)执行测试

先从本地拷贝一个图片到服务器某一个目录下

通过upload来执行上传操作。

/usr/bin/fdfs_test /etc/fdfs/client.conf upload /root/2.jpg

可以通过如下地址来访问图片:

http://192.168.174.130/group1/M00/00/00/wKiugllwVSuAMo6gAAEiTo59C9I154_big.jpg 但由于这里没有配置Nginx,所以暂时无法访问。

c)防火墙开放22122端口

为了让外界程序能够访问我们的stracker,需要开放端口。

vi /etc/sysconfig/iptables

d)JavaAPI测试

在自己电脑上编写java代码远程调用:

client.conf文件的内容如下:

tracker_server=192.168.174.130:22122

上面代码步骤解析:

1、加载配置文件,配置文件中的内容就是tracker服务的地址。

配置文件内容:tracker_server=192.168.174.130:22122

2、创建一个TrackerClient对象。直接new一个。

3、使用TrackerClient对象创建连接,获得一个TrackerServer对象。

4、创建一个StorageServer的引用,值为null

5、创建一个StorageClient对象,需要两个参数TrackerServer对象、

StorageServer的引用

6、使用StorageClient对象上传图片。

7、返回数组。包含组名和图片的路径。

因为请求访问流程是先访问tracker,tracker会将storage的访问地址响应给客户端,客户端再去请求对应的storage,所以防火墙还应该开放storage对应的端口。如下图:

4.Fastfdfs整合Nginx

为了通过http请求的方式去访问storage里存储的文件,我们可以通过给Nginx添加fastdfs-nginx-module模块来实现,当然,使用nginx的主要目的是负载均衡及实现高可用。

1.1安装fastdfs-nginx-module

上传fastdfs-nginx-module_v1.16.tar.gz

将fastdfs-nginx-module_v1.16.tar.gz移动到/usr/local/server目录下。

a)解压配置

tar –xf fastdfs-nginx-module_v1.16.tar.gz

再进入fastdfs-nginx-module/src目录

b)配置config

viconfig

这里有3处有local,而之前安装fastdfs的时候,对应的文件全部在/usr/lib下或者在/usr下,所以这里要将local去掉,否则会有很多错误提示找不到文件。

改之前:

改之后:

c)配置mod_fastdfs.conf

编辑mod_fastdfs.conf,配置文件如下

Base_path=/home/FastDFS这里是fastdfs的文件目录存放地址。

tracker_server这个是tracker的访问ip和端口

group_name这个是每一个storage对应的组

url_have_group_name访问文件,是否需要加上组名

store_path0 组群中store_path0的文件存储目录

我们需要改的只有base_path、tracker_server.

上面配置修改完成后,不要忘了把它拷贝到/etc/fdfs目录下

d)拷贝对应库文件到/usr/lib目录

相关文档