首页 > 技术文章 > 分布式存储FastDFS

caicai920 2021-08-22 14:56 原文

分布式存储FastDFS

  • 传统文件系统管理的文件就存储在本机。
  • 分布式文件系统管理的文件存储在很多机器,这些机器通过网络连接,要被统一管理。无论是上传或者访问文件,都需要通过管理中心来访问

FastDFS的架构

FastDFS两个主要的角色:Tracker Server 和 Storage Server

  • Tracker Server:跟踪服务器,主要负责调度storage节点与client通信,在访问上起负载均衡的作用,和记录storage节点的运行状态,是连接client和storage节点的枢纽。
  • Storage Server:存储服务器,保存文件和文件的meta data(元数据),每个storage server会启动一个单独的线程主动向Tracker cluster中每个tracker server报告其状态信息,包括磁盘使用情况,文件同步情况及文件上传下载次数统计等信息
  • Group:文件组,多台Storage Server的集群。上传一个文件到同组内的一台机器上后,FastDFS会将该文件即时同步到同组内的其它所有机器上,起到备份的作用。不同组的服务器,保存的数据不同,而且相互独立,不进行通信。
  • Tracker Cluster:跟踪服务器的集群,有一组Tracker Server(跟踪服务器)组成。
  • Storage Cluster :存储集群,有多个Group组成。

上传和下载流程

上传

  1. Client通过Tracker server查找可用的Storage server。
  2. Tracker server向Client返回一台可用的Storage server的IP地址和端口号。
  3. Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件上传。
  4. 上传完成,Storage server返回Client一个文件ID,文件上传结束。

下载

  1. Client通过Tracker server查找要下载文件所在的的Storage server。
  2. Tracker server向Client返回包含指定文件的某个Storage server的IP地址和端口号。
  3. Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并指定要下载文件。
  4. 下载文件成功。

fastDFS的是搭建使用

下载fast相关包

地址:https://github.com/happyfish100

需要以先三个包,直接下载代码,以zip结尾下载

安装相关依赖

安装gcc g++的依赖库
sudo apt-get install build-essential
sudo apt-get install libtool

安装pcre依赖库(http://www.pcre.org/)
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev

安装zlib依赖库(http://www.zlib.net
sudo apt-get install zlib1g-dev

防火墙

ufw enable
ufw disable

在服务器新建一个fastdfs目录,将下载好的文件放到该目录下,当然也可以直接wget 获取相关文件

解压,并且安装

先安装fast基础工具库

libfastcomm
进入到相关路径,然后使用
使用命令

./make && ./make install

没有报错的话,继续安装fastdfs

两个安装编译都没报错的话。进入到/etc/fdfs

两个文件

  • storage.conf.sample
  • tracker.conf.sample

fastdfs安装它包含了 tracker storage ,想这机器是什么角色就启动什么

配置 tracker.conf.sample 并修重命名为 tracker.conf

base_path= 数据和日志文件存储根目录

其它一般可以不用修改

配置 storage.conf.sample 并修重命名为 storage.conf

base_path=/home/fastdfs # 数据和日志文件存储根目录
store_path0=/home/fastdfs # 第一个存储目录
tracker_server=xxx.xxxx.xxx.xxx:22122

启动命令

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

安装好,文件上传成功,还是无法访问的,所以现在需要安装 fastdfs-nginx-module-master

解压 文件 修改
vi config

全局修改路径 将 /usr/local/ 替换成 /usr/

命令:

:%s+/usr/local/+/usr/+g

复制 mod_fastdfs.conf 到/etc/fdfs

sudo cp mod_fastdfs.conf /etc/fdfs/

如安装的ngnix是apt 或者yum安装的建议删除 重装nginx 使用二进制进行安装,因为你需要添加模块要重新编译。

nginx 下载地址
http://nginx.org/download/

安装依赖

  • yum/apt install gcc
  • yum/apt install -y unzip zip
  • yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

编译nginx

./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/fastdfs-nginx-module/src //模块路径地址

编译安装

make && sudo make install

复制相关配置文件

将fastdfs源码包中的http.conf、mime.types 以及fastdfs-nginx-module-master/src 目录下的mod_fastdfs.conf 复制到/etc/fdfs/目录中

复制完成之后修改配置文件

mod_fastdfs.conf

url_have_group_name = true //是否包含组名

tracker_server=192.168.197.125:22122 //tracker地址

nginx.conf

 server {
        listen       80;
        server_name  image.caicai.top;

        # 监听域名中带有group的,交给FastDFS模块处理
        location ~/group([0-9])/ {
            ngx_fastdfs_module;
        }

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

       }


nginx 启动命令

nginx # 启动
nginx -s stop # 停止
nginx -s reload # 重新加载配置

如果没有报错,fastdfs搭建结束。

推荐阅读