分佈式圖片服務器FastDFS

  

1. 什麼是FastDFS  

  FastDFS 是用 c 語言編寫的一款開源的分佈式文件系統。FastDFS 爲互聯網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用 FastDFS 很容易搭建一套高性能的文件服務器集羣提供文件上傳、下載等服務。html

  FastDFS 架構包括 Tracker server 和 Storage server。客戶端請求 Tracker server 進行文件上傳、下載,經過 Tracker server 調度最終由 Storage server 完成文件上傳和下載。nginx

  Tracker server 做用是負載均衡和調度,經過 Tracker server 在文件上傳時能夠根據一些 策略找到 Storage server 提供文件上傳服務。能夠將 tracker 稱爲追蹤服務器或調度服務 器。ubuntu

  Storage server 做用是文件存儲,客戶端上傳的文件最終存儲在 Storage 服務器上, Storageserver 沒有實現本身的文件系統而是利用操做系統 的文件系統來管理文件。能夠將 storage 稱爲存儲服務器vim

  服務端兩個角色:瀏覽器

    Tracker:管理集羣,tracker 也能夠實現集羣。每一個 tracker 節點地位平等。收集 Storage 集羣的狀態。服務器

    Storage:實際保存文件 Storage 分爲多個組,每一個組之間保存的文件是不一樣的。每 個組內部能夠有多個成員,組成員內部保存的內容是同樣的,組成員的地位是一致的,架構

  沒有主從的概念。負載均衡

2.文件上傳流程 

  客戶端上傳文件後存儲服務器將文件 ID 返回給客戶端,此文件 ID 用於之後訪問該文 件的索引信息。文件索引信息包括:組名,虛擬磁盤路徑,數據兩級目錄,文件名。  分佈式

  group1/M00/00/00/CiOmUVyV0gCAKZRFAABG0Gsea-U518.jpg性能

  組名:文件上傳後所在的 storage 組名稱,在文件上傳成功後有 storage 服務器返回, 須要客戶端自行保存。

  虛擬磁盤路徑:storage 配置的虛擬路徑,與磁盤選項 store_path*對應。若是配置了 store_path0 則是 M00,若是配置了 store_path1 則是 M01,以此類推。

  數據兩級目錄:storage 服務器在每一個虛擬磁盤路徑下建立的兩級目錄,用於存儲數據 文件。

  文件名:與文件上傳時不一樣。是由存儲服務器根據特定信息生成,文件名包含:源存儲 服務器 IP 地址、文件建立時間戳、文件大小、隨機數和文件拓展名等信息。

3. 文件下載流程

 

 

4. 簡易FastDFS架構

  

 

5  FastDFS安裝

  5.1 安裝fastdfs依賴包

     1. 解壓縮libfastcommon-master.zip

    2. 進入到libfastcommon-master的目錄中

    3. 執行 ./make.sh

    4. 執行 sudo ./make.sh install

  5.2 安裝fastdfs    

    1. 解壓縮fastdfs-master.zip

    2. 進入到 fastdfs-master目錄中

    3. 執行 ./make.sh

    4. 執行 sudo ./make.sh install

  5.3 配置跟蹤服務器tracker   

    1. sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

    2. 在/home/egon/目錄中建立目錄 fastdfs/tracker  (家目錄下演示)   

      mkdir –p /home/egon/fastdfs/tracker

    3. 編輯/etc/fdfs/tracker.conf配置文件   

      sudo vim /etc/fdfs/tracker.conf

      修改 base_path=/home/egon/fastdfs/tracker

 

  5.4 配置存儲服務器storage

    1. sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

    2. 在/home/egon/fastdfs/ 目錄中建立目錄 storage

         mkdir –p /home/egon/fastdfs/storage

    3. 編輯/etc/fdfs/storage.conf配置文件  sudo vim /etc/fdfs/storage.conf

      修改內容:

        base_path=/home/egon/fastdfs/storage

        store_path0=/home/egon/fastdfs/storage

        tracker_server=本身ubuntu虛擬機的ip地址:22122

        若是使用阿里雲或者其餘雲服務器,ip填寫公有的ip

  5.5 啓動tracker 和 storage

    sudo service fdfs_trackerd start

    sudo service fdfs_storaged start

    ps aux | grep fdfs  查看相關進程

    

  5.6 測試是否安裝成功   

   1. sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

   2. 編輯/etc/fdfs/client.conf配置文件  sudo vim /etc/fdfs/client.conf

   修改內容:

    base_path=/home/egon/fastdfs/tracker

    tracker_server=本身ubuntu虛擬機的ip地址:22122

    若是使用阿里雲或者其餘雲服務器,ip填寫公有的ip

   3. 上傳文件測試:

    fdfs_upload_file /etc/fdfs/client.conf 要上傳的圖片文件

    遇到如圖報錯狀況:

    

     sudo pkill -9 fdfs

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

    若是返回相似group1/M00/00/00/CiOmUVyV0gCAKZRFAABG0Gsea-U518.jpg的文件id則說明文件上傳成功.

    

 

6.安裝和配置nginx

  1. 解壓縮 nginx-1.8.1.tar.gz

  2. 解壓縮 fastdfs-nginx-module-master.zip

  3.把解壓的fastdfs-nginx-module-master文件所有拷貝到/usr/local/src目錄下。

    cp -r fastdfs-nginx-module-master/ /usr/local/src

  4.配置nginx,加入fastdfs-nginx-module模塊:

    ①進入nginx-1.8.1文件夾

    ②sudo ./configure --add-module=/usr/local/src/fastdfs-nginx-module-master/src/

    ③安裝

      make

      make install

  5.複製fastdfs-nginx-module-master解壓後目錄中的src下mod_fastdfs.conf 文件到/etc/fdfs/目錄下,並對其進行修改

    cd fastdfs-nginx-module-master/src  

    cp mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf

    sudo vim /etc/fdfs/mod_fastdfs.conf

    修改內容:

      connect_timeout=10

      tracker_server=本身ubuntu虛擬機的ip地址:22122   (雲服務器用公網ip)

      url_have_group_name=true

      store_path0=/home/egon/fastdfs/storage

  6.進入fastdfs-master目錄,拷貝conf目錄下http.conf文件到  /etc/fdfs/, mime.types文件到 /etc/fdfs/

      cd fastdfs-master/conf

      cp http.conf /etc/fdfs/http.conf

      cp mime.types /etc/fdfs/mime.types

   7.配置nginx服務

    sudo vim /usr/local/nginx/conf/nginx.conf

    修改以下內容:

      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;

                }

            }

    

   8.啓動nginx  

    sudo /usr/local/nginx/sbin/nginx

    返回以下圖所示表示成功

     

   9.上傳測試

    fdfs_test /etc/fdfs/client.conf upload 要上傳的文件

   

    把url複製到瀏覽器測試,注意ip後面須要加:8888

相關文章
相關標籤/搜索