FastDFS、nginx配置手记

第一部分   FastDFS介绍

1.FastDFS是什么

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。

准确地讲,Google FS以及FastDFS、mogileFS、 HDFS、TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。

FastDFS的作者是余庆,现在淘宝网Java中间件团队从事Java基础平台研发工作。

以上文字引用自<<程序员>> 文章 <<分布式文件系统FastDFS架构剖析>>http://www.programmer.com.cn/tag/fastdfs-架构/

2.FastDFS的体系结构

3.FastDFS工作过程

1. Client询问Tracker server上传到的Storage server;

2. Tracker server返回一台可用的Storage server,返回的数据为该Storage server的IP地址和端口;

3. Client直接和该Storage server建立连接,进行文件上传,Storage server返回新生成的文件ID,文件上传结束。

1. Client询问Tracker server可以下载指定文件的Storage server,参数为文件ID(包含组名和文件名);

2. Tracker server返回一台可用的Storage server;

3. Client直接和该Storage server建立连接,完成文件下载。

FastDFS从V1.20开始,支持通过HTTP协议下载文件。

1.用户浏览器访问Tracker server内置的Web Server,URL中包含文件ID(包含组名和文件名);

2.Tracker server将这个HTTP请求redirect到一台可用的Storage server的Web Server上(可以是apache或nginx);

3.用户浏览器直接与Storage server的Web Serverr建立连接,完成文件下载。

第二部分   FastDFS+nginx_module配置手记

1.系统环境

最小化安装的 CentOS 5.6 x86_64

tracker server:   192.168.3.220

storage server:   192.168.3.226

2.环境准备[所有服务器上操作]

为了速度,配置使用sohu的源

cd /etc/yum.repo.d/

wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo

安装EPEL源

rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

安装开发工具和编译nginx所需的开发包

yum groupinstall "Development Tools"

yum install libevent-devel.x86_64 pcre-devel.x86_64  zlib-devel.x86_64

3.在tracker上的操作[安装tracker server]

[[email protected]tracker]# wget http://fastdfs.googlecode.com/files/FastDFS_v3.05.tar.gz

[[email protected]tracker]# tar xvzf FastDFS_v3.05.tar.gz

[[email protected]tracker]# cd FastDFS

[[email protected]tracker]# vi make.sh

将如下两行前边的"#"删除

WITH_HTTPD=1

WITH_LINUX_SERVICE=1

[[email protected]tracker]# ./make.sh

[[email protected]tracker]# ./make.sh install

[[email protected]tracker]# vi /etc/fdfs/tracker.conf

修改/etc/fdfs/tracker.conf,主要修改以下两处,如有其他调整,可参考文档自行调整,默认的配置也可以工作。

# the base path to store data and log files

base_path=/home/tracker     ====> 放置data和log的目录

##include http.conf   ====>   #include http.conf    这里一定要注意!是 #include,不是include!!!

[[email protected]tracker]# mkdir -p /home/tracker

启动tracker服务

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

确认8080,22122端口已经监听

[[email protected]tracker]# netstat -nl|grep -E ‘8080|22122‘

tcp        0      0 0.0.0.0:22122               0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN

4.在storage上的操作

[[email protected]storage]# wget http://fastdfs.googlecode.com/files/FastDFS_v3.05.tar.gz

[[email protected]storage]# wget http://fastdfs.googlecode.com/files/fastdfs-nginx-module_v1.10.tar.gz

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

[[email protected]storage]# tar xvzf FastDFS_v3.05.tar.gz

[[email protected]storage]# cd FastDFS

[[email protected]storage]# ./make.sh

[[email protected]storage]# ./make.sh install

[[email protected]storage]# tar xvzf nginx-1.0.11.tar.gz

[[email protected]storage]# tar xvzf fastdfs-nginx-module_v1.10.tar.gz

[[email protected]storage]# cd nginx-1.0.11

[[email protected]storage]# ./configure --prefix=/usr/local/nginx --add-module=/root/fastdfs-nginx-module/src

[[email protected]storage]# make

[[email protected]storage]# make install

[[email protected]storage]# vi /etc/fdfs/storage.conf

