码迷,mamicode.com
首页 > 其他好文 > 详细

FastDFS

时间:2017-12-12 21:53:16      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:gpo   编辑   文件下载   删除   tor   操作   moni   nginx   inf   

FastDFS简介

FastDFS是一个开源的高性能分布式文件系统,它的主要功能包括文件存储,文件上传和文件下载,解决高容量和负载均衡问题。FastDFS应该满足基于照片共享站点和视频共享站点等文件服务的网站的要求。

支持存储服务器在线扩容,支持相同的文件只保存一份,节约磁盘。
FastDFS只能通过Client API访问,不支持POSIX访问方式。
FastDFS适合中大型网站使用,用来存储资源文件(如:图片、文档、视频等)

 

FastDFS有两个角色

tracker server(跟踪器):跟踪器负责文件访问的调度和负载平衡

storage server(存储器):存储器负责文件管理,包括文件存储,文件同步,文件提供存取接口它还管理作为表示文件的键值对的属性的元数据

跟踪器和存储包含一个或多个服务器。跟踪器或存储群集中的服务器可随时添加到群集或从群集中删除,而不影响在线服务。跟踪器集群中的服务器是对等的

由文件卷/组织组织的存储服务器获得高容量。存储系统包含一个或多个文件在这些卷中独立的卷。整个存储系统的容量等于所有容量的总和。文件卷包含一个或多个在这些服务器中文件相同的存储服务器。文件卷中的服务器相互备份,所有这些服务器都是负载均衡。将存储服务器添加到卷时,将自动将此卷中已有的文件复制到此新服务器,并且在完成此复制时,系统会将此服务器联机切换到提供存储服务

技术分享图片

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

 

安装配置FastDFS

yum groupinstall "Development Tools" "Server platform Development"
mkdir /home/heboan/tools

下载并安装FastDFS依赖包libfastcommon

cd /home/heboan/tools
git clone https://github.com/happyfish100/libfastcommon.git
cd libfastcommon/
./make.sh
./make.sh install

下载安装FastDFS

下载安装FastDFS
cd /home/heboan/tools
git clone https://github.com/happyfish100/fastdfs.git
cd fastdfs/
./make.sh 
./make.sh install

注意:这里我把tracker和storage服务器安装在同一台机,如果安装在不同的机器上都要执行以上操作

配置tracker server(跟踪服务器)

1)、复制tracker server和client端样例文件并重命名
    cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
    cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
2)、编辑tracker server配置文件tracker.conf,需要修改的内容如下:
    disabled=false
    port=22122
    base_path=/data/fdfs/tracker
3)、编辑client端的配置文件client.conf,需要修改的内容如下:
    base_path=/data/fdfs/client
    tracker_server=192.168.88.1:22122
4)、创建tracker server数据目录
    mkdir -p /data/fdfs/tracker
5)、启动tracker server
    /etc/init.d/fdfs_trackerd start
    netstat -lntp|grep 22122

配置storage server(存储服务器)

1)、复制storage server样例配置文件并重命名
    cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
2)、编辑storage server配置文件storage.conf,需要修改的内容如下:
    disabled=false
    port=23000
    base_path=/data/fdfs/storage
    tracker_server=192.168.88.1:22122
    store_path0=/data/fdfs/storage
    http.server_port=8888     #默认为8888,nginx中配置的监听端口那之一致
3)、创建storage server数据目录
    mkdir -p /data/fdfs/storage
4)、启动storage server,启动成功会自动在/data/fdfs/tracker目录新建data和logs目录
    #启动storage server的前提是tracker server必须事先已启动
    /etc/init.d/fdfs_storaged start
    netstat -lntp|grep 23000

文件上传/查看/下载测试

文件上传/查看/下载测试
    # fdfs_upload_file /etc/fdfs/client.conf /home/heboan/win8.png
    group1/M00/00/00/wKhYAVoumUyALZFGAATNsxTPz7I070.png  #返回文件ID说明文件已经上传成功
    
    # fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKhYAVoumUyALZFGAATNsxTPz7I070.png
    source storage id: 0
    source ip address: 192.168.88.1
    file create timestamp: 2017-12-11 22:42:20
    file size: 314803
    file crc32: 349163442 (0x14CFCFB2)
    
    # fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKhYAVoumUyALZFGAATNsxTPz7I070.png /tmp/win8.jpg

查看存储节点状态

fdfs_monitor /etc/fdfs/client.conf

####配置nginx为storage server提供http访问接口####

下载fastdfs-nginx-module

cd /home/heboan/tools
git clone https://github.com/happyfish100/fastdfs-nginx-module.git

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

# cp /home/heboan/tools/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
# vim /etc/fdfs/mod_fastdfs.conf   修改内容如下
    connect_timeout=10
    base_path=/tmp
    tracker_server=192.168.88.1:22122
    storage_server_port=23000
    url_have_group_name = true
    store_path0=/data/fdfs/storage
    group_name=group

下载nginx源码,并编译支持FastDFS

yum install openssl-devel pcre-devl
cd /home/heboan/tools
useradd -r nginx
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar xf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure --prefix=/opt/nginx-1.12.2 --user=nginx --group=nginx --add-module=../fastdfs-nginx-module/src/
make && make install
ln -s /opt/nginx-1.12.2 /opt/nginx

复制FastDFS中的部分配置文件到/etc/fdfs目录中

cp /home/tools/fastdfs/conf/http.conf /etc/fdfs/
cp /home/tools/fastdfs/conf/mime.types /etc/fdfs/

做软链接

ln -s  /data/fdfs/storage/data   /data/fdfs/storage/data/M00

配置nginx

vim /opt/nginx/conf/nginx.conf
    ...
    server {
        listen       8888;  #888端口号与/etc/fdfs/storage.conf中的http.server_port=8888相对应
        server_name  localhost;
        location ~/group[0-9]/ {
            ngx_fastdfs_module;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        root   html;
        }
    }

启动nginx,通过浏览器访问之前已经上传的文件

/opt/nginx/sbin/nginx -t
/opt/nginx/sbin/nginx
访问http://192.168.88.1:8888/group1/M00/00/00/wKhYAVoumUyALZFGAATNsxTPz7I070.png

 

集群模式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

FastDFS

标签:gpo   编辑   文件下载   删除   tor   操作   moni   nginx   inf   

原文地址:http://www.cnblogs.com/sellsa/p/8029061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!