016-docker-fastdfs

0、docker安装fastdfs

1、搜索镜像

docker search fastdfs

2、拉取合适镜像

选择合适tag:https://hub.docker.com/

docker pull delron/fastdfs

这个镜像包含了fastdfs以及nginx,降低自我安装学习时间

docker images

3、使用镜像

  3.1、使用docker镜像构建tracker容器(跟踪服务器,起到调度的作用):

docker run -d -p 22122:22122 --name tracker -v /Users/lihongxu6/docker/myfastdfs/tracker:/var/fdfs delron/fastdfs tracker

  使用docker镜像构建storage容器(存储服务器,提供容量和备份服务):

docker run -d -p 8888:8888 -p 23000:23000 --name storage -e TRACKER_SERVER=ip:22122 -v /Users/lihongxu6/docker/myfastdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage

  上面需要填写你的tracker服务的ip地址,端口默认是22122

  3.2、进行服务的配置。

    进入storage容器,到storage的配置文件中配置http访问的端口,配置文件在/etc/fdfs目录下的storage.conf

docker exec -it storage /bin/bash
cd /etc/fdfs/
ls
vi storage.conf

    查看默认端口: http.server_port=8888 ,也可以不用哪个修改

  配置nginx,在/usr/local/nginx目录下,修改nginx.conf文件

cd /usr/local/nginx/confvi 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;
        }
    }

  或者针对性修改

location /group1/M00 {
        alias  /var/fdfs;
    }

此时文件系统以搭建完毕,使用web模块进行文件的上传,将文件上传至FastDFS文件系统

4、测试

监控状态
fdfs_monitor /etc/fdfs/storage.conf
上传
fdfs_test /etc/fdfs/client.conf upload /etc/fdfs/tracker.conf.sample
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /etc/fdfs/tracker.conf.sample

  url访问http://ip:8888/group1/M00/00/00/rBEAA14wRpCAcZfHAAAc3T8QekU.sample,即可

5、服务重启

pkill -9 fdfs
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

一、概述

  FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

  FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

1.1、简介

  FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。

  存储节点存储文件,完成文件管理的所有功能:就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key valuepair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。

  tracker:跟踪服务器, 主要做调度工作, 起负载均衡的作用。 在内存中记录集群中所有存储组和存储服务器的状态信息, 是客户端和数据服务器交互的枢纽。 相比GFS中的master更为精简, 不记录文件索引信息, 占用的内存量很少。

  storage:存储服务器( 又称:存储节点或数据服务器) , 文件和文件属性( metadata) 都保存到存储服务器上。 Storage server直接利用OS的文件系统调用管理文件。

  group:组, 也可称为卷。 同组内服务器上的文件是完全相同的 ,同一组内的storage server之间是对等的, 文件上传、 删除等操作可以在任意一台storage server上进行 。

1.2、存储策略

  为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。

  在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。

1.2.1、上传交互过程

  FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。

  Storage Server会定期的向Tracker Server发送自己的存储信息。当Tracker Server Cluster中的Tracker Server不止一个时,各个Tracker之间的关系是对等的,所以客户端上传时可以选择任意一个Tracker。

  当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中的哪一个storage server。当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录。然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件。

  

1.2.2、下载交互过程

  客户端uploadfile成功后,会拿到一个storage生成的文件名,接下来客户端根据这个文件名即可访问到该文件。

  

  跟upload file一样,在downloadfile时客户端可以选择任意tracker server。tracker发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。

1.3、文件同步

  写文件时,客户端将文件写至group内一个storage server即认为写文件成功,storage server写完文件后,会由后台线程将文件同步至同group内其他的storage server。

  每个storage写文件后,同时会写一份binlog,binlog里不包含文件数据,只包含文件名等元信息,这份binlog用于后台同步,storage会记录向group内其他storage同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有server的时钟保持同步。

  storage的同步进度会作为元数据的一部分汇报到tracker上,tracke在选择读storage的时候会以同步进度作为参考。

1.4、结合nginx

  在使用 FastDFS 部署一个分布式文件系统的时候,通过 FastDFS 的客户端 API 来进行文件的上传、下载、删除等操作。同时通过 FastDFS 的 HTTP 服务器来提供 HTTP 服务。但是 FastDFS 的 HTTP 服务较为简单,无法提供负载均衡等高性能的服务,我们使用 FastDFS 的 Nginx 模块来弥补这一缺陷。

  FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储,但是同组之间的服务器需要复制文件,有延迟的问题.假设 Tracker 服务器将文件上传到了 192.168.1.80,文件ID已经返回客户端,这时,后台会将这个文件复制到 192.168.1.30,如果复制没有完成,客户端就用这个 ID 在 192.168.1.30 取文件,肯定会出现错误。这个 fastdfs-nginx-module 可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。

主要解决的问题及场景

1 解决海量存储,同时存储容量扩展方便。
    2 解决文件内容重复,如果用户上传的文件重复(文件指纹一样),那么系统只有存储一份数据,值得一提的是,这项技术目前被广泛应用在网盘中。
    3 结合Nginx提高网站读取图片的效率。

特别适合以中小文件( 建议范围: 4KB 到 500MB ) 为载体的在线服务, 如相册网站、 视频网站等等。

 

