FastDFS介绍与安装

目录

FastDFS. 1

1     介绍.... 1

2     安装.... 4

2.1      安装libfastcommon. 4

2.1.1      下载安装包并解压.... 4

2.2      安装FastDFS. 5

2.3      安装nginx. 8

2.3.1      更新nginx安装库.... 8

2.3.2      安装nginx. 8

2.4      存储服务器(storage server)安装并配置nginx. 10

2.4.1      安装fastdfs-nginx-module. 10

1     介绍

FastDFS是一款开源的、分布式文件系统(Distributed File System),由淘宝开发平台部资深架构师余庆开发。该开源项目的主页是 http://code.google.com/p/fastdfs 。可以通过fastdfs.sourceforge.NET 下载。FastDFS孵化平台(ChinaUnix)版块http://bbs.chinaunix.net/forum-240-1.html。

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

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

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。

存储节点存储文件,完成文件管理的所有功能,就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key valuepair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。

跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。

为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。

在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。

当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。

FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。

FastDFS架构图

1)      Tracker cluster中各个tracker server相互独立,不进行相互通信。

2)      Storage cluster中各个storage组(Volume1,Volume2...)相互独立,不进行相互通信,也就是说各个组之间保存的数据是不相同的。但是各个组中的storage server之间是属于互相备份的关系,也就是说storage server之间保存相同的数据。

3)      每个storage server会启动一个单独的线程主动向Tracker cluster中每个tracker server报告其状态信息,包括磁盘使用情况,文件同步情况及文件上传下载次数统计等信息。

上传时序图

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建立连接并进行文件下载。

2     安装

安装FastDFS还需要安装libfastcommon作为前提条件,首先准备安装包FastDFS和libfastcommon。

libfastcommon下载地址: https://github.com/happyfish100/libfastcommon/releases

FastDFS的下载地址:https://github.com/happyfish100/fastdfs/releases

首先安装libfastcommon,得到libfastcommon-1.0.35.tar.gz后解压、编译、安装。

运行环境相关软件:

2  CentOS 7.0

2  Libfastcommon-1.0.35

2  FastDFS-5.10

2  Nginx

2  Fastdfs-nginx-module

服务器规划


服务器名


备注


Fastdfs-tracker


跟踪服务器/调度服务器


Fastdfs-storge


存储服务器

2.1   安装libfastcommon

2.1.1 下载安装包并解压

  • 下载libfastcommon

wget https://github.com/happyfish100/libfastcommon/archive/V1.0.35.tar.gz

  • 解压

tar -zxvf V1.0.35.tar.gz

  • 安装

cd libfastcommon-1.0.35

./make.sh

./make.sh install

提示:执行./make.sh命令时报如下错误,需要安装gcc

gcc安装命令:yum -y install gcc gcc-c++  make automake autoconf libtool perl

2.2   安装FastDFS

  • 解压

tar xvf V5.10.tar.gz

  • 安装

cd fastdfs-5.10

./make.sh

./make.sh install

2.2.1.1    采用默认方式安装后的文件及目录


2  服务脚本

[[email protected] ~]# ll /etc/init.d/ |grep fdfs

-rwxr-xr-x. 1 root root   918 4月  22 22:08 fdfs_storaged

-rwxr-xr-x. 1 root root   920 4月  22 22:08 fdfs_trackerd

2  样例配置文件

[[email protected] ~]# ll /etc/fdfs/

总用量 20

-rw-r--r--. 1 root root 1461 4月  22 22:08 client.conf.sample

-rw-r--r--. 1 root root 7927 4月  22 22:08 storage.conf.sample

-rw-r--r--. 1 root root 7200 4月  22 22:08 tracker.conf.sample

2  命令行工具

[[email protected] ~]# ll /usr/bin|grep fdfs

-rwxr-xr-x.   1 root root     252272 4月  22 22:08 fdfs_appender_test

-rwxr-xr-x.   1 root root     252225 4月  22 22:08 fdfs_appender_test1

-rwxr-xr-x.   1 root root     242449 4月  22 22:08 fdfs_append_file

-rwxr-xr-x.   1 root root     242013 4月  22 22:08 fdfs_crc32

-rwxr-xr-x.   1 root root     242508 4月  22 22:08 fdfs_delete_file

-rwxr-xr-x.   1 root root     243627 4月  22 22:08 fdfs_download_file

-rwxr-xr-x.   1 root root     243369 4月  22 22:08 fdfs_file_info

-rwxr-xr-x.   1 root root     255657 4月  22 22:08 fdfs_monitor

-rwxr-xr-x.   1 root root     863913 4月  22 22:08 fdfs_storaged

-rwxr-xr-x.   1 root root     258712 4月  22 22:08 fdfs_test

-rwxr-xr-x.   1 root root     257881 4月  22 22:08 fdfs_test1

-rwxr-xr-x.   1 root root     365232 4月  22 22:08 fdfs_trackerd

