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. 在Windows2008下添加iscsi存储出现磁盘Offine(The disk is offine because of policy set by an adminstrator)的解决方法

    打开CMD命令行输入如下命令: DISKPART.EXE DISKPART> san SAN Policy : Offline Shared DISKPART> san policy=On ...

  2. JAVA学习笔记--匿名内部类

    匿名内部类,即没有名字的内部类. 我们在编写JAVA程序时,往往要创建很多类,类是可以被重复使用的.但有时,我们创建了一个类,却只需要使用该类一次,那么单独为其编写一个类就显得有些麻烦,这时可以使用匿 ...

  3. 经验之谈:10位顶级PHP大师的开发原则

    导读:在Web开发世界里,PHP是最流行的语言之一,从PHP里,你能够很容易的找到你所需的脚本,遗憾的是,很少人会去用“最佳做法”去写一个PHP程序.这里,我们向大家介绍PHP的10种最佳实践,当然, ...

  4. 《JavaScript》JS中的跨域问题

    参考博客:https://www.cnblogs.com/yongshaoye/p/7423881.html

  5. Macbook Pro开机黑屏了。

    问题描述:点了appstore的更新,然后重启黑屏.(说明:黑屏是屏幕没亮:灰屏是屏幕亮了是灰黑色的.) 黑屏问题大,灰屏问题小. 开机按option没反应的跳到步骤四 一.数据 苹果电脑黑屏了,想搞 ...

  6. FPGA的软核与硬核

    硬核 zynq和pynq系列的fpga都是双ARM/Cortex-A9构成,这里的ARM处理器为硬核,Cortex-A9部分为FPGA部分.即整体分为两部分:PS/PL.PS部分为A9处理器部分,PL ...

  7. 软工实践-Alpha 冲刺 (10/10)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 完成所有界面的链接,整理与测试 展示GitHub当日代码/ ...

  8. MySQL 备份和恢复 理论知识

    为什么要备份 数据无价   制定备份策略的注意点 1:可容忍丢失多少数据     2:恢复需要在多长时间内完成     3:备份的对象   数据.二进制日志和InnoDB的事务日志.SQL代码(存储过 ...

  9. IDEA配置Java Web项目

    IDEA部署maven tomcat的java web项目的关键配置:

  10. 图文详解 IntelliJ IDEA 15 创建 Maven 构建的 Java Web 项目(使用 Jetty 容器)

    图文详解 IntelliJ IDEA 15 创建 maven 的 Web 项目 搭建 maven 项目结构 1.使用 IntelliJ IDEA 15 新建一个项目.  2.设置 GAV 坐标  3. ...