1.5、其他资源

1.6、对比

指标 适合类型 文件分布 系统性能 复杂度 FUSE POSIX 备份机制 通讯协议接口 社区支持 开发语言
FastDFS 4KB~500MB 小文件合并存储不分片处理 很高 简单 不支持 不支持 组内冗余备份 Api HTTP 国内用户群 C语言
TFS 所有文件 小文件合并,以block组织分片   复杂 不支持   Block存储多份,主辅灾备 API http C++
MFS 大于64K 分片存储 Master占内存多   支持 支持 多点备份动态冗余 使用fuse挂在 较多 Perl
HDFS 大文件 大文件分片分块存储   简单 支持 支持 多副本 原生api 较多 Java
Ceph 对象文件块 OSD一主多从   复杂 支持 支持 多副本 原生api 较少 C++
MogileFS 海量小图片   复杂 可以支持 不支持 动态冗余 原生api 文档少 Perl
ClusterFS 大文件     简单 支持 支持     C

1.7、部署结构

   

二、springboot结合

原文地址:https://www.cnblogs.com/bjlhx/p/12239588.html

时间: 2024-10-09 20:41:17

016-docker-fastdfs的相关文章

docker+fastdfs+springboot一键式搭建分布式文件服务器

1.拉去镜像 docker pull qbanxiaoli/fastdfs 2.启动fastdfs docker run -d --restart=always --privileged=true --net=host --name=fastdfs -e IP={IP} -e WEB_PORT=80 -v ${HOME}/fastdfs:/var/local/fdfs qbanxiaoli/fastdfs IP 后面是你的服务器公网ip或者虚拟机的IP,-e WEB_PORT=80 指定ngin

docker安装fastdfs单机版

docker search fastdfs INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/season/fastdfs FastDFS 39 docker.io docker.io/luhuiguo/fastdfs FastDFS is an open source high performance... 17 [OK] docker.io docker.io/morunchang/fastdfs A Fa

DataError: [-] Error: 2, No such file or directory解决你用Django写项目使用Docker安装FastDFS,测试的时候遇到这个问题

DataError: [-] Error: 2, No such file or directory我已经解决了 是因为我安装storage的时候docker run -dti --network=host --name storage -e TRACKER_SERVER=127.0.0.1:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage 没有改为自己本机的IP地址TRACKER_SERVER=本机的ip地址:22122 本

Docker和FastDFS分布式文件系统

FastDFS 是国内电商网站非常出名的一套框架,在国内的电商网站使用概率是非常大的,是淘宝的前架构师用 c 语言编写的一款开源的分布式文件系统.充分考虑了冗余备份(纵向).负载均衡.线性扩容(横向)等机制,并注重高可用.高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传.下载等服务. 作用:分布式存储静态文件:提供文件上传和下载功能. FastDFS 架构包括 Tracker server 和 Storage server.客户端请求 Tracker serv

Docker安装FastDFS

什么是FastDFS? FastDFS 是用 c 语言编写的一款开源的分布式文件系统.FastDFS 为互联网量身定制, 充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传.下载等服务. FastDFS 架构包括 Tracker server 和 Storage server.客户端请求 Tracker server 进行文 件上传.下载,通过 Tracker server 调度最终由 Storage

docker安装fastdfs与java客户端测试

一.docker 安装FastDFS 1.拉取镜像 docker pull morunchang/fastdfs 2.创建并启动tracker容器 docker run -d --name=tracker -v /home/fastdfs_docker/fdfs/tracker:/data/fast_data --privileged=true --net=host morunchang/fastdfs sh tracker.sh 3.创建并启动storage容器.此处只做单机版测试 注意:由于

基于docker容器搭建fastdfs分布式文件系统

本次环境的搭建参考了 https://blog.csdn.net/qq_43455410/article/details/84797814, 感谢博主. 主要流程如下: docker pull season/fastdfs (下载镜像) docker run -ti -d --name tracker -v ~/tracker_data:/fastdfs/tracker/data --net=host season/fastdfs tracker(启动tracker服务器)注:启动这个容器之前请

docker 安装 fastdfs

fastdfs 安装 //1.拉取镜像 docker pull morunchang/fastdfs //2.启动tracker docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh //3.启动storage (172.21.91.218 ip 自行替换为docker 所在服务器的ip )( 此镜像不支持-p 参数) docker run -d --name storage --net=host -e

docker 和 FastDFS上传和下载文件

1,从仓库拉取镜像 sudo docker image pull delron/fastdfs 也可以解压已经打包好的镜像文件 $ sudo docker load -i 文件路径/fastdfs_docker.tar 2,开启tracker容器 将tracker运行目录映射到宿主机的/var/fdfs/tracker目录中 sudo docker run -dit --name=tracker --network=host -v /var/fdfs/tracker:/var/fdfs delr

fastdfs 构建docker镜像

目录结构 [[email protected]]# tree . . ├── conf │?? ├── client.conf │?? ├── http.conf │?? ├── mime.types │?? ├── mod_fastdfs.conf │?? ├── nginx.conf │?? ├── storage.conf │?? └── tracker.conf ├── Dockerfile ├── fastdfs.sh └── source ├── fastdfs-nginx-modu