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       # 给予执行权限
        
    

  • 相关阅读:
    1.4.2.3. SETUP(Core Data 应用程序实践指南)
    1.4.2.2. PATHS(Core Data 应用程序实践指南)
    1.4.2.1. FILES(Core Data 应用程序实践指南)
    1.4.2. 实现 Core Data Helper 类(Core Data 应用程序实践指南)
    1.4.1. Core Data Helper 简介(Core Data 应用程序实践指南)
    1.4. 为现有的应用程序添加 Core Data 支持(Core Data 应用程序实践指南)
    1.3.2. App Icon 和 Launch Image(Core Data 应用程序实践指南)
    1.3.1. 新建Xcode项目并设置故事板(Core Data 应用程序实践指南)
    php验证邮箱是否合法
    如何使js函数异步执行
  • 原文地址:https://www.cnblogs.com/SR-Program/p/13268479.html
Copyright © 2011-2022 走看看