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. Cesium开发添加entity无法显示

    无代码报错,js查询entity数量发现确实添加进去了.但是在底图上就是不显示. 有可能是跨域产生的问题.打开开发者工具Console栏.查看是不是存在跨域错误. 解决跨域后entity正常加载.

  2. 《More Effective C++》读书笔记(零)Basic 基础条款

    这是篇读书笔记,只记录自己的理解和总结,一般情况不对其举例子具体说明,因为那正是书本身做的事情,我的笔记作为梳理和复习之用,划重点.我推荐学C++的人都好好读一遍Effective C++ 系列,真是 ...

  3. Paper Reading - Deep Visual-Semantic Alignments for Generating Image Descriptions ( CVPR 2015 )

    Link of the Paper: https://arxiv.org/abs/1412.2306 Main Points: An Alignment Model: Convolutional Ne ...

  4. 7.hdfs工作流程及机制

    1. hdfs基本工作流程 1. hdfs初始化目录结构 hdfs namenode -format 只是初始化了namenode的工作目录 而datanode的工作目录是在datanode启动后自己 ...

  5. linux中使用wget设置参数防止中文乱码问题

    在linux中一般会用到wget命令来请求远程的某个文件,此时,文件中会有一些中文字符或者中文汉字,要保持不出现"乱码"就需要在后面加上参数,如下图所示: 其中的 --restri ...

  6. loadrunner socket协议问题归纳(4)---buffer接收变长和定长的数据

    测试场景:聊天系统 用户登录后,要先向服务器发送用户名,然后可以发送聊天信息,同时也可以接受聊天信息. 如果接受的字符为定长时,可以设定接受长度.recv buf2 66 #include " ...

  7. 《构建之法》6-7章读后感、问题及对Scrum的理解

    第6章读后感: 看完第六章后了解什么是敏捷流程.“敏捷流程”在软件工程的语境中是一系列价值观和方法论的集合.我觉得敏捷是比较人性化而且让人比较轻松的的一种团队做项目的方法吧,它会比较注重交流,而不是硬 ...

  8. c# 导入第三方插件(例如pdf控件),莫名有时候成功有时候出错

    问题情境: 正如标题所述: 解决办法: 怀疑是adobe acrobat 9 pro安装文件出错:重新安装,成功. 在这过程中,尝试过福听阅读器,adobe reader等,均正常. 注:1.第三方的 ...

  9. Markdown的基本语法

    Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简单.常用的标记符号也不 ...

  10. MySQL 事物机制

    前言:事物:一组原子性的SQL查询,或多个SQL语句组成了一个独立的单元.要么这一组SQL语句全部执行,要么全部不执行 (一)事物日志介绍:管理事物机制的日志 redo日志:记录SQL执行的语句,这些 ...