一.什么是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.复制1个tracker

      命令:  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 服务

      一般生产环境需要开机启动一些服务,如keepalived、linux、tomcat等等

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

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

  

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

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

      2.复制1个storage

        命令:  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.复制1个client

        命令: 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 测试已完成

    ⑪FastDFS和Nginx的整合搭建

      在存储节点上(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/

            在nginx的src 中把 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.修改服务端口号

            

            因为我们在配置 storage的http.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

          

简单搭建FastDFS分布式文件系统(简单易懂)的更多相关文章

  1. Linux - 搭建FastDFS分布式文件系统

    1. FastDFS简介 说明:FastDFS简介部分的理论知识全部来自于博主bojiangzhou的 <用FastDFS一步步搭建文件管理系统>,在此感谢博主的无私分享.当然最最要感谢的 ...

  2. CentOS 7.2搭建FastDFS 分布式文件系统,实现高可用集群

    分布式集群搭建结构 双Tracker 2组Group 轮询存储策略 Keepalived+Nginx高可用 Nginx缓存 4个存储节点 一. 集群规划清单 1.安装清单 软件名称 版本 百度云盘存放 ...

  3. 基于docker容器搭建fastdfs分布式文件系统

    本次环境的搭建参考了 https://blog.csdn.net/qq_43455410/article/details/84797814, 感谢博主. 主要流程如下: 1. 下载fastdfs镜像 ...

  4. 07.Linux系统-Fastdfs分布式文件系统-互为主从配置搭建部署

    Fastdfs分布式文件系统-互为主从配置部署 1.安装基础依赖 yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl ...

  5. FastDFS分布式文件系统

    FastDFS分布式文件系统 阅读目录 相关文章 1 分布式文件系统介绍 2 系统架构介绍 3 FastDFS性能方案 4 Linux基本命令操作 5 安装VirtualBox虚拟机并配置Ubuntu ...

  6. django中使用FastDFS分布式文件系统接口代码实现文件上传、下载、更新、删除

    运维使用docker部署好之后FastDFS分布式文件系统之后,提供给我接口如下: fastdfs tracker 192.168.1.216 192.168.1.217 storage 192.16 ...

  7. Dubbo入门到精通学习笔记(八):ActiveMQ的安装与使用(单节点)、Redis的安装与使用(单节点)、FastDFS分布式文件系统的安装与使用(单节点)

    文章目录 ActiveMQ的安装与使用(单节点) 安装(单节点) 使用 目录结构 edu-common-parent edu-demo-mqproducer edu-demo-mqconsumer 测 ...

  8. CentOS7 安装FastDFS分布式文件系统

    CentOS7 安装FastDFS分布式文件系统 最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的过程中遇到过很多的问题,为了能帮忙到以后搭建FastDFS的同学,少走弯路,与大家 ...

  9. FastDFS分布式⽂文件系统

    FastDFS分布式⽂文件系统  1. 什么是FastDFS FastDFS 是⽤用 c 语⾔言编写的⼀一款开源的分布式⽂文件系统.FastDFS 为互联⽹网量量身定制, 充分考虑了了冗余备份.负载均 ...

随机推荐

  1. Python并行编程(一):基本概念

    1.线程和进程 进程是应用程序的一个执行实例,比如,在桌面上双击浏览器将会运行一个浏览器.线程是一个控制流程,可以在进程内与其他活跃的线程同时执行.控制流程指的是顺序执行一些机器指令.进程可以包含多个 ...

  2. 使用Custom Draw优雅的实现ListCtrl的重绘

    common control 4.7版本介绍了一个新的特性叫做Custom Draw,这个名字显得模糊不清,让人有点摸不着头脑,而且MSDN里也只给出了一些如风的解释和例子,没有谁告诉你你想知道的,和 ...

  3. Python高级教程-多重继承

    多重继承 继承是面向对象编程的一个重要的方式,因为通过继承,子类可以扩展父类的功能. Animal类的层次设计,假设要实现以下4中动物: Dog - 狗狗: Bat - 蝙蝠: Parrot - 鹦鹉 ...

  4. 更改vim高亮括号匹配颜色

    vim括号匹配高亮显示在vim7.4版本, 默认就是开启的. 但是默认的括号匹配 高亮的颜色是浅蓝色, 在亮瞎眼的同时, 严重影响我们写代码, 最明显的感受 就是, 连续打出一对括号, 接下来不仔细看 ...

  5. lua在线手册汇总

    1. Lua官方参考手册 Lua 4.0 : http://www.lua.org/manual/4.0/Lua 5.0 : http://www.lua.org/manual/5.0/Lua 5.1 ...

  6. HTML5游戏开发系列教程8(译)

    原文地址:http://www.script-tutorials.com/html5-game-development-lesson-8/ 这是我们最新一篇HTML5游戏开发系列文章.我们将继续使用c ...

  7. vue简单demo

    为了学习基础语法,我并没有用vue-cli脚手架来vue init [基于什么类型]  [项目名称]初始化项目,而是直接<script>../vue.js</script> & ...

  8. 【java】使用Builder模式,轻松应对动态繁杂的方法参数

    背景:在咱编写的图片处理模块里,针对加载这个方法,参数很多,如: /** * 加载图片,经过内存.磁盘.两层缓存如果还没找到,则走http访问网络资源 * @param url 地址 * @param ...

  9. C++之旅(第一天)

    基础知识 完全支持C语言 可以在C++引入C的头文件 #include <stdio.h> #include <iostream> int main() { } 输入和输出 C ...

  10. 【Python】闭包 & 匿名函数

    闭包 1.注意:返回的函数内部不要使用后续会发生变化的变量. def f(): gs = [] for k in range(1, 4): def g(i): return i + k gs.appe ...