FastDFS集羣搭建 + Spring Boot集成

    FastDFS是一個開源的輕量級分佈式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題,同時也能做到在集羣環境下一臺機子上傳文件,同時該組下的其他節點下也備份了上傳的文件。做分佈式系統開發時,其中要解決的一個問題就是圖片、音視頻、文件共享的問題和數據備份,分佈式文件系統正好可以解決這個需求。FastDFS的服務主要有兩個角色Tracker和Storage,Tracker服務用於負責調度storage節點與client通信,在訪問上起負載均衡的作用,和記錄storage節點的運行狀態,是連接client和storage節點的樞紐,Storage用於保存文件。

一. FastDFS集羣部署

  • 整體部署模塊圖
    在這裏插入圖片描述
  • 環境準備
  • 名稱 描述
    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
    unzip libfastcommon-master.zip
    cd libfastcommon-master
    ./make.sh && ./make.sh install #編譯安裝
    
    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訪問使用
    
    unzip fastdfs-nginx-module-master.zip
    cp /usr/local/src/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs #複製配置文件到fdfs目錄
    
    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訪問

     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
    

    在這裏插入圖片描述
    在這裏插入圖片描述

    • 圖片上傳測試
    #上傳成功返回 文件訪問 ID
    # fdfs_upload_file 客戶端配置文件      上傳文件路徑
    fdfs_upload_file /etc/fdfs/client.conf /data/test.png
    

    二. Spring Boot集成FastDFS
    代碼傳送門
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    重複上傳,會得到不同的返回路徑。
    刪除,則會把兩臺服務器上的文件都會刪除掉。

    轉載:https://www.jianshu.com/p/cdccd2beca63?from=timeline&isappinstalled=0

    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章