1、源码开放下载地址:https://github.com/happyfish100

早期源码开放下载地址:https://sourceforge.net/projects/fastdfs/files/ 
官网论坛:http://bbs.chinaunix.net/forum-240-1.html

2、系统架构如下

文件上传流程

1、client询问tracker上传到的storage,不需要附加参数; 
2、tracker返回一台可用的storage; 
3、client直接和storage通讯完成文件上传。

文件下载流程

1、client询问tracker下载文件的storage,参数为文件标识(组名和文件名); 
2、tracker返回一台可用的storage; 
3、client直接和storage通讯完成文件下载。

术语

FastDFS两个主要的角色:Tracker Server 和 Storage Server 
Tracker Server:跟踪服务器,主要负责调度storage节点与client通信,在访问上起负载均衡的作用,和记录storage节点的运行状态,是连接client和storage节点的枢纽。 
Storage Server:存储服务器,保存文件和文件的meta data(元数据) 
Group:文件组,也可以称为卷。同组内服务器上的文件是完全相同的,做集群时往往一个组会有多台服务器,上传一个文件到同组内的一台机器上后,FastDFS会将该文件即时同步到同组内的其它所有机器上,起到备份的作用。 
meta data:文件相关属性,键值对(Key Value Pair)方式,如:width=1024, height=768。

安装包: 
FastDFS_v5.08.tar.gz:FastDFS源码 
libfastcommon-master.zip:(从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库) 
fastdfs-nginx-module-master.zip:storage节点http服务nginx模块 
nginx-1.10.0.tar.gz:Nginx安装包 
ngx_cache_purge-2.3.tar.gz:图片缓存清除Nginx模块(集群环境会用到)

环境规划如下   centos6.8系统

192.168.184.129   tracker+storage

192.168.184.130   tracker+storage

192.168.184.128   storage

所有tracker+storage节点操作

yum install make cmake gcc gcc-c++

安装libfastcommon
cd /server/tools
unzip libfastcommon-master.zip
cd libfastcommon-master
## 编译、安装
./make.sh
./make.sh install 安装fastdfs
cd /usr/local/src
tar -xzvf FastDFS_v5.08.tar.gz
cd FastDFS
./make.sh
./make.sh install 配置tracker服务器
 cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
vim /etc/fdfs/tracker.conf
# 修改的内容如下:
disabled=false # 启用配置文件
port=22122 # tracker服务器端口(默认22122)
base_path=/fastdfs/tracker # 存储日志和数据的根目录
mkdir -p /fastdfs/tracker
 /etc/init.d/fdfs_trackerd start

配置storage服务器

 cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
vi /etc/fdfs/storage.conf

# 修改的内容如下:
disabled=false # 启用配置文件
port=23000 # storage服务端口
base_path=/fastdfs/storage # 数据和日志文件存储根目录
store_path0=/fastdfs/storage # 第一个存储目录
tracker_server=ip01:22122 # tracker服务器IP和端口
http.server_port=8888 # http访问文件的端口
mkdir -p /fastdfs/storage

/etc/init.d/fdfs_storaged start

初次启动,会在/fastdfs/storage目录下生成logs、data两个目录。

文件上传测试

cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
vim /etc/fdfs/client.conf
# 修改以下配置,其它保持默认
base_path=/fastdfs/tracker
tracker_server=ip01:22122

