zoukankan      html  css  js  c++  java
  • fastDFS分布式存储服务器

    1.什么是fastDFS?

      FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
      FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
      FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文 件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。Tracker server 作用是负载均衡和调度,通过 Tracker server 在文件上传时可以根据一些 策略找到 Storage server 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务器。Storage server 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上, Storageserver 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将 storage 称为存储服务器
      

      客户端群:client

      服务器端群:分为 Tracker集群和Storager集群

            Tracker集群:每个 tracker 节点地位平等。收集 Storage 集群的状态。

            Storager集群:实际保存文件 Storage 分为多个组,每个组之间保存的文件是不同的。每 个组内部可以有多个成员,组成员内部保存的内容是一样 的,组成员的地位是一致的,没有 主从的概念。并且扩展容量方便,在Storager后添加卷即可。

      原理:

      1.如果你想上传一张图片,首先client需要请求tracker(可以是一个集群),tracker它会从它管理的storager里取出一个对应的组id(组之间互为备份),告诉client你想上传的文件可以存储到这个组里。

      2.client请求对应的storager id组,storager保存完之后会给client返回一个保存文件的id,此id用于以后访问该文件的索引信息(包括组名、虚拟磁盘路径、数据两级目录、文件名)

      

    2.文件上传过程:

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

    (2)tracker返回一台可用的storage;

    (3)client直接和storage通讯完成文件上传。

    3.文件下载过程:

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


    (2)tracker返回一台可用的storage;

    (3)client直接和storage通讯完成文件下载。

    4.FastDFS的安装:

    准备好依赖包libfastcommon-master.zip跟fastdfs-master.zip安装包

    准备安装包:
    1. zip、unzip:用于压缩和解压zip文件  apt-get install zip unzip

    2.  apt-get install make cmake gcc g++

    4.1 安装fastdfs依赖包

    (1)解压libfastcommon-master.zip    unzip libfastcommon-master.zip

    (2)执行./make.sh

    (3)执行 sudo ./make.sh install

    4.2 安装fastdfs

    (1) 解压缩fastdfs-master.zip      unzip fastdfs-master.zip

    (2)进入到 fastdfs-master目录中

    (3)执行 ./make.sh

    (4)执行 sudo ./make.sh install

    4.3 配置跟踪服务器tracker

    (1)sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

    (2)在/home/python/目录中创建目录 fastdfs/tracker     

      mkdir –p /home/python/fastdfs/tracker

    (3)编辑/etc/fdfs/tracker.conf配置文件    sudo vim /etc/fdfs/tracker.conf

      修改 base_path=/home/python/fastdfs/tracker

      

    4.4 配置存储服务器storage

    (1)sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

    (2)在/home/python/fastdfs/ 目录中创建目录 storage

         mkdir –p /home/python/fastdfs/storage

    3. 编辑/etc/fdfs/storage.conf配置文件  sudo vim /etc/fdfs/storage.conf

    修改内容:

    base_path=/home/python/fastdfs/storage

    store_path0=/home/python/fastdfs/storage

    tracker_server=自己ubuntu虚拟机的ip地址:22122

     

    4.5 启动tracker 和 storage

    sudo service fdfs_trackerd start

    sudo service fdfs_storaged start

    4.6 重启tracker 和 storage

    sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

    sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

    4.7 终止

    sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop

    sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop

    4.8 测试是否安装成功

    (1)sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

    (2)编辑/etc/fdfs/client.conf配置文件  sudo vim /etc/fdfs/client.conf

    修改内容:

    base_path=/home/python/fastdfs/tracker

    tracker_server=自己ubuntu虚拟机的ip地址:22122

    (3)上传文件测试:

    fdfs_upload_file /etc/fdfs/client.conf 要上传的图片文件

    如果返回类似group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg的文件id则说明文件上传成功

    例:

      

    注意:上传文件我们直接上传到fast dfs,但是获取文件时需借助nginx 

    安装Nginx及fastdfs-nginx-nodule

    注意:安装Nginx的机器跟安装fastdfs的机器不是同一台,导致解压、安装路径不一样  (给自己的提醒

    安装nginx需安装这些包:

      (1)GCC——GNU编译器集合:apt-get install gcc 

      (2)PCRE库(Nginx编译需要PCRE(Perl Compatible Regular Expression),因为Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。这里需要安装两个安装包pcre和pcre-devel。

        apt-get install libpcre3 libpcre3-dev

      (3)zlib库(zlib库提供了开发人员的压缩算法,在Nginx的各种模块中需要使用gzip压缩。如同安装PCRE一样,同样需要安装库和它的源代码:zlib和zlib-devel。)

        apt-get install zlib1g zlib1g-dev

      (4)OpenSSL库(在Nginx中,如果服务器提供安全网页时则会用到OpenSSL库,我们需要安装库文件和它的开发安装包(openssl和openssl-devel)。)

        apt-get install openssl openssl-dev

    具体安装步骤:

    1.解压缩:nginx-1.8.1.tar.gz  tar -xvf nginx-1.8.1.tar.gz

    2.解压缩:fastdfs-nginx-module-master.zip    unzip fastdfs-nginx-module-master.zip

    3.进入解压的目录:nginx-1.8.1

     执行命令:sudo ./configure --prefix=/usr/local/nginx/ --add-module=(fastdfs-nginx-module-master.zip解压后的绝对路径/src)   如:/home/my_ubuntu/cc/nginx/fastdfs-ngnix-module-master/src

     sudo ./configure --prefix=/usr/local/nginx/ --add-module=/home/my_ubuntu/cc/nginx/fastdfs-ngnix-module-master/src/

    4.sudo make

     注意:这里可能会报错,不报错请跳过步骤4,

      

      

      解决链接:https://blog.csdn.net/qq_36638599/article/details/79424878

      出错的原因:

        将对应的makefile文件夹中(如本文中在 /nginx-1.8.1/objs/Makefile) 找到 -Werrori 并去掉 在重新make即可查了-Werrori意思之后 发现原来它要求GCC将所有的警告当成错误进行处理 所有导致错误输出 并不能进行下一步。

    5.  sudo make install    报make[1]: Leaving directory '/home/***/nginx/nginx-1.8.1' 错, 不用管它。

    6.  配置fastdfs-nginx-module文件

      sudo cp  /home/my_ubuntu/cc/nginx/fastdfs-ngnix-module-master/src/mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf

      sudo vim /etc/fdfs/mod_fastdfs.conf

      修改内容为 

      connect_timeout=10

      tracker_server=自己ubuntu虚拟机的ip地址:22122

      url_have_group_name=true

      store_path0=/home/python/fastdfs/storage      #起初创建fdfs storage的文件夹路径

      

    7.  sudo cp 安装fastdfs时解压的fastdfs-master/conf/http.conf /etc/fdfs/http.conf

    8.   sudo cp 解压缩目录fastdfs-master/conf/mime.types /etc/fdfs/mime.types

    9.sudo vim /usr/local/nginx/conf/nginx.conf

    在http部分中添加配置信息如下:

    server {

                listen       8888;

                server_name  localhost;

                location ~/group[0-9]/ {

                    ngx_fastdfs_module;

                }

                error_page   500 502 503 504  /50x.html;

                location = /50x.html {

                root   html;

                }

            }

    10. 启动nginx:sudo /usr/local/nginx/sbin/nginx

        重启nginx:sudo /usr/local/nginx/sbin/nginx -s reload

    验证获取图片:

      在浏览器通过url访问服务器nginx上fastdfs文件系统的文件

      

      

  • 相关阅读:
    USACO07FEB银牛派对
    求环总结
    NOIP2015信息传递(拓扑排序 / 并查集)
    APIO2012dispatching (左偏树)
    [编程题]山寨金闪闪 (面试题)
    【小米oj】简单直接全排列
    【小米oj】寻找归一数字
    【小米oj】dreamstart 的催促
    【小米oj】打羽毛球的小爱同学
    【小米oj】石头收藏家
  • 原文地址:https://www.cnblogs.com/c-pyday/p/11149897.html
Copyright © 2011-2022 走看看