zoukankan      html  css  js  c++  java
  • 用一次FastDFS

    FastDFS

    c编写的分布式文件系统,用于搭建文件服务器集群提供文件的上传、下载

    特点

    • 冗余备份
    • 负载均衡
    • 线性扩容
    • 高性能、高可用

    FastDFS架构

    • Tracker server 负载均衡和调度、任务状态跟踪
    • Storage server 文件上传,存储
    • client

    Tracker server and Storage server都可以配置集群 每个节点地位相同 没有主从概念

    FastDFS 安装

    安装FastDFS依赖包

    1. tar -zxvf libfastcommon-master.zip
    2. cd libfastcommon-master
    3. ./make.sh
    4. sudo ./make.sh install

    安装FastDFS

    1. tar -zxvf fastdfs-master.zip
    2. cd fastdfs-master
    3. ./make.sh
    4. sudo ./make.sh install

    配置Tracker Server

    1. sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
    2. 在当前用户的家目录下创建目录fastdfs/tracker
      mkdir -p /home/mark/fastdfs/tracker
      
    3. sudo vim /etc/fdfs/tracker.conf
      base_path=/home/mark/fastdfs/tracker
      

    配置Storage Server

    1. sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
    2. 在当前用户的家目录下创建目录fastdfs/storage
      mkdir -p /home/mark/fastdfs/storage
      
    3. sudo vim /etc/fdfs/storage.conf
      base_path=/home/mark/fastdfs/storage 
      store_path0=/home/mark/fastdfs/storage 
      tracker_server=Tracker Server的IP+端口  默认端口22122
      

    启动Tracker and Storage server

    1. sudo service fdfs_trackerd start
    2. sudo service fdfs_storaged start

    在ubuntu18上源码编译安装不会自动生成systemd文件,上述方法无法启动服务
    可以使用fdfs_trackerd <config file> start的方式启动

    测试

    1. sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
    2. sudo vim /etc/fdfs/client.conf
      base_path=/home/mark/fasdfs/tracker
      tracker_server=Tracker Server的ip+port
      
    3. 上传文件测试
      mark@ocarina:~$ fdfs_upload_file /etc/fdfs/client.conf /home/mark/图片/hack.jpg
      group1/M00/00/00/wKgDDlxFMc2ATakWAACLAixyQHY987.jpg   
      上传文件成功
      

    安装nginx+fastdfs-nginx-module

    nginx服务器在提供静态资源方面性能好,所以将nginx和FastDFS结合
    FastDFS负责上传,下载文件的任务交给nginx服务器

    1. tar -zxvf nginx-1.14.2.tar.gz

    2. cd nginx-1.14.2/

    3. 执行

      mark@ocarina:~/package/nginx-1.14.2$ sudo ./configure --prefix=/usr/local/nginx/   
      --add-module=/home/mark/package/fastdfs-nginx-module-master/src     
      --without-http_rewrite_module    
      --without-http_gzip_module
      
    4. sudo make

    5. sudo make install

    6. fastdfs-nginx-module-master解压后的目录中src下的mod_fastdfs.conf复制到/etc/fdfs/mod_fastdfs.conf

    7. 修改内容:

      connect_timeout=10    
      tracker_server=Tracker Server 的ip地址:22122     
      url_have_group_name=true   
      store_path0=/home/mark/fastdfs/storage
      
    8. 将解压缩的fastdfs-master目录conf目录中的mime.typeshttp.conf复制到/etc/fdfs/

    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 -s stop)

    Python与FastDFS交互

    使用pip install fdfs_client-py-master.zip安装fdfs_client-py-master.zip

    # 引入Fdfs_client类
    from fdfs_client.client import Fdfs_client
    
    # 创建Fdfs_client类对象 参数是配置文件的路径    
    client = Fdfs_client('/etc/fdfs/client.conf')
    
    # 上传文件
    ret = client.upload_by_filename('base_model.py')
    # 返回值
    print(ret)
    -----------------------------------------
    getting connection
    <fdfs_client.connection.Connection object at 0x7f5ce39307f0>
    <fdfs_client.fdfs_protol.Tracker_header object at 0x7f5ce3930d30>
    {'Group name': 'group1', 'Remote file_id': 'group1/M00/00/00/wKgDDlxFQ0-ARToDAAACBtn6q1o4007.py', 'Status': 'Upload successed.', 'Local file name': 'base_model.py', 'Uploaded size': '518B', 'Storage IP': '192.168.3.14'}
    

    fdfs_client-py from x import StringIO 及 import basestring 报错
    修改为 from io import StringIO basestring在python3中没有 将这一行注释掉
    将 isinstance(filename, basestring) 改为 isinstance(filename, str)

    文档 https://github.com/jefforeilly/fdfs_client-py

  • 相关阅读:
    使用docker搭建gitlab版本控制系统
    Spring Boot与Docker部署
    CentOS7 使用yum命令安装Java SDK(openjdk)
    配置带用户权限的docker registry v2
    Docker搭建带有访问认证的私有仓库
    CentOS7 关闭防火墙
    CentOS7.2网络配置
    Docker Machine 简介
    docker的常用命令汇总
    实时查看docker容器日志
  • 原文地址:https://www.cnblogs.com/endurance9/p/10299702.html
Copyright © 2011-2022 走看看