zoukankan      html  css  js  c++  java
  • Linux之Fastdfs

    Fastdfs

    简介

    • FastDFS 是用 c 语言编写的一款开源的分布式文件系统。
    • FastDFS 为互联网量身定制, 充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标
    • 使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

    架构

    Fastdfs由两部件组成

    Tracker server

    • 其主要用来做负载均衡以及调度
    • 客户端通过Tracker server的策略找到Storage server进行文件的上传下载

    Storage server

    • 客户端通过Tracker server上传的文件最终保存到Storage server中
    • Storage server没有自己的文件系统而是利用操作系统进行文件存储

    服务端角色

    Tracker

    其可以组件集群用来检测 每个Tracker节点地位平等 通过Tracker检测Storage节点状态

    Storage

    Storage之间可以组件集群 集群可以分多个组 每个组之间的信息不同 但是组内成员的信息相同 组成员地位一致无主从概念之分

    Fastdfs交互信息

    上传文件

    • 客户端上传文件给服务器之后 服务器返回一个ID给客户端 客户端通过ID中的文件索引来访问存储在服务端的数据
    • 文件索引:组号 虚拟磁盘路径 数据两级目录 文件名
    组名:文件上传后所在的 storage 组名称,在文件上传成功后有 storage 服务器返回, 需要客户端自行保存。 
    虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项 store_path*对应。如果配置了 store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推。 
    数据两级目录:storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据 文件。 
    文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储 服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。 
    

    文件下载

    • 客户端通过tracker端返回的storage的IP去寻找storage
    • 通过生成的ID去向服务端进行文件查找
    • 服务端通过ID返回对应的数据

    Fastdfs配置

    依赖包下载

    [root@SR~]# wget -c http://nginx.org/download/nginx-1.17.7.tar.gz  # 下载nginx
    
    [root@SR~]#  wget -c "https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz" -O fastdfs-6.06.tar.gz # 下载fastdfs
    
    [root@SR~]#  wget -c "https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz" -O fastdfs-nginx-module-1.22.tar.gz # 下载 fastdfs-nginx-module
    
    [root@SR~]#  wget -c "https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz" -O libfastcommon-1.0.43.tar.gz  # 下载 libfastcommon
     
    [root@SR ~]# yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel  # 下载编译包
    

    解压

    [root@SR ~]# tar -xf fastdfs-6.06.tar.gz
    [root@SR ~]# tar -xf fastdfs-nginx-module-1.22.tar.gz
    [root@SR ~]# tar -xf libfastcommon-1.0.43.tar.gz
    [root@SR ~]# tar -xf nginx-1.17.7.tar.gz
    

    编译安装libfastcommon

    [root@SR ~]# cd libfastcommon-1.0.43/
    [root@SR libfastcommon-1.0.43]# ./make.sh && ./make.sh install # 编译安装
    [root@SR libfastcommon-1.0.43]# ls /usr/lib64/ | grep libfastcommon      # 检测安装是否成功
    
    [root@SR libfastcommon-1.0.43]# ls /usr/lib/ | grep libfastcommon
    
    

    配置fastdfs

    编译安装

    
    [root@SR fastdfs-6.06]# cd fastdfs-6.06/
    
    [root@SR fastdfs-6.06]# ./make.sh && ./make.sh install
    
    [root@SR fastdfs-6.06]# ls /usr/bin|grep fdfs
    

    启用配置文件

    [root@SR fdfs]# cd /etc/fdfs/      # 切换到fdfs目录
    # 配置文件做备份
    [root@SR fdfs]# cp client.conf.sample client.conf
    [root@SR fdfs]# cp storage.conf.sample storage.conf
    [root@SR fdfs]# cp tracker.conf.sample tracker.conf
    

    修改tracker.conf配置文件

    [root@SR fdfs]# mkdir -p /usr/bin/python3.6/fastdfs/tracker
    [root@SR fdfs]# vim tracker.conf
          base_path=/usr/bin/python3.6/fastdfs/tracker      # 修改该目录为上述对应tracker目录
    

    启动tracker

    [root@SR fdfs]# /etc/init.d/fdfs_trackerd start      # 启动服务
    
    [root@SR fdfs]# ps -ef|grep fdfs      # 检测启动状态
    

    修改storage.conf配置文件

    
    [root@SR fdfs]# mkdir -p /usr/bin/python3.6/fastdfs/storage
    
    [root@SR fdfs]# vim storage.conf
          base_path=/usr/bin/python3.6/fastdfs/storage
          store_path0=/usr/bin/python3.6/fastdfs/storage
          tracker_server=192.168.1.104:22122
    

    启动storage

    [root@SR fdfs]# /etc/init.d/fdfs_storaged start
    
    [root@SR fdfs]# ps -ef | grep fdfs
    

    修改client.conf配置文件

    [root@SR fdfs]# vim client.conf
          base_path=/usr/bin/python3.6/fastdfs/tracker      
          tracker_server=192.168.1.104:22122
    

    使用方式

    [root@SR ~]# fdfs_upload_file /etc/fdfs/client.conf /root/springboot.jpg
    

    nginx

    安装依赖包

    [root@SR ~]# yum -y install pcre pcre-devel
    

    添加模块

    [root@SR ~]# cd nginx-1.17.7/
    [root@SR nginx-1.17.7]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module
    

    fastdfs-nginx-module-1.22配置

    [root@SR ~]# cd /root/fastdfs-nginx-module-1.22/src/
    [root@SR src]# cp config config.bak      #备份配置问
    

    修改配置文件

    [root@SR src]# vim config
          :%s+/usr/local+/usr      # 将config文件中的/usr/local替换成/usr
    

    nginx添加模块

    [root@SR nginx-1.17.7]# ./configure --add-module=/root/fastdfs-nginx-module-1.22/src/   # fastdfs-nginx-module-1.22/src 中src所在的路径
    [root@SR nginx-1.17.7]#  make && make install      # 编译安装
    

    修改fastdfs-ngin-module中的配置文件

    [root@SR nginx-1.17.7]# cp /root/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/
    [root@SR nginx-1.17.7]# vim /etc/fdfs/mod_fastdfs.conf
          connect_timeout=10
          tracker_server=192.168.1.104:22122
          url_have_group_name = true
          store_path0=/usr/bin/python3.6/fastdfs/storage
    

    复制fastdfd

    [root@SR ~]#  cp /root/fastdfs-6.06/conf/http.conf /etc/fdfs/
    [root@SR ~]#  cp /root/fastdfs-6.06/conf/mime.types /etc/fdfs/
    

    修改nginx配置文件

    [root@SR fdfs]# cd /usr/local/nginx/conf/
    
    [root@SR conf]# cp nginx.conf nginx.conf.bak      # 备份配置文件
    
    [root@SR conf]# vim nginx.conf      # 修改配置文件
    
    server {
        listen       80;
        server_name  192.168.1.104;
        location ~/group([0-9]) {
                root  /fastdfs/storage/data;
                ngx_fastdfs_module;
        }
    }
    [root@SR ~]# /usr/local/nginx/sbin/nginx      # 启动nginx
    

    设置开机启动服务

    [root@SR fdfs]# vim /etc/rc.d/rc.local
    
          /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart      
          /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
          /usr/local/nginx/sbin/nginx
    [root@SR ~]# chmod +x /etc/rc.d/rc.local       # 给予执行权限
        
    

  • 相关阅读:
    编程语言的精髓
    进销存-库存表-算法
    JAVA 将JSON数组转化成JAVA数组
    使input文本框不可编辑的3种方法
    如何让一个DIV固定在另一个DIV的底部
    错误笔记既 onclick()事件写方法传jstl表达式作为变量
    错误笔记
    SQL查询语句左连接
    查已有表的建表语句
    使用(文件上传域)MultipartFile接受文件时的判空方式
  • 原文地址:https://www.cnblogs.com/SR-Program/p/13268479.html
Copyright © 2011-2022 走看看