zoukankan      html  css  js  c++  java
  • 简单搭建FastDFS分布式文件系统(简单易懂)

    一.什么是FastDFS

      FastDFS一个开源的轻量级分布式文件系统,它对文件进行管理,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

    二.工作原理

      FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。

      1.tracke 跟踪器的作用:

        主要做调度工作,在访问上起负载均衡的作用;其中所有的跟踪器服务都是对等平级的,可以根据服务器的压力的大小随时增加或减少。

      2.storage 存储节点的作用:

        完成文件管理的所有功能。(主要用于存储文件,存储完成后会返回一个地址给跟踪器(tracker))

        为了可以支持扩容,跟踪器和存储节点都可以由一台或多台服务器构成。如果访问的压力大,可以多增加跟踪器,如果存储量大,可以增加多个存储节点,同时,可以把同一存储节点进行备份(back-up)。

     系统架构图

    三.安装过程

      1.准备工作

        准备2个不同ip的 linux 操作系统,安装 gcc 环境(fastdfs是C语言开发的,因此需要安装)

      2.安装过程

        ①安装libfastcommon

          解压:  tar -zxvf libfastcommonV1.0.7.tar.gz

          编译: ./make.sh    ./make.sh install

          注意libfastcommon安装好后会自动将文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/local/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/local/lib下。

        ② 建立软连接

          ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so

           ln -s /usr/lib64/libfastcommon.so /usr/lib

           ln -s /usr/lib64/libfdfsclient.so /usr/local/lib

           ln -s /usr/lib64/libfdfsclient.so /usr/lib

          作用: 将原文件复制到指定的路径下,而不占用磁盘空间,并保持原文件的镜像连接不被破坏。

        ③安装FastDFS(共同部分)

          解压:  tar -zxvf FastDFS_v5.05.tar.gz

          编译: ./make.sh    ./make.sh install

        ④修改FastDFS 服务脚本bin

          因为FastDFS服务脚本设置的bin目录为:/usr/local/bin/下,但是实际上安装在了/usr/bin/下面,所以我们需要修改FastDFS配置文件,也就是需要修改2个配置文件

          命令: vim /etc/init.d/fdfs_storaged

          进行全局替换命令: %s+/usr/local/bin+/usr/bin

          命令: vim /etc/init.d/fdfs_trackerd

          进行全局替换命令: %s+/usr/local/bin+/usr/bin

        ⑤ tracker 跟踪器的配置(192.168.25.131节点)

          1.进入 cd /etc/fdfs/ 目录下

          2.复制1tracker

          命令:  cp tracker.conf.sample tracker.conf

          

          3修改tracker.conf的配置

            命令:  vim tracker.conf

             1.修改base_path的路径为: 

              base_path=/fastdfs/tracker      [此目录用于存储tracker的存储信息]

             2.创建之前定义好的文件夹

              命令: mkdir -p /fastdfs/tracker

         启动 tracker 跟踪器

            启动命令: /etc/init.d/fdfs_trackerd start

            停止命令: /etc/init.d/fdfs_trackerd stop

            查看进程:   ps -ef | grep fdfs

          

        ⑦设置开机启动tracker 服务

          一般生产环境需要开机启动一些服务,如keepalivedlinuxtomcat等等

           命令: vim /etc/rc.d/rc.local

           加入配置: /etc/init.d/fdfs_trackerd strat

       

        ⑧ storage 存储器的配置(192.168.25.132节点)

          1.进入 cd /etc/fdfs/ 目录下

           2.复制1storage

             命令:  cp storage.conf.sample storage.conf

            

          

            3修改storage.conf的配置

            命令:  vim storage.conf

              1.配置内容为:

                base_path=/fastdfs/storage

                store_path0=/fastdfs/storage

                tracker_server=192.168.25.131:22122 

                http.server_prot=8888 [这个基本上不用配]

              2.创建之前定义好的文件夹

                命令: mkdir -p /fastdfs/storage

            

            4.打开防火墙

              如果是生产环境,需要打开防火墙

              命令:  vim /etc/sysconfig/iptables

              添加:  -A INPUT -m state NEW -m tcp -p tcp -dport 23000 -j ACCEPT

              重启 service iptables restart

        ⑨启动 storage 存储器

          在启动 storage 之前需要先将 tracker启动,因为 storage 中用到tracke的服务.[注意关掉 tracker中的防火墙]

          启动 tracker 命令:          /etc/init.d/fdfs_trackerd start

          停止 tracker 命令:     /etc/init.d/fdfs_trackerd stop

          启动 storage 命令: /etc/init.d/fdfs_storaged start

          停止 storage 命令:   /etc/init.d/fdfs_storaged stop

          查看进程命令:     ps -ef | grep fdfs

          

    -------------------------------------------------------------------------------------------------------------------------

    至此,我们的FastDFS 环境已经搭建完成

        ⑩创建 client 端进行测试

          Client端可以单独出一个ip来配置,在这里用 tracker 来配置

          1.进入 cd /etc/fdfs/ 目录下

          2.复制1client

            命令: cp client.conf.sample client.conf

          3修改client.conf 的配置

            命令:  vim client.conf

            配置内容为:

              base_path=/fastdfs/tracker

              tracker_server=192.168.25.131:22122

          4.测试上传

             tracker中上传1张照片到 /usr/local/software

            

          5.tracker 中进行上传【记得关掉2边的防火墙

             命令: /usr/bin/fdfs_upload_file /etc/fdfs/client.conf + 要上传文件的路径(/usr/local/software/IMG_20160831_191057.jpg)

            使用fdfs_upload_file 这个命令通过client.conf这个客户端,将这个jpg文件上传到服务器中

            

            如果有返回值: /group1/M00/00/00/wKgZhFo9As2AeSMYABWdflqP_oo764.jpg 说明上传成功

    -------------------------------------------------------------------------------------------------------------------------

    至此,我们的FastDFS 测试已完成

        ⑪FastDFSNginx的整合搭建

          在存储节点上(storage ) 安装fastdfs-nginx-module

          1.解压 fastdfs-nginx-module_v1.16.tar.gz

               命令mkdir -p /usr/local/fast/

                 命令:  tar -zxvf fastdfs-nginx-module_v1.16.tar.gz  -C /usr/local/fast/

          2.进入module的src目录

             命令: cd /usr/local/fast/fastdfs-nginx-module/src

         3.编辑配置文件 config

            命令: vim config

           

            把原先有local的路径给去掉

         ⑫ 安装Nginx

            1.上传解压 nginx

            2.下载所需要的依赖库

                 命令: yum install pcre   yum install pcre-devel

                   命令:  yum install zlib     yum install zlib-devel

             3.进入nginx目录下

                 命令: cd /usr/local/software/nginx-1.8.0/ && ll

                

               加入模块命令:

                ./configure --add-module=/usr/local/fast/fastdfs-nginx-module/src/

                在nginxsrc 中把 module中的命令添加进来

                

               重新编译安装命令:

                make && make install

             

            4.复制 fastdfs-nginx-module 中的配置文件,到 /etc/fdfs 目录中

               命令:  cp /usr/local/fast/fastdfs-nginx-module/src/mod_fastdfs.conf  /etc/fdfs/

               因为启动FastDFS时会用到fastdfs-nginx-module整合包中的命令,所以将它拷贝到启动文件夹下

             5.修改刚才复制过来的文件 mod_fastdfs.conf

              命令: vim /etc/fdfs/mod_fastdfs.conf

              修改内容: 连接超时时间、跟踪器路径配置、url group 配置

                connect_timeout=10

                tracker_server=192.168.25.131:22122

                url_have_group_name=true(这样才可以通过地址栏访问到)

                store_path0=/fastdfs/storage

            6.复制刚才安装FastDfs下的配置文件

              进入命令:cd /usr/local/software/FastDFS/conf && ll

              复制命令:  cp http.conf mime.types /etc/fdfs/

            7.创建软连接

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

               命令:  ln -s /fastdfs/storage/data/  /fastdfs/storage/data/M00

             8.修改nginx的配置文件(这个nginx是加过module 的这个nginx,不是单一的nginx)

              进入命令:   cd /usr/local/nginx/conf  && ll

              修改命令:   vim nginx.conf

                1.修改服务端口号

                

                 因为我们在配置 storagehttp.server_prot=8888 所以要跟这个服务保持一致

                 

              2.修改 location 的匹配规则

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

                  ngx_fastdfs_module;

                }

             

            9.最后检查防火墙,然后我们启动 nginx服务

              启动nginx命令:      /usr/local/nginx/sbin/nginx

              关闭nginx命令: /usr/local/nginx/sbin/nginx -s stop

              重新加载命令:      /usr/local/nginx/sbin/nginx -s reload

              启动成功:

               

            10.查看nginx启动成功

            地址栏: http://192.168.25.132:8888

             

             11.验证上传图片

            1.tracker storaged 2个服务启起来

            2.上传

              上传命令:   /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/software/img.jpg

               

            3.在地址栏进行访问

                 storaged 的地址和返回的group id 拼接,进行访问

                地址:

               192.168.25.132:8888/group1/M00/00/00/wKgZhFo9As2AeSMYABWdflqP_oo764.jpg

               

  • 相关阅读:
    PDOStatement::closeCursor
    PDOStatement::bindValue
    oracle drop table recyclebin恢复
    mysql基准测试工具tpcc-mysql安装、使用、结果解读
    MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集
    [MySQL FAQ]系列 — EXPLAIN结果中哪些信息要引起关注
    [MySQL优化案例]系列 — 优化InnoDB表BLOB列的存储效率
    数据库专业词语
    老叶观点:MySQL开发规范之我见
    [MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键
  • 原文地址:https://www.cnblogs.com/MrRightZhao/p/8169283.html
Copyright © 2011-2022 走看看