FastDFS概念、原理及CentOS7下安裝實戰

阿豪聊乾貨發表於2017-05-23

一、FastDFS基本概念及基本原理

  1.什麼是FastDFS

    FastDFS是用c語言編寫的一款開源的分散式檔案系統。FastDFS為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用FastDFS很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、下載等服務。主要功能包括檔案儲存、檔案同步、檔案訪問(上傳、下載)、存取負載均衡、線上擴容、相同內容只儲存一份等功能,適合有大容量儲存需求的應用或系統。做分散式系統開發時,其中要解決的一個問題就是圖片、音視訊、檔案共享的問題,分散式檔案系統正好可以解決這個需求。同類的分散式檔案系統有谷歌的GFS、HDFS(Hadoop)、TFS(淘寶)等。

    FastDFS有兩個角色:跟蹤服務(tracker)和儲存服務(storage),跟蹤服務控制,排程檔案以負載均衡的方式訪問;儲存服務包括:檔案儲存,檔案同步,提供檔案訪問介面,同時以key value的方式管理檔案的後設資料。

    跟蹤和儲存服務可以由1臺或者多臺伺服器組成,同時可以動態的新增,刪除跟蹤和儲存服務而不會對線上的服務產生影響,在叢集中,tracker服務是對等的。

    儲存系統由一個或多個卷組成,卷與卷之間的檔案是相互獨立的,所有卷的檔案容量累加就是整個儲存系統中的檔案容量。一個卷可以由一臺或多臺儲存伺服器組成,一個卷下的儲存伺服器中的檔案都是相同的,卷中的多臺儲存伺服器起到了冗餘備份和負載均衡的作用。在卷中增加伺服器時,同步已有的檔案由系統自動完成,同步完成後,系統自動將新增伺服器切換到線上提供服務。當儲存空間不足或即將耗盡時,可以動態新增捲。只需要增加一臺或多臺伺服器,並將它們配置為一個新的卷,這樣就擴大了儲存系統的容量。

  2.FastDFS系統架構

    

  3.檔案上傳流程

  

  4.檔案下載流程

   

  5.上傳檔案的檔名

    客戶端上傳檔案後儲存伺服器檔案ID返回給客戶端,此檔案ID用於以後訪問該檔案的索引資訊。檔案索引資訊包括:組名,虛擬磁碟路徑,資料兩級目錄,檔名。

     

    1). 組名:檔案上傳後所在的storage組名稱,在檔案上傳成功後有storage伺服器返回,需要客戶端自行儲存。

    2). 虛擬磁碟路徑:storage配置的虛擬路徑,與磁碟選項store_path*對應。如果配置了store_path0則是M00,如果配置了store_path1則是M01,以此類推。

    3). 資料兩級目錄:storage伺服器在每個虛擬磁碟路徑下建立的兩級目錄,用於儲存資料檔案。

    檔名:與檔案上傳時不同。是由儲存伺服器根據特定資訊生成,檔名包含:源儲存伺服器IP地址、檔案建立時間戳、檔案大小、隨機數和檔案擴充名等資訊。

二、搭建步驟

  為了直觀立體,我們選擇使用一臺虛擬機器來模擬,只配置一個Tracker、一個Storage服務,配置Nginx來訪問上傳的檔案。

  

  第一步.安裝fastDFS依賴的libevent工具包

    yum -y install libevent

  第二步.下載FastDFS以及相關原始碼包

    1.下載libfastcommon

       wget https://github.com/happyfish100/libfastcommon/archive/V1.0.35.tar.gz -O libfastcommon-1.0.35.tar.gz

    2.下載fastdfs原始碼包

       wget https://github.com/happyfish100/fastdfs/archive/V5.10.tar.gz -O fastdfs-5.10.tar.gz

    3.下載fastdfs-nginx-module原始碼包

       wget https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz/download -O fastdfs-nginx-module_v1.16.tar.gz

    4.下載nginx原始碼包

       wget http://nginx.org/download/nginx-1.12.0.tar.gz

  第三步.安裝libfastcommon

    1.解壓縮libfastcommon並進入解壓後的目錄

      tar -zxvf libfastcommon-1.0.35.tar.gz && cd libfastcommon-1.0.35

    2.進行make和make install

      ./make.sh && ./make.sh install

    3.設定軟連結或者拷貝usr/lib64/libfastcommon.so檔案到/usr/lib/(64位系統跳過該步驟)

      ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
      ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
        ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
      ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

  第四步.安裝Tracker服務

    1.解壓縮fastdfs-5.10.tar.gz並進入解壓後的目錄

      tar -zxvf fastdfs-5.10.tar.gz && cd fastdfs-5.10.tar.gz

    2.進行make和make install

      ./make.sh && ./make.sh install

      注:上面命令執行成功以後,會在/usr/bin目錄下生成以fdfs開頭的檔案

    3.拷貝原始碼解壓包目錄下conf目錄下的所有檔案到/etc/fdfs下

      cp ~/fastdfs/fastdfs-5.10.tar.gz/conf/* /etc/fdfs/

    4.修改/etc/fdfs/tracker.conf檔案對tracker進行配置

      

    5.啟動tracker服務

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

      重啟命令:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

  第五步.安裝Storage服務

    1.如果是在不同的伺服器安裝該服務,第四步的1~3需要重新執行.

    2.修改/etc/fdfs/storage.conf檔案對storage進行配置

     

     

     

    3.啟動storage服務

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

      重啟:/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

   第六步.測試服務

    1.修改配置檔案/etc/fdfs/client.conf配置客戶端

    

        

    2.測試

      /usr/bin/fdfs_test /etc/fdfs/client.conf upload anti-steal.jpg

     成功會出現以下文字

     

     先記下此處上傳成功檔案的url是:http://192.168.85.131/group1/M00/00/00/wKhVg1kl_NGAd61UAABdrZgsqUU293_big.jpg

  第七步:搭建Nginx提供Http服務

    1.安裝教程:Centos7安裝Nginx實戰

    注意:配置的引數要發生如下變化:新增最後一行

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/root/fastdfs/fastdfs-nginx-module/src

  2.安裝完成以後,需要/root/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf檔案複製到/etc/fdfs目錄下

    cp /root/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs

  3.對copy後的檔案進行編輯

    

    

    

   4.對nginx進行配置

   在nginx配置檔案中增加一個server:

server {
        listen       80;
        server_name  192.168.85.131;

        location /group1/M00/{
                #root /data/fastdfs/storage/data;
                ngx_fastdfs_module;
        }
}

  5.libfdfsclient.so拷貝至/usr/lib下(64位機器跳過此步驟)

    cp /usr/lib64/libfdfsclient.so /usr/lib/

  6.啟動nginx

    cd /usr/local/nginx/sbin && ./nginx

  第八步.對之前測試上傳的檔案進行訪問,瀏覽器輸入:http://192.168.85.131/group1/M00/00/00/wKhVg1kl_NGAd61UAABdrZgsqUU293_big.jpg

 

  出現此圖片說明fastdfs圖片伺服器以及nginx外掛搭建成功!

相關文章