[root@test02 ~]#
[root@test02 ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf 0.jpg
group1/M00/00/00/wKi4gVsHdDeADS_oAACTVCrH_oM617.jpg

返回文件id  group1/M00/00/00/wKi4gVsHdDeADS_oAACTVCrH_oM617.jpg  说明上传成功

在所有storage节点上面安装  fastdfs-nginx-module

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

cd /server/tools
tar -xzvf fastdfs-nginx-module_v1.16.tar.gz
 cd fastdfs-nginx-module/src
vi config

CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"

修改为:

CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

安装nginx

useradd -s /sbin/nologin -M nginx

./configure --prefix=/application/nginx-1.10.0 --user=nginx --group=nginx --add-module=/server/tools/fastdfs-nginx-module/src/ --add-module=/server/tools/ngx_cache_purge-2.3 --with-http_stub_status_module --with-http_ssl_module

make && make install

复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录,并修改

cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

vi /etc/fdfs/mod_fastdfs.conf

connect_timeout=10

     base_path=/tmp
     tracker_server=ip01:22122
     storage_server_port=23000
     group_name=group1
     url_have_group_name = true
     store_path0=/fastdfs/storage
 
 
cd /server/tools/FastDFS/conf

cp http.conf mime.types /etc/fdfs/

在/fastdfs/storage 文件存储目录下创建软连接,将其链接到实际存放数据的目录

ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00

配置nginx

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

listen 8888;

server_name localhost;

location ~/group([0-9])/M00 {

ngx_fastdfs_module;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

}

A、8888 端口值是要与/etc/fdfs/storage.conf 中的 http.server_port=8888 相对应, 因为 http.server_port 默认为 8888,如果想改成 80,则要对应修改过来。
 B、Storage 对应有多个 group 的情况下,访问路径带 group 名,如/group1/M00/00/00/xxx, 对应的 Nginx 配置为:

     location ~/group([0-9])/M00 {
ngx_fastdfs_module;
} 通过浏览器访问 测试
http://192.168.184.129:8888/group1/M00/00/00/wKi4gFsHczWACyrMAAQFTByqKqE017.jpg
http://192.168.184.130:8888/group1/M00/00/00/wKi4gFsHczWACyrMAAQFTByqKqE017.jpg

访问出现一样的结果,说明集群正常

												

分布式文件系统FastDFS集群部署的更多相关文章

  1. FastDFS集群部署

    之前介绍过关于FastDFS单机部署,详见博文:FastDFS+Nginx(单点部署)事例 下面来玩下FastDFS集群部署,实现高可用(HA) 服务器规划: 跟踪服务器1[主机](Tracker S ...

  2. FastDFS集群部署(转载 写的比较好)

    FastDFS集群部署   之前介绍过关于FastDFS单机部署,详见博文:FastDFS+Nginx(单点部署)事例 下面来玩下FastDFS集群部署,实现高可用(HA) 服务器规划: 跟踪服务器1 ...

  3. 分布式FastDFS集群部署

    FastDFS FastDFS的作者余庆在其 GitHub 上是这样描述的:"FastDFS is an open source high performance distributed f ...

  4. Fastdfs集群部署以及基本操作

    FastDFS引言 本地存储与分布式文件系统 本地存储的缺点: 是否有备份? 没有 成本角度? 贵 ​ 服务器 :用于计算 ---- cpu/内存 ​ 用于存储 ---- 硬盘大 存储瓶颈? 容量有限 ...

  5. Linux安装fastdfs集群部署

    过程问题: make: gcc:命令未找到 解决: yum -y install gcc 一.环境和版本: Linux环境:CentOS 7.6 libfastcommon版本:1.0.39 Fast ...

  6. fastdfs集群安装过程_学习笔记

    最终效果 初始化为6个节点 在/usr/local/software 目录下上传需要用到tar包,分别在各个节点上传 使用scp 将本地software目录复制到其他节点上 73.74为 tracke ...

  7. 关于Linux单机、集群部署FastDFS分布式文件系统的步骤。

    集群部署:2台tarcker服务器,2台storage服务器. 192.168.201.86   ---------(trackerd+storage+nginx) 192.168.201.87   ...

  8. FastDfs集群docker化部署

    初识分布式文件系统FastDFS- 1.分布式与集群的区别 区别:集群是个物理形态,分布式是个工作方式.只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道:一个程序或系统,只要运行 ...

  9. Dubbo+zookeeper构建高可用分布式集群(二)-集群部署

    在Dubbo+zookeeper构建高可用分布式集群(一)-单机部署中我们讲了如何单机部署.但没有将如何配置微服务.下面分别介绍单机与集群微服务如何配置注册中心. Zookeeper单机配置:方式一. ...

随机推荐

  1. Java设计模式学习——设计原则

    第一章 设计原则 1.开闭原则 一个软件实体,像类,模块,函数应该对扩展开放,对修改关闭 在设计的时候,要时刻考虑,让这个类尽量的好,写好了就不要去修改.如果有新的需求来,在增加一个类就完事了,原来的 ...

  2. 牛客小白月赛5 F 圆(circle) 【欧拉定理】

    题目连接: https://www.nowcoder.com/acm/contest/135/F 签到题来了,送你们一个Python秒的题. Apojacsleam来到了OI大陆,经过了连年征战,成为 ...

  3. PHP namespace、abstract、interface、trait使用介绍

    小菜鸟一枚,一直搞不懂 namespace.abstract.interface.trait 这些关系,就抽出几天时间研究,做个总结,不足之处希望大家指正交流. namespace 命名空间 介绍:顾 ...

  4. PHP导出成PDF功能开发教程

    准备工作 首先查询了相关的类库,有FPDF,zendPDF,TcPDF等等.首先看了下先选择了FPDF,可以说除了中文字符以外没有什么问题,中文乱码而且看了下最新版本没有很好的解决方案,所以只能放弃. ...

  5. php面向对象(2)构造和析构函数

    一.构造方法 构造方法是类中一个“特殊”的方法,作用是在实例化一个对象的同时,给该对象的属性赋值,使之创建完成的时就具有其本身的特有属性 该方法固定格式:[访问修饰符] function _const ...

  6. java 调用第三方系统时的连接代码-记录

    前言:该文章主要是总结我在实际工作中遇到的问题,在调取第三方系统的时候出现的问题,算自己的总结.各位博友如果有什么建议或意见欢迎留言指正. 先将准备传入参数 再与第三方系统建立连接 再第三方系统处理后 ...

  7. stm32 flash和sram

    FLASH是用来存储程序的,SRAM是用来存储程序运行中的中间变量

  8. poj 23565-Find a multiple

    Find a multiple The input contains N natural (i.e. positive integer) numbers ( N <= 10000 ). Each ...

  9. 按位与&、或|、异或^等运算方法

    (转载) 按位与运算符(&) 参加运算的两个数据,按二进制位进行“与”运算. 运算规则:0&0=0;   0&1=0;    1&0=0;     1&1=1; ...

  10. Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;

    Unable to execute dex: Multiple dex files define Lcom/myapp/R$array; 我这个问题最后解决方式是,吧工程里面用同一个v4包. 很明显, ...