内容简介
在跟随项目实践过程中,代码中需要使用上传图片的功能,其中使用了FastDFS作为图片服务器,在此记录一下搭建FastDFS服务器的过程
框架介绍
1.什么是FastDFS
FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
2.FastDFS架构
FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。
Tracker server作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。
Storage server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将storage称为存储服务器,如下图:3.Tracker 集群
FastDFS集群中的Tracker server可以有多台,Tracker server之间是相互平等关系同时提供服务,Tracker server不存在单点故障。客户端请求Tracker server采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker。
4.Storage集群
Storage集群采用了分组存储方式。storage集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的Storage server之间是平等关系,不同组的Storage server之间不会相互通信,同组内的Storage server之间会相互连接进行文件同步,从而保证同组内每个storage上的文件完全一致的。一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。
采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由tracker进行调度选择。一个分组的存储服务器访问压力较大时,可准备工作
1.前提条件
安装好了VM+CentOs6.4(网络等配置都可正常使用)
已安装nginx(非必须)
JDK1.72.安装所需
fastdfs-nginx-module_v1.16.tar.gz - 集成nginx所需模块
FastDFS_v5.05.tar.gz - FastDFS源码,C语言编写,需要手动编译
jdk-7u67-linux-x64.tar.gz
nginx-1.8.0.tar.gz - nginx源码,C语言编写,需要手动编译
libfastcommonV1.0.7.tar.gz - FastDFS官方提供的基础库
perl-5.20.2.tar.gz - 编译基础库所需要的语言环境
服务搭建
1.环境介绍
VM + CentOs6.4 + Jdk1.7 + nginx1.8.0
此处记录的是在同一台服务器上同时搭建tracker和storage,并且都是一个,组成的是一个最简便的集群环境。
2.安装libfastcommon基础库
将压缩包上传至虚拟机/usr/local下,解压缩
进入文件夹,看到有make.sh文件,执行 ./make.sh ,初次安装会报错,因为缺少必要的语言运行环境,执行下列命令
# FastDFS依赖libevent库,需要安装: yum -y install libevent # 安装gcc库,若之前安装过nginx,则不需要重复安装 yum -y install gcc yum -y install gcc -c++
安装Perl语言环境,需要下载源码perl-5.20.2.tar.gz,上传至/usr/local下,解压缩,进入目录,依次执行:
$ tar -xzf perl-5.x.y.tar.gz //解压缩