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

用一次FastDFS的更多相关文章

  1. 【架构设计】分布式文件系统 FastDFS的原理和安装使用

    本文地址 分享提纲: 1.概述 2. 原理 3. 安装 4. 使用 5. 参考文档 1. 概述 1.1)[常见文件系统] Google了一下,流行的开源分布式文件系统有很多,介绍如下:   -- mo ...

  2. FASTDFS调研报告(V1.0)

    之前的文章,现在放出来,以供参阅. 一.fastdfs简介 FastDFS是一个轻量级的开源分布式文件系统 FastDFS主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡 Fas ...

  3. 网站文件系统发展&&分布式文件系统fastDFS

    网站文件系统发展 1.单机时代的图片服务器架构 初创时期由于时间紧迫,开发人员水平也很有限等原因.所以通常就直接在website文件所在的目录下,建立1个upload子目录,用于保存用户上传的图片文件 ...

  4. FastDFS 安装及使用

    FastDFS 安装及使用 2012-11-17 13:10:31|  分类: Linux|举报|字号 订阅     Google了一下,流行的开源分布式文件系统有很多,介绍如下:   mogileF ...

  5. 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署

    少啰嗦,直接装 看过上一篇分布式文件系统 - FastDFS 简单了解一下的朋友应该知道,本次安装是使用目前余庆老师开源的最新 V5.05 版本,是余庆老师放在 Github 上的,和目前你能在网络上 ...

  6. 分布式文件系统 - FastDFS 简单了解一下

    别问我在哪里 也许我早已不是我自己,别问我在哪里,我一直在这里. 突然不知道说些什么了... 初识 FastDFS 记得那是我刚毕业后进入的第一家公司,一个技术小白进入到当时的项目组后,在开发中上传用 ...

  7. 分布式文件系统 - FastDFS 配置 Nginx 模块及上传测试

    也不说废话,直接干 上一篇 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署 中安装了 FastDFS 后,并配置启动了 Tracker 和 Storage 服务,已经可以上传文件 ...

  8. centos 系统下安装FastDFS+nginx+fastdfs-nginx-module安装配置

    前言: 以前的项目上传的文件都是保存到本地或者是局域网内的共享文件夹下,由于数据量,服务器的负载均衡(分机的某些图片无法访问的问题处理)等因素的情况下,就想到用fastdfs来文件管理,花了几天时间硬 ...

  9. FastDFS+Nginx(单点部署)事例

    FastDFS是由淘宝的余庆先生所开发,是一个轻量级.高性能的开源分布式文件系统,用纯C语言开发,包括文件存储.文件同步.文件访问(上传.下载).存取负载均衡.在线扩容.相同内容只存储一份等功能,适合 ...

  10. 在虚拟机中配置FastDFS+Nginx模块

    先上部署图 提示一下, ip 192.168.72.138 上面部署了两个group, 分别为 group1和g2. 另外, 同组之内的 port 要保持一致. 一.安装准备 1. #每台机器都添加两 ...

随机推荐

  1. MySQL☞大结局

    emmm,看了这么多大概会用了点点,学到了一点点 select  列名/*/聚合函数 from  表名1 别名1  连接查询(左外.右外等等) 表名2 别名2 on 关联条件 where 查询条件 g ...

  2. 学习笔记之ubuntu修改固定IP脚本

    一.shell脚本编程 二.正则表达式 三.linux修改IP的方法 #!/bin/bash cd /etc/network/ stty erase '^?' write_interfaces() { ...

  3. Openwrt之移动硬盘ext3/ext4格式化工具

    在给openwrt挂载移动硬盘的时候,最好是ext3/ext4方式,但在windows下苦于无法找到合适的工具进行格式化. 踅摸了半天,终于找到了它:MiniTool Partion  Wizard ...

  4. Centos安装Python3(自带pip和setuptools)

    安装zlib相关依赖 解决zipimport.ZipImportError: can't decompress data和pip3 ssl证书问题 sudo yum -y install zlib* ...

  5. 131. 分割回文串 javascript实现

    给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回 s 所有可能的分割方案. 示例: 输入: "aab" 输出: [ ["aa",&quo ...

  6. Dev C++支持ISOC++11标准

    报错如下: [Error] #error This file requires compiler and library support for the ISO C++ 2011 standard. ...

  7. JVM监控及堆栈内存

    jconsole 堆内存:存放new出来的对象 栈内存:存放基本数据结构和对象的引用,但对象本身放在堆中

  8. AutoCAD2015激活码和密钥

    CAD2015序列号和密钥 序列号:    666-69696969     产品密钥:     001G1 序列号:    356-72378422     产品密钥:     206G1 安装说明 ...

  9. Linux 150命令之查看文件及内容处理命令 cat tac less head tail cut

    cat 查看文件内容 [root@mysql tmp]# cat 2.txt 1234 -n 查看行号 [root@mysql tmp]# cat -n 2.txt      1 1234       ...

  10. 《C》VS控制台应用

    源(c)文件:主要是源码,包括程序入口,函数的实现 头(h)文件:主要是定义的函数声明 资源(rc)文件:程序中用到的辅助资源,比如位图,图标资源 解决VS2015安装后stdio.h ucrtd.l ...