-rwxr-xr-x.   1 root root     243547 4月  22 22:08 fdfs_upload_appender

-rwxr-xr-x.   1 root root     244453 4月  22 22:08 fdfs_upload_file

2.2.1.2  配置跟踪服务器(tracker server)

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

[[email protected] ~]# cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

[[email protected] ~]# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

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

disabled=false(默认为false,表示是否无效)

port=22122(默认为22122)

base_path=/data/fastdfs/tracker

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

base_path=/data/fastdfs/tracker

#tracker_server中IP指定的是tracker server的IP

tracker_server=192.168.128.134:22122

  • 创建tracker server数据目录

[[email protected] ~]# mkdir -p /data/fastdfs/tracker

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

[[email protected] ~]# cd /data/fastdfs/tracker/

[[email protected] tracker]# ls

[[email protected] tracker]# /etc/init.d/fdfs_trackerd start

Starting FastDFS tracker server:

[[email protected] tracker]# ss -lntup|grep 22122

Tcp LISTEN 0 128 *:22122 *:* users:(("fdfs_trackerd",3785,5))

[[email protected] tracker]# ls

data logs

  • 关闭tracker server

[[email protected] tracker]# /etc/init.d/fdfs_trackerd stop

waiting for pid [3785] exit ...

pid [3785] exit.

2.2.1.3  配置存储服务器(storage server)

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

[[email protected] ~]# cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

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

disabled=false(默认为false,表示是否无效)

port=23000(默认为23000)

base_path=/data/fastdfs/storage

tracker_server=192.168.128.135:22122

store_path0=/data/fastdfs/storage

http.server_port=8888(默认为8888,nginx中配置的监听端口那之一致)

  • 创建storage server数据目录

[[email protected] ~]# mkdir -p /data/fastdfs/storage

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

[[email protected] ~]# cd /data/fastdfs/storage/

[[email protected] storage]# ls

[[email protected] storage]# /etc/init.d/fdfs_storaged start

Starting FastDFS storage server:

[[email protected] storage]# ss -lntup|grep 23000

tcp    LISTEN     0      128                    *:23000                 *:*      users:(("fdfs_storaged",3786,5))

[[email protected] storage]# ls

data  logs

2.2.1.4  文件上传测试

执行如下上传命令:


