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. selenium+Java,xpath定位方法详解(搬运留存)

    用xpath绝对路径比较费事费力,还容易报错,下面几种模糊定位比较灵活好用 driver.findElement(By.xpath("//*[@id='J_login_form']/dl/d ...

  2. docker简单使用+django+uwsgi+nginx项目部署

    使用docker 搭建 centos7 环境: 主机环境:windows 10专业版 一.安装docker Hub.docker.com官网下载 docker for windows 安装完成后,任务 ...

  3. PHP核心技术——魔术方法

    魔术方法: 魔术方法是以两个下画线开头.具有特殊作用的一些方法,可以看做PHP的"语法糖". set和get方法: class Account{ private $user=1; ...

  4. Kubernetes v1.10----部署kubernetes-dashboard v1.83

    Kubernetes v1.10----部署kubernetes-dashboard v1.83 1.下载 kubernetes-dashboard  yaml文件 #因为文件中的image指定的是谷 ...

  5. 在jre1.8版本下,使用ikvm将jar转换为dll,以供c#调用

    由于合作方使用.net编程,jar包不能用,需要转换成dll格式,来回转换了十几个dll文件(心塞..),终于生成了一个可用的.在这里将走过的弯弯绕绕总结下,希望遇到相似问题的同好们,能走得顺利些. ...

  6. Node2vec 代码分析

    Node2vec 代码从Github上clone到本地,主要是main.py和node2vec.py两个文件. 下面把我的读代码注释放到上面来, import numpy as np import n ...

  7. Hybrid APP基础篇(四)->JSBridge的原理

    说明 JSBridge实现原理 目录 前言 参考来源 前置技术要求 楔子 原理概述 简介 url scheme介绍 实现流程 实现思路 第一步:设计出一个Native与JS交互的全局桥对象 第二步:J ...

  8. Scrum立会报告+燃尽图(十月十日总第一次):选题

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2190 Scrum立会master:付佳 一.小组介绍 组长:付佳 组员: ...

  9. vim 编码方式的设置

    和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括UCS-2.UTF-8 等流行的 Unicode 编码方式.然而不幸的是,和很多来自 Linux 世界的软件一样,这需要 ...

  10. 《剑指offer》---左旋转字符串与右旋转字符串

    本文算法使用python3实现 1. 问题1 1.1 题目描述:   汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S, ...