FastDFS集群搭建 + Spring Boot集成

    FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题,同时也能做到在集群环境下一台机子上传文件,同时该组下的其他节点下也备份了上传的文件。做分布式系统开发时,其中要解决的一个问题就是图片、音视频、文件共享的问题和数据备份,分布式文件系统正好可以解决这个需求。FastDFS的服务主要有两个角色Tracker和Storage,Tracker服务用于负责调度storage节点与client通信,在访问上起负载均衡的作用,和记录storage节点的运行状态,是连接client和storage节点的枢纽,Storage用于保存文件。

一. FastDFS集群部署

  • 整体部署模块图
    FastDFS集群搭建 + Spring Boot集成_第1张图片
  • 环境准备
  • 名称 描述
    centos系统版本 6.9
    libfatscommon FastDFS分离出的一些公用函数包
    FastDFS FastDFS主程序
    fastdfs-nginx-module FastDFS和nginx的关联模块
    nginx nginx1.15.5
    • 安装编译环境
    yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y
    
    • 磁盘安装路径说明
    说明 位置
    FastDFS所以安装包安装位置 /usr/local/src
    tracker数据 /data/fdfs/tracker
    Storage数据 /data/fdfs/Storage
    配置文件路径 /etc/fdfs
    • 安装libfatscommon
    unzip libfastcommon-master.zip
    cd libfastcommon-master
    ./make.sh && ./make.sh install #编译安装
    
    • 安装FastDFS
    unzip fastdfs-master.zip
    cd fastdfs-master
    ./make.sh && ./make.sh install #编译安装
    cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
    cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
    cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf #客户端文件,测试用
    cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/ #供nginx访问使用
    cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/ #供nginx访问使用
    
    • 安装fastdfs-nginx-module
    unzip fastdfs-nginx-module-master.zip
    cp /usr/local/src/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs #复制配置文件到fdfs目录
    
    • 安装nginx
    tar -zxvf nginx-1.15.5.tar.gz
    cd nginx-1.15.5
    #添加fastdfs-nginx-module模块
    ./configure --add-module=/usr/local/src/fastdfs-nginx-module-master/src/ 
    make && make install #编译安装
    
    • FastDFS集群部署配置

    (1). tracker配置

    #服务器ip为 172.16.79.41,172.16.79.42
    mkdir -p /data/fdfs/tracker  
    vim /etc/fdfs/tracker.conf
    #需要修改的内容如下
    port=22122  # tracker服务器端口(默认22122,一般不修改)
    base_path=/data/fdfs/tracker #存储日志和数据的根目录
    

    (2). storage配置

     mkdir -p /data/fdfs/storage
     vim /etc/fdfs/storage.conf
     #需要修改的内容如下
     port=23000  # storage服务端口(默认23000,一般不修改)
     base_path=/data/fdfs/storage  # 数据和日志文件存储根目录
     store_path0=/data/fdfs/storage  # 第一个存储目录
     tracker_server=172.16.79.41:22122  # 服务器1
     tracker_server=172.16.79.42:22122  # 服务器2
     http.server_port=8888  # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
    

    (3). client配置

     mkdir -p /home/moe/dfs
     vim /etc/fdfs/client.conf
     #需要修改的内容如下
     base_path=/home/moe/dfs
     tracker_server=172.16.79.41:22122  # 服务器1
     tracker_server=172.16.79.42:22122  # 服务器2
    

    (4).配置nginx访问,可以直接通过 IP:port/path访问上传的资源

     vim /etc/fdfs/mod_fastdfs.conf
     #需要修改的内容如下
     tracker_server=172.16.79.41:22122  # 服务器1
     tracker_server=172.16.79.42:22122  # 服务器2
     url_have_group_name=true
     store_path0=/data/fdfs/storage
     
     #配置nginx.config
     vim /usr/local/nginx/conf/nginx.conf
     #添加如下配置
     server {
     listen       8888;    ## 该端口为storage.conf中的http.server_port相同
     server_name  localhost;
     location ~/group[0-9]/ {
        ngx_fastdfs_module;
      }
     ......
     ......
     error_page   500 502 503 504  /50x.html;
     location = /50x.html {
     root   html;
      }
    }
    
    • 启动服务、测试
      (1). 启动之前需要在防火墙开通端口,这里因为不同的Linux发行版用的防火墙可能不同。
    # 防火墙是iptables
    vim  /etc/sysconfig/iptables
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
    
    service iptables restart #重启防火墙
    
    # 防火墙是firewall
    systemctl start firewalld
    firewall-cmd --zone=public --add-port=22122/tcp --permanent
    firewall-cmd --zone=public --add-port=23000/tcp --permanent
    firewall-cmd --zone=public --add-port=8888/tcp --permanent
    firewall-cmd --reload
    
    netstat -ntlp   # 查看当前所有tcp端口·
    netstat -ntulp |grep 22122   #查看22122端口使用情况·
    
    • 每个服务的启动、关闭和重启操作
    #tracker
    /etc/init.d/fdfs_trackerd start #启动tracker服务
    /etc/init.d/fdfs_trackerd restart #重启动tracker服务
    /etc/init.d/fdfs_trackerd stop #停止tracker服务
    chkconfig fdfs_trackerd on #自启动tracker服务
    
    #storage
    /etc/init.d/fdfs_storaged start #启动storage服务
    /etc/init.d/fdfs_storaged restart #重动storage服务
    /etc/init.d/fdfs_storaged stop #停止动storage服务
    chkconfig fdfs_storaged on #自启动storage服务
    
    #nginx
    /usr/local/nginx/sbin/nginx #启动nginx
    /usr/local/nginx/sbin/nginx -s reload #重启nginx
    /usr/local/nginx/sbin/nginx -s stop #停止nginx
    
    • 检测集群
    # 会显示会有几台storage服务器,有2台就会显示 Storage 1-Storage 2的详细信息
    /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
    

    FastDFS集群搭建 + Spring Boot集成_第2张图片
    FastDFS集群搭建 + Spring Boot集成_第3张图片

    • 图片上传测试
    #上传成功返回 文件访问 ID
    # fdfs_upload_file 客户端配置文件      上传文件路径
    fdfs_upload_file /etc/fdfs/client.conf /data/test.png
    

    二. Spring Boot集成FastDFS
    代码传送门
    FastDFS集群搭建 + Spring Boot集成_第4张图片
    FastDFS集群搭建 + Spring Boot集成_第5张图片
    FastDFS集群搭建 + Spring Boot集成_第6张图片
    重复上传,会得到不同的返回路径。
    删除,则会把两台服务器上的文件都会删除掉。

    注意: 这里的集群只确保文件的多机备份,上传的文件会在集群中同组storage内分别保存一份.
    但上述方式并不保证集群的高可用,如果某台服务器挂了,客户端会报异常.
    在这里插入图片描述

    三. 清空FastDFS的文件数据

    • 停止Tracker和Storage服务
    ps -ef | grep fdfs
    kill -9 进程
    -- 分别删除tracker和storage下的data目录 (tracker.conf 和 storage.cong 配置的 base_path)
    rm -rf /data/fdfs/tracker/data
    rm -rf /data/fdfs/storage/data
    
    /etc/init.d/fdfs_trackerd start
    /etc/init.d/fdfs_storaged start
    
    -- 如果上面的启动方式不成功,换下面的方式,带配置文件启动
    /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
    /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
    
    -- 启动成功,22122和23000都被监听了
    netstat -untlp | grep fdfs
    

    转载:https://www.jianshu.com/p/cdccd2beca63?from=timeline&isappinstalled=0
    CentOS FastDFS 配置之常见错误:https://www.cnblogs.com/jaredzhuo/articles/7365153.html

    你可能感兴趣的:(Spring-Boot)