修改/etc/fdfs/storage.conf,主要修改以下几处,如有其他调整,可参考文档自行调整,默认的配置也可以工作。

# the name of the group this storage server belongs to

group_name=group1 ====> 此台storage server所属的服务器组名

# the base path to store data and log files

base_path=/home/storage ====> 放置data和log的目录

# store_path#, based 0, if store_path0 not exists, it‘s value is base_path

# the paths must be exist

store_path0=/home/storage ====> 放置文件的目录

# tracker_server can ocur more than once, and tracker_server format is

#  "host:port", host can be hostname or ip address

tracker_server=192.168.3.220:22122 ====> tracker server的ip和端口,此处可以写多个tracker server,每行一个

#HTTP settings

http.disabled=true    ====> 关闭内置的web server

# the port of the web server on this storage server

http.server_port=80    ====> web server的端口改成80

[[email protected]storage]# cp /root/fastdfs-nginx-module/mod_fastdfs.conf /etc/fdfs/

[[email protected]storage]# vi /etc/fdfs/mod_fastdfs.conf

# the base path to store log files

base_path=/home/storage ====> 放置log的目录

# FastDFS tracker_server can ocur more than once, and tracker_server format is

#  "host:port", host can be hostname or ip address

tracker_server=192.168.3.220:22122 ====> tracker server的ip和端口,此处可以写多个tracker server,每行一个

# the group name of storage server

group_name=group1 ====> 此台storage server所属的服务器组名

# if uri including group name

# default value is false

url_have_group_name = true ====> 在URL中包含group名称

# store_path#, based 0, if store_path0 not exists, it‘s value is base_path

# the paths must be exist

store_path0=/home/storage ====> 放置文件的目录

[[email protected]storage]# mkdir -p /home/storage

在nginx的server配置段中增加M00的location声明

[[email protected]storage]# vi /usr/local/nginx/conf/nginx.conf

location /group1/M00 {

root /home/storage/data;

ngx_fastdfs_module;

}

创建M00目录的软连接

[[email protected]storage]# ln -s /home/storage/data  /home/storage/data/M00

启动storage服务

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

启动nginx

[[email protected]tracker]#  /usr/local/nginx/sbin/nginx

确认8080,22122端口已经监听

[[email protected]storage]# netstat -nl|grep -E ‘80|23000‘

tcp        0      0 0.0.0.0:23000               0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:80                0.0.0.0:*                   LISTEN

5.在tracker上的操作[作为client测试]

修改/etc/fdfs/client.conf文件,主要修改以下几处,如有其他调整,可参考文档自行调整,默认的配置也可以工作。

# the base path to store log files

base_path=/tmp

# tracker_server can ocur more than once, and tracker_server format is

#  "host:port", host can be hostname or ip address

tracker_server=192.168.3.220:22122

创建一个用于测试的文件demofile.txt

[[email protected]tracker]# vi demofile.txt
    内容就一行字:  dddddddddd

使用自带的fdfs_test上传文件测试。

[[email protected]tracker]# /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload demofile.txt

This is FastDFS client test program v3.05

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General

Public License V3, which may be found in the FastDFS source kit.

Please visit the FastDFS Home Page http://www.csource.org/

for more detail.

[2012-01-20 14:36:04] INFO - base_path=/tmp, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0

tracker_query_storage_store_list_without_group:

server 1. group_name=group1, ip_addr=192.168.3.226, port=23000

group_name=group1, ip_addr=192.168.3.226, port=23000

storage_upload_by_filename

group_name=group1, remote_filename=M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484.txt

source ip address: 192.168.3.226

file timestamp=2012-01-20 14:36:04

file size=11

file crc32=2037505305

file url: http://192.168.3.220:8080/group1/M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484.txt

storage_upload_slave_by_filename

group_name=group1, remote_filename=M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484_big.txt

source ip address: 192.168.3.226

file timestamp=2012-01-20 14:36:04

file size=11

file crc32=2037505305

file url: http://192.168.3.220:8080/group1/M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484_big.txt

6.使用浏览器打开上传的文件

我们在浏览器中输入http://192.168.3.220:8080/group1/M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484.txt

