FastDFS介绍与安装

Stella981
• 阅读 656

目录

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介绍与安装

FastDFS架构图

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

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

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

 FastDFS介绍与安装

上传时序图

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,文件上传结束。

 FastDFS介绍与安装

下载时序图

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后解压、编译、安装。

运行环境相关软件:

²  CentOS 7.0

²  Libfastcommon-1.0.35

²  FastDFS-5.10

²  Nginx

²  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

 FastDFS介绍与安装

FastDFS介绍与安装

2.2   安装FastDFS

  • 解压

tar xvf V5.10.tar.gz

  • 安装

cd fastdfs-5.10

./make.sh

./make.sh install

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

²  服务脚本

[root@fastdfs-tracker ~]# 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

²  样例配置文件

[root@fastdfs-tracker ~]# 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

²  命令行工具

[root@fastdfs-tracker ~]# 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端样例配置文件并重命名

[root@fastdfs-tracker ~]# cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

[root@fastdfs-storage ~]# 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

 FastDFS介绍与安装

  • 创建tracker server数据目录

[root@fastdfs-tracker ~]# mkdir -p /data/fastdfs/tracker

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

[root@fastdfs-tracker ~]# cd /data/fastdfs/tracker/

[root@fastdfs-tracker tracker]# ls

[root@fastdfs-tracker tracker]# /etc/init.d/fdfs_trackerd start

Starting FastDFS tracker server:

[root@fastdfs-tracker tracker]# ss -lntup|grep 22122

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

[root@fastdfs-tracker tracker]# ls

data logs

 FastDFS介绍与安装

  • 关闭tracker server

[root@fastdfs-tracker tracker]# /etc/init.d/fdfs_trackerd stop

waiting for pid [3785] exit ...

pid [3785] exit.

 FastDFS介绍与安装

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

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

[root@fastdfs-storage ~]# 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数据目录

[root@fastdfs-storage ~]# mkdir -p /data/fastdfs/storage

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

[root@fastdfs-storage ~]# cd /data/fastdfs/storage/

[root@fastdfs-storage storage]# ls

[root@fastdfs-storage storage]# /etc/init.d/fdfs_storaged start

Starting FastDFS storage server:

[root@fastdfs-storage storage]# ss -lntup|grep 23000

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

[root@fastdfs-storage storage]# ls

data  logs

2.2.1.4  文件上传测试

执行如下上传命令:

[root@fastdfs-tracker~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /home/oldcat/imgs/test.jpg

group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg

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

 FastDFS介绍与安装

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

 FastDFS介绍与安装

FastDFS介绍与安装

FastDFS介绍与安装

2.3.2 安装nginx

yum info nginx

yum install nginx

 FastDFS介绍与安装

FastDFS介绍与安装

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

[root@fastdfs-storagetools]# wget http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module\_v1.16.tar.gz

[root@fastdfs-storage tools]# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

[root@fastdfs-storage tools]# cd fastdfs-nginx-module/src/

[root@fastdfs-storage tools]# vi config

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

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

 FastDFS介绍与安装

修改完成后

 FastDFS介绍与安装

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

[root@fastdfs-storage~]#cp /home/centos/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

[root@fastdfs-storage ~]# 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版本

[root@bogon centos]# nginx -V

 FastDFS介绍与安装

[root@bogon centos]# wget http://nginx.org/download/nginx-1.12.1.tar.gz

[root@bogon centos]# tar -zvxf nginx-1.12.1.tar.gz

更新一下依赖相关包

[root@bogon nginx-1.12.1]# yum -y install pcre*

[root@bogon nginx-1.12.1]# service nginx stop

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

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

 FastDFS介绍与安装

[root@bogon nginx-1.12.1]#make

[root@bogon nginx-1.12.1]#make install

注:报如下错:

 FastDFS介绍与安装

需要执行yum -y install openssl-devel

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

[root@bogon conf]# cd /home/centos/fastdfs-5.10/conf

[root@bogon conf]# cp http.conf /etc/fdfs/

[root@bogon conf]# cp mime.types /etc/fdfs/

2.4.1.5  配置nginx,如下所示:

[root@bogon conf.d]# cd /etc/nginx/conf.d/

[root@bogon 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;

   }

}

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这