[[email protected]~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /home/oldcat/imgs/test.jpg

group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg

返回文件ID即说明文件已经上传成功

2.3   安装nginx

2.3.1 更新nginx安装库


# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# yum makecache

# yum update

2.3.2 安装nginx


yum info nginx

yum install nginx

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

2.4.1 安装fastdfs-nginx-module

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

2.4.1.1  下载fastdfs-nginx-moudule


[[email protected]]# wget http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz

[[email protected] tools]# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

[[email protected] tools]# cd fastdfs-nginx-module/src/

[[email protected] tools]# vi config

编辑config文件,执行如下命令进行批量替换并保存退出

:%s+/usr/local/+/usr/+g

修改完成后

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


[[email protected]~]#cp /home/centos/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

[[email protected] ~]# vim /etc/fdfs/mod_fastdfs.conf

修改内容如下:

connect_timeout=10

base_path=/tmp(默认为/tmp)

tracker_server=192.168.128.135:22122

storage_server_port=23000(默认配置为23000)

url_have_group_name = true

store_path0=/data/fastdfs/storage

group_name=group1(默认配置为group1)

[group1]

group_name=group1

storage_server_port=23000

store_path_count=1

store_path0=/data/fastdfs/storage

2.4.1.3  nginx添加fastdfs-nginx-module模块


查看nginx版本

[[email protected] centos]# nginx -V

[[email protected] centos]# wget http://nginx.org/download/nginx-1.12.1.tar.gz

[[email protected] centos]# tar -zvxf nginx-1.12.1.tar.gz

更新一下依赖相关包

[[email protected] nginx-1.12.1]# yum -y install pcre*

[[email protected] nginx-1.12.1]# service nginx stop

#编译./configure 后面加上 第1步nginx -V查看到的所有配置参数,后面加上你要加的模块配置

[[email protected] nginx-1.12.1]#./configure --prefix=/etc/nginx ……(第1步nginx-V内容)……--add-module=/home/centos/fastdfs-nginx-module

[[email protected] nginx-1.12.1]#make

[[email protected] nginx-1.12.1]#make install

注:报如下错:

需要执行yum -y install openssl-devel

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


[[email protected] conf]# cd /home/centos/fastdfs-5.10/conf

[[email protected] conf]# cp http.conf /etc/fdfs/

[[email protected] conf]# cp mime.types /etc/fdfs/

2.4.1.5  配置nginx,如下所示:


[[email protected] conf.d]# cd /etc/nginx/conf.d/

[[email protected] conf.d]# vi fdfs.conf

修改配置如下:

server {

listen 8888;

server_name  localhost;

location ~ /group[0-9]/ {

root /data/fastdfs/storage/data;

ngx_fastdfs_module;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

}

3     集群配置

时间: 2024-08-10 21:11:36

FastDFS介绍与安装的相关文章

Tokyo Tyrant(TTServer)系列(一)-介绍和安装

Tokyo Cabinet 是日本人Mikio Hirabayashi 开发的一款DBM 数据库,该数据库读写非常快,哈希模式写入100 万条数据只需0.643 秒,读取100 万条数据只需0.773 秒,是Berkeley DB 等DBM 的几倍.Tokyo Tyrant 是由同一作者开发的Tokyo Cabinet 数据库网络接口.它拥有Memcached兼容协议,也可以通过HTTP 协议进行数据交换. Tokyo Tyrant 加上Tokyo Cabinet,构成了一款支持高并发的分布式持

Laravel介绍及安装

Laravel是目前最流行的php框架,此前已有耳闻,还没有好好的研究下,目前由于项目的需求要用到这个框架,所以只能硬着头皮学习了.今天算是Laravel学习的第一天,先讲讲laravel框架的安装流程. 下载最新版本Laravel框架,可以到Laravel官网下载,也可以到国内社区下载,下载后解压到服务器网根目录. LaraveL框架使用Composer(PHP包管理工具)来管理代码依赖性. 首先,你需要下载Composer的PHAR打包文件( composer.phar ),下载完成后把它放

System center 2012 R2 实战五、SCVMM2012R2介绍及安装

大家好,今天我来分享的是微软System center组件中第一个组件,SCVMM2012R2的安装,说起SCVMM2012R2,我还想与大家聊一聊,SCVMM2012R2在微软私有云中的作用. 我们知道,微软的私有云一共分为三个层,最底层,是基础架构层,基础架构层上面是服务标准与自动化流程,最上面的是应用管理层,那么什么是基础架构层,基础架构层在微软私有云中是干什么的呢,我先来跟大家说一说我的理解. 微软私有云基础架构层,在我看来,主要作用是,通过微软的云计算,改善企业的IT环境,将企业传统的

Storm介绍及安装部署

本节内容: Apache Storm是什么 Apache Storm核心概念 Storm原理架构 Storm集群安装部署 启动storm ui.Nimbus和Supervisor 一.Apache Storm是什么 Apache Storm是自由开源的分布式实时计算系统,擅长处理海量数据,适用于数据实时处理而非批处理. 批处理使用的大多是鼎鼎大名的hadoop或者hive,作为一个批处理系统,hadoop以其吞吐量大.自动容错等优点,在海量数据处理上得到了广泛的使用.但是,hadoop不擅长实时

python 常库介绍及安装方法

文大赛,秀绝招,赢无人机! python 常库介绍及安装方法 标签: PYTHON库 2016-10-13 15:32 798人阅读 评论(0) 收藏 举报  分类: 其他(33)  bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctypes:用来调用动态链接库DBUtils:数据库连接池django:一个WEB frameworkdocutils:用来写文档的dpkt:数据包的解包和组包My

Web服务介绍 & httpd安装

Web简介 什么是Web WWW:World Wide Web,万维网 英国人TimBerners-Lee在1989年欧洲共同体的一个大型科研机构工作时发明的 Web是一种超文本信息系统,其主要实现方式是超文本连接 Web特点 1.Web页面的图形化和易于链接 2.Web与操作系统.浏览器平台无关 3.分布式 4.动态习惯 5.交互性 Web工作原理 HTTP(Hyper Text Transfer Protocol,超文本传输协议):提供了访问超文本信息的功能,是Web浏览器和Web服务器之间

Memcached介绍及安装

memcached:由LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件,现已成为mixi,hatena,Facebook,Vox,LiveJournal等众多服务器提高Web应用程序扩展性的重要因素: memcached是一款开源.高性能.分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序.它是一个基于内存的"键值对"存储,用于存储数据库调用.API调用或页

VMware Horizon View Config Tool 用户使用手册之一 -- VCT介绍和安装之前的准备

安装Horizon View Configuration Tool VMware Horizon View Configuration Tool (以下简称为vCT), 现在版本为1.0, 本产品的用途为帮助用户自动安装部署 Horizon View 5.3的基础环境,其中包括域服务器,VMware vCenter 服务器,View Connection 服务器和View Composer服务器.本工具替代了复杂的手动安装部署步骤,能够自动部署基础的Horizon View环境. vCT发布为一

兄弟连新版ThinkPHP视频教程1.ThinkPHP 3.1.2 介绍及安装

老师给咋们这么好的礼物,咋可不能浪费^_^记在博客上方便以后查阅 ## ThinkPHP 3 介绍及安装#讲师:赵桐正微博:http://weibo.com/zhaotongzheng 本节课大纲:一.ThinkPHP的介绍            //了解    MVC        M - Model 模型                工作:负责数据的操作        V - View  视图(模板)        工作:负责前台页面显示        C - Controller 控制器