zoukankan      html  css  js  c++  java
  • fastDFS

    fastDFS介绍

      fastDFS是一款开源分布式文件系统,它用纯C语言实现,支持linuxfreeBSDAIXunix系统;

      作者为淘宝网的余庆,20087月发布;

      功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等;

      解决的大容量存储和负载均衡的问题;

      特别适合以文件为载体的在线服务,如相册网站、视频网站等

    fastDFS基本概念

      fastDFS服务端有两个角色:

        跟踪器tracker和存储节点storage

        跟踪器:

          主要做调度工作,在访问上起负载均衡的作用  

        存储节点:

          完成文件管理的所有功能,即存储、同步和提供存取接口,同时对文件的元数据进行管理

    fastDFS系统结构

      跟踪器和存储节点都可以由一台多台服务器构成

      跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务

      跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少

    fastDFS采用了分组存储方式

      集群由一个或多个组构成,集群存储总容量为集群中所有的存储容量之和

      一个组由一台或多台存储服务器组成,同组内的多台storage server之间是互备关系,同组存储服务器上的文件是完全一致的

      文件上传、下载、删除等操作可以在组内任意一台storage server上进行

      一个组的存储容量为该组内存储服务器容量最小的那个

      采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组

      一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)

      当系统容量不足时,可以增加组来扩充存储容量(横向扩容)

      不同组的storage server 之间不会相互通信,同组内的storage server之间会相互连接进行文件同步

      torage server采用binlog文件记录文件上传、删除等更新操作

      binlog中只记录文件名,不记录文件内容

      文件同步只在同组内的storage server 之间进行,采用push方式,即源头服务器同步给目标服务器

    fastDFS工作流程

    fastDFS上传文件过程

      client询问tracker上传到的storage,不需要附加参数;

      tracker返回一台可用的storage

      client直接和storage通讯完成文件上传

    fastDFS下载文件过程

      client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);

      tracker返回一台可用的storage

      client直接和storage通讯完成文件下载

    FastDFS官网 --http://bbs.chinaunix.net/forum-240-1.html

    国际网址 --https://sourceforge.net/projects/fastdfs/       

    https://fastdfs.googlecode.com/files/FastDFS_v4.06.tar.gz

    服务器端脚本语言: python php java asp

    客户端脚本语言:   javascript

    meta data 元数据

    FastDFS配置:

    tracker端
    #yum -y install gcc gcc-c++ make libevent
    #rpm -ivh libevent-devel-1.4.13-4.el6.x86_64.rpm
         libevent-doc-1.4.13-4.el6.noarch.rpm
         libevent-headers-1.4.13-4.el6.noarch.rpm
    #tar  -zxvf  FastDFS_v4.06.tar.gz
    #cd FastDFS
    #vim INSTALL
    #./make.sh
    #./make.sh install
    #mkdir -pv /data/fastdfs      //工作目录
    #vim /etc/fdfs/tracker.conf
      22 base_path=/data/fastdfs   //储存路径

      182 use_storage_id = true    //用编号识别设备

      34 store_lookup=2(负载)0(轮询)1(给指定的组)

      40 store_group=group1

      storage_ids_filename = storage_ids.conf

    #vim /etc/fdfs/storage_ids.conf     //加入储存组声明
      100001 group1 192.168.4.103
      100002 group1 192.168.4.104
      100003 group2 192.168.4.105
      100004 group2 192.168.4.106
    #cp init.d/fdfs_trackerd  /etc/init.d
    #chmod +x /etc/init.d/fdfs_trackerd
    #chkconfig --add fdfs_trackerd
    #service fdfs_trackerd start
    #chkconfig fdfs_trackerd on
    #netstat -antup | grep fdfs_trackerd

    storage端
    103,104
    准备存储空间
    #fdisk /dev/vdb
    #mkfs.ext3 /dev/vdb1
    #mount /dev/vdb1 /data1

    #mkdir -pv /data/fastdfs
    #vim /etc/fdfs/storage.conf
      37 base_path=/data/fastdfs

            96 store_path_count=1    //存储空间个数

      100 store_path0=/data1    //挂载目录

      109 tracker_server=192.168.4.93:22122

            9   group_name=group1

    #cp init.d/fdfs_storaged /etc/init.d/
    #chmod +x /etc/init.d/fdfs_storaged
    #chkconfig --add fdfs_storaged
    #service fdfs_storaged start
    #chkconfig fdfs_storaged on

    105,106

    #vim /etc/fdfs/storage.conf

      9   group_naem=group2

    4.254测试
    103:
    #scp /etc/fdfs/client.conf 192.168.4.254:/etc/
    #scp /usr/local/bin/fdfs_download_file 192.168.4.254:/root/bin
    #scp /usr/local/bin/fdfs_test 192.168.4.254:/root/bin
    #scp /usr/local/bin/fdfs_upload_file 192.168.4.254:/root/bin
    #scp /usr/local/bin/fdfs_delete_file 192.168.4.254:/root/bin

    254:
    #mkdir /root/bin
    #vim /etc/client.conf
    10 base_path=/data1/fastdfs
    14 tracker_server=192.168.4.93:22122
    #mkdir -pv /data1/fastdfs

    上传本地文件到储存服务器
    #fdfs_test(显示访问过程) /etc/client.conf upload(上传) /etc/passwd
    #fdfs_upload_file(上传) /etc/client.conf /etc/hosts

    下载储存服务器文件到本地
    #fdfs_download_file /etc/client.conf group1/M00/00/00/wKgEZ1oE33eAOq1PAAAJn0_HK2c7871198 plj.txt


    配置web访问
    103,104
    #useradd -s /sbin/nologin nginx
    #groupadd nginx
    #yum -y install pcre-devel zlib-devel
    #tar xf fastdfs-nginx-module_v1.16.tar.gz
    #ls fastdfs-nginx-module/src/
    #tar xf nginx-1.7.10.tar.gz
    #cd nginx-1.7.10
    #./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --add-module=../fastdfs-nginx-module/src/
    #make
    #make install
    #cp fastdfs-nginx-module/src/mod_fastdfs.conf     /etc/fdfs
    #vim /usr/local/nginx/conf/nginx.conf
    43 location / {
    44 # root html;
    45 #index index.html index.htm;
    46 ngx_fastdfs_module;
    47 }

    #vim /etc/fdfs/mod_fastdfs.conf
    40 tracker_server=192.168.4.93:22122
    53 url_have_group_name = true
    62 store_path0=/data1

    #/etc/init.d/fdfs_storaged restart
    #/usr/local/nginx/sbin/nginx
    #netstat -antup |grep fdfs_storaged
    #netstat -antup | grep nginx

    同组存储服务器参数

    103,104,105,106

    vim /etc/fdfs/storage.conf
    145 file_distribute_rotate_count=100 //当同组1台服务器接受了100个数据后轮询到第2台服务器
    85 sync_start_time=00:00 //开始推送时间
    89 sync_end_time=23:59 //结束推送时间

  • 相关阅读:
    聊聊ES6中的generator
    generator-yield到底是个啥
    jquery 常用方法中那些我不知道的事
    jquery 获取textarea文本值详解
    数组去重
    五指棋人机大战之ai篇
    五指棋人机大战之ui篇
    css控制背景图像不随滚动条的滚动而滚动
    用canvas画会旋转的伞
    CSS3 实现太极图案
  • 原文地址:https://www.cnblogs.com/wwchihiro/p/9243386.html
Copyright © 2011-2022 走看看