可以看到,访问的地址已经被redirect到了storage server的IP(192.168.3.226)了。

时间: 2024-10-09 00:24:01

FastDFS、nginx配置手记的相关文章

Centos7单台服务器搭建FastDFS+Nginx

Fastdfs+Nginx配置操作 单台配置 安装包下载: wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz wget https://github

FastDFS + Nginx 反向代理缓存 安装与配置

FastDFS + Nginx 反向代理缓存 安装与配置 作者:斯巴达克斯 时间:March 26, 2015 分类:存储 操作系统 CentOS release 6.5 (Final) 64 nginx相关软件 nginx-1.4.7 下载地址: http://nginx.org/en/download.html#nginx清除缓存模块 ngx_cache_purge-2.1 http://labs.frickle.com/nginx_ngx_cache_purge/pcre-8.36 ftp

FastDFS+Nginx安装配置

FastDFS+Nginx安装配置 1.系统环境 最小化安装的RedHat 6.4 fastdfs版本:FastDFS_v3.06.tar.gz nginx版本:nginx-1.0.11.tar.gz fastdfs-nginx-module版本:fastdfs-nginx-module_v1.10.tar.gz tracker1:192.168.199.126 tracker2:192.168.199.127 storage1:192.168.199.128 storage2: 192.168

FastDFS+nginx安装与配置

FastDFS 是一个由 C 语言实现的开源轻量级分布式文件系统 环境 centos7安装gcc yum install gcc-c++ -y 2.libeventyum -y install libevent如果没有perl库,需要使用yum install perl* 命令安装一下yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel pe

FastDFS+Nginx问题及修复

FastDFS+nginx问题及修复:     1.[error] 30000#0: *1 open() "/usr/local/nginx/html/group1/M00/00 /00/wKgAA1cLh12AI0kfAAAADzbdjmQ50_big.html           "failed (2: No such file or directory), client: 192.168.0.181, server:localhost, request:            &

FastDFS + Nginx module

前言 新项目使用FastDFS 已经有一段时间了,最近又与Nginx 做了结合.趁有时间,做下整理. 需求 使用FastDFS 存储资源(图片.文档.音频.视频...)文件,使用Nginx 提供资源请求服务. PS:FastDFS特别适合大中型网站使用,所以这里选型时一定要注意.不是说小型不适用,而是一定要想清楚,是否一上来就有必要使用DFS这类应用.对于中小型网站,使用本地文件系统.NFS或Samba,就可以很好的解决此类需求. 网站的架构是随着业务增长而演变的,而非一蹴而就. 具体还是需要根

FastDFS + Nginx实现基于CentOS7平台的分布式文件存储与访问

相比较于MogileFS,FastDFS同样有tracker和storage这样的功能分类.但是FastDFS的tracker节点的元数据信息是由各个storage节点通过tcp协议上报得到的,因此在一定程度上减轻了tracker的负载压力.storage节点以group为单位进行组织.任何一个storage server都应该属于某个group,一个group应该包含多个storage server:在同一个group内部,各storage server的数据互相冗余. 本文通过构建FastD

Nginx 配置 fastdfs-nginx-module 模块

上篇介绍了FastDFS的安装,这里主要是给NG安装fastdfs-nginx-module 模块,来完成FastDFS的上传与下载 安装 Nginx 和 fastdfs-nginx-module [[email protected] softwares]#wget -c https://nginx.org/download/nginx-1.10.1.tar.gz fastdfs-nginx-module 直接用附件中的,网上下载的貌似有很多很问题   [[email protected] so

FastDFS+Nginx(单点部署)事例

FastDFS是由淘宝的余庆先生所开发,是一个轻量级.高性能的开源分布式文件系统,用纯C语言开发,包括文件存储.文件同步.文件访问(上传.下载).存取负载均衡.在线扩容.相同内容只存储一份等功能,适合有大容量存储需求的应用或系统.做分布式系统开发时,其中要解决的一个问题就是图片.音视频.文件共享的问题,分布式文件系统正好可以解决这个需求.同类的分布式文件系统有谷歌的GFS.HDFS(Hadoop).TFS(淘宝)等. 源码开放下载地址:https://github.com/happyfish10