Dubbo+Zookeeper架構—高級篇20-fastdfs分佈式文件系統的安裝

目錄

FastDFS簡介

系統架構

系統架構-下載文件流程圖

相關術語

同步機制

•同一組內的storage server之間是對等的,文件上傳、刪除等操作可以在任意一臺storage server上進行;

安裝

環境信息

一、所有跟蹤服務器和存儲服務器均執行如下操作

二、配置 FastDFS 跟蹤器192.168.4.121 (edu-dfs-tracker-01) 

三、配置 FastDFS 存儲(192.168.4.125)

四、文件上傳測試(192.168.4.121) 

五、在每個存儲節點上安裝 nginx 

六:代碼樣例的使用


 

FastDFS簡介

FastDFS是一個輕量級的開源分佈式文件系統

FastDFS主要解決了大容量的文件存儲和高併發訪問的問題,文件存取時實現了負載均衡

FastDFS實現了軟件方式的RAID,可以使用廉價的IDE硬盤進行存儲

支持存儲服務器在線擴容

支持相同內容的文件只保存一份,節約磁盤空間

FastDFS只能通過Client API訪問,不支持POSIX訪問方式

FastDFS特別適合大中型網站使用,用來存儲資源文件(如:圖片、文檔、音頻、視頻等等)

系統架構

系統架構-下載文件流程圖

相關術語

Tracker Server:跟蹤服務器,主要做調度工作,在訪問上起負載均衡的作用。記錄storage server的狀態,是連接ClientStorage server的樞紐。

Storage Server:存儲服務器,文件和meta data都保存到存儲服務器上

group:組,也可稱爲卷。同組內服務器上的文件是完全相同的

文件標識:包括兩部分:組名和文件名(包含路徑)

meta data:文件相關屬性,鍵值對(Key Value Pair)方式,如:width=1024,heigth=768

同步機制

同一組內的storage server之間是對等的,文件上傳、刪除等操作可以在任意一臺storage server上進行;

文件同步只在同組內的storage server之間進行,採用push方式,即源服務器同步給目標服務器;

源頭數據才需要同步,備份數據不需要再次同步,否則就構成環路了;

上述第二條規則有個例外,就是新增加一臺storage server時,由已有的一臺storage server將已有的所有數據(包括源頭數據和備份數據)同步給該新增服務器。

 

安裝

環境信息

跟蹤服務器:192.168.4.121 (edu-dfs-tracker-01) 
存儲服務器:192.168.4.125 (edu-dfs-storage-01) 
環境:CentOS 6.6 
用戶:root  
數據目錄:/fastdfs (注:數據目錄按你的數據盤掛載路徑而定)

安裝包: 
  FastDFS v5.05 
  libfastcommon-master.zip(是從 FastDFS 和 FastDHT 中提取出來的公共 C 函數庫) 
  fastdfs-nginx-module_v1.16.tar.gz 
  nginx-1.6.2.tar.gz 
  fastdfs_client_java._v1.25.tar.gz 
          源碼地址:https://github.com/happyfish100/  
          下載地址:http://sourceforge.net/projects/fastdfs/files/  
          官方論壇:http://bbs.chinaunix.net/forum-240-1.html  

一、所有跟蹤服務器和存儲服務器均執行如下操作

1、編譯和安裝所需的依賴包:

       # yum install make cmake gcc gcc-c++ 
 2、安裝 libfastcommon 公告包: 
       (1)上傳或下載 libfastcommon-master.zip 到/usr/local/src 目錄 
       (2)解壓 

# cd /usr/local/src/ 
# unzip libfastcommon-master.zip 
# cd libfastcommon-master 


       (3) 編譯、安裝 

# ./make.sh 
# ./make.sh install 

                libfastcommon 默認安裝到了  /usr/lib64/libfastcommon.so  、/usr/lib64/libfdfsclient.so 

       (4)因爲 FastDFS 主程序設置的 lib 目錄是/usr/local/lib,所以需要創建軟鏈接

   # 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 

3、安裝 FastDFS 

       (1)上傳或下載 FastDFS 源碼包(FastDFS_v5.05.tar.gz)到 /usr/local/src 目錄 

       (2)解壓 

# cd /usr/local/src/ 
# tar -zxvf FastDFS_v5.05.tar.gz 
# cd FastDFS

       (3)編譯、安裝(編譯前要確保已經成功安裝了 libfastcommon) 

# ./make.sh 
# ./make.sh install 

              採用默認安裝的方式安裝,安裝後的相應文件與目錄: 
       A、服務腳本在: 
            /etc/init.d/fdfs_storaged 
           /etc/init.d/fdfs_tracker 
       B、配置文件在(樣例配置文件): 
 
          /etc/fdfs/client.conf.sample 
           /etc/fdfs/storage.conf.sample 
           /etc/fdfs/tracker.conf.sample 
       C、命令工具在/usr/bin/目錄下的: 
 
          fdfs_appender_test 
 
          fdfs_appender_test1 
 
          fdfs_append_file 
 
          fdfs_crc32 
           fdfs_delete_file 
           fdfs_download_file 
           fdfs_file_info 
 
          fdfs_monitor 
 
          fdfs_storaged 

           fdfs_test 
           fdfs_test1 
           fdfs_trackerd 
 
          fdfs_upload_appender 
 
          fdfs_upload_file 
 
         stop.sh 
   
        restart.sh 

       (4)因爲 FastDFS 服務腳本設置的 bin 目錄是/usr/local/bin,但實際命令安裝在/usr/bin,可以進入 
              /user/bin 目錄使用以下命令查看 fdfs 的相關命令: 

 # cd /usr/bin/ 
# ls | grep fdfs 
 

              因此需要修改 FastDFS 服務腳本中相應的命令路徑,也就是把/etc/init.d/fdfs_storaged 
              和/etc/init.d/fdfs_tracker 兩個腳本中的/usr/local/bin 修改成/usr/bin: 
              # vi fdfs_trackerd 
              使用查找替換命令進統一修改:%s+/usr/local/bin+/usr/bin 
              # vi fdfs_storaged 
              使用查找替換命令進統一修改:%s+/usr/local/bin+/usr/bin 

 

二、配置 FastDFS 跟蹤器192.168.4.121 (edu-dfs-tracker-01) 

1、 複製 FastDFS 跟蹤器樣例配置文件,並重命名: 

       # cd /etc/fdfs/ 

       # cp tracker.conf.sample tracker.conf 

2、 編輯跟蹤器配置文件: 

       # vi /etc/fdfs/tracker.conf 

       修改的內容如下: 
       disabled=false

       port=22122 
       base_path=/fastdfs/tracker 
       (其它參數保留默認配置,具體配置解釋請參考官方文檔說明: 
       http://bbs.chinaunix.net/thread-1941456-1-1.html ) 

3、 創建基礎數據目錄(參考基礎目錄 base_path 配置):

       # mkdir -p /fastdfs/tracker

4、 防火牆中打開跟蹤器端口(默認爲 22122):

       # vi /etc/sysconfig/iptables 
       添加如下端口行: 
       -A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT 
       重啓防火牆: 
       # service iptables restart

5、 啓動 Tracker:

       # /etc/init.d/fdfs_trackerd start 
       (初次成功啓動,會在/fastdfs/tracker 目錄下創建 data、logs 兩個目錄) 
       查看 FastDFS Tracker 是否已成功啓動: 
       # ps -ef | grep fdfs

6、 關閉 Tracker:

       # /etc/init.d/fdfs_trackerd stop 
 
7、 設置 FastDFS 跟蹤器開機啓動:

       # vi /etc/rc.d/rc.local 
       添加以下內容: 
       ## FastDFS Tracker 
       /etc/init.d/fdfs_trackerd start

 

三、配置 FastDFS 存儲(192.168.4.125)

1、 複製 FastDFS 存儲器樣例配置文件,並重命名:

       # cd /etc/fdfs/ 
 


       # cp storage.conf.sample storage.conf 

2、 編輯存儲器樣例配置文件:

       # vi /etc/fdfs/storage.conf 
       修改的內容如下: 
       disabled=false 
       port=23000 
       base_path=/fastdfs/storage 
       store_path0=/fastdfs/storage 
       tracker_server=192.168.4.121:22122 
       http.server_port=8888 
       (其它參數保留默認配置,具體配置解釋請參考官方文檔說明: 
       http://bbs.chinaunix.net/thread-1941456-1-1.html ) 

3、 創建基礎數據目錄(參考基礎目錄 base_path 配置):

       # mkdir -p /fastdfs/storage 
 

4、 防火牆中打開存儲器端口(默認爲 23000): 

       # vi /etc/sysconfig/iptables 
       添加如下端口行: 
       -A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT 
       重啓防火牆: 
       # service iptables restart 

5、 啓動 Storage:

       # /etc/init.d/fdfs_storaged start 
          (初次成功啓動,會在/fastdfs/storage 目錄下創建 data、logs 兩個目錄) 
      查看 FastDFS Storage 是否已成功啓動 
      # ps -ef | grep fdfs 
 


 6、 關閉 Storage: 

       # /etc/init.d/fdfs_storaged stop 

7、 設置 FastDFS 存儲器開機啓動: 

      # vi /etc/rc.d/rc.local 
      添加: 
      ## FastDFS Storage 
      /etc/init.d/fdfs_storaged start 

 

四、文件上傳測試(192.168.4.121) 

1、修改 Tracker 服務器中的客戶端配置文件: 
        # cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf 
        # vi /etc/fdfs/client.conf 

              base_path=/fastdfs/tracker 
              tracker_server=192.168.4.121:22122 

 

2、執行如下文件上傳命令: 
     # /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/FastDFS_v5.05.tar.gz 
     返回 ID 號:group1/M00/00/00/wKgEfVUYNYeAb7XFAAVFOL7FJU4.tar.gz 
       (能返回以上文件 ID,說明文件上傳成功)

 

五、在每個存儲節點上安裝 nginx 

1、fastdfs-nginx-module 作用說明 

FastDFS 通過 Tracker 服務器,將文件放在 Storage 服務器存儲,但是同組存儲服務器之間需要進入文件複製,有同步延遲的問題。假設 Tracker 服務器將文件上傳到了 192.168.4.125,上傳成功後文件 ID已經返回給客戶端。此時 FastDFS 存儲集羣機制會將這個文件同步到同組存儲 192.168.4.126,在文件還沒有複製完成的情況下,客戶端如果用這個文件 ID 在 192.168.4.126 上取文件,就會出現文件無法訪問的錯誤。而 fastdfs-nginx-module 可以重定向文件連接到源服務器取文件,避免客戶端由於複製延遲導致的文件無法訪問錯誤。(解壓後的 fastdfs-nginx-module 在 nginx 安裝時使用) 

2、上傳 fastdfs-nginx-module_v1.16.tar.gz 到/usr/local/src 

3、解壓 
     # cd /usr/local/src/ 
     # tar -zxvf fastdfs-nginx-module_v1.16.tar.gz 

4、修改 fastdfs-nginx-module 的 config 配置文件 

     # cd fastdfs-nginx-module/src 
      # vi config 
     CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/" 
     修改爲: 
     CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/" 
     (注意:這個路徑修改是很重要的,不然在 nginx 編譯的時候會報錯的) 

5、上傳當前的穩定版本 Nginx(nginx-1.6.2.tar.gz)到/usr/local/src 目錄 

6、安裝編譯 Nginx 所需的依賴包 

     # yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel 

7、編譯安裝 Nginx(添加 fastdfs-nginx-module 模塊) 

     # cd /usr/local/src/ 
     # tar -zxvf nginx-1.6.2.tar.gz 
     # cd nginx-1.6.2 
     # ./configure --add-module=/usr/local/src/fastdfs-nginx-module/src 
     # make && make instal

8、複製 fastdfs-nginx-module 源碼中的配置文件到/etc/fdfs 目錄,並修改 

     # cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ 
      # vi /etc/fdfs/mod_fastdfs.conf 
      修改以下配置: 
     connect_timeout=10 
     base_path=/tmp 
     tracker_server=192.168.4.121:22122 
      storage_server_port=23000 
      group_name=group1 
      url_have_group_name = true 
     store_path0=/fastdfs/storage 

9、複製 FastDFS 的部分配置文件到/etc/fdfs 目錄 
     # cd /usr/local/src/FastDFS/conf 
     # cp http.conf mime.types /etc/fdfs/

10、在/fastdfs/storage 文件存儲目錄下創建軟連接,將其鏈接到實際存放數據的目錄 
     # ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00

11、配置 Nginx 
簡潔版 nginx 配置樣例: 

user  root
worker_processes  1; 
events { 
    worker_connections  1024; 

http { 
    include       mime.types; 
    default_type  application/octet-stream; 
    sendfile        on; 
    keepalive_timeout  65; 
    server { 
        listen      
8888
        server_name  localhost; 
       
location ~/group([0-9])/M00 { 
            #alias /fastdfs/storage/data; 
            ngx_fastdfs_module; 
        } 

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

注意、說明: 

A、8888 端口值是要與/etc/fdfs/storage.conf 中的 http.server_port=8888 相對應(就是fastdfs存儲節點的服務端口), 
因爲 http.server_port 默認爲 8888,如果想改成 80,則要對應修改過來。 
B、Storage 對應有多個 group 的情況下,訪問路徑帶 group 名,如/group1/M00/00/00/xxx, 
對應的 Nginx 配置爲: 
location ~/group([0-9])/M00
  ngx_fastdfs_module; 

C、如查下載時如發現老報 404,將 nginx.conf 第一行 user nobody 修改爲 user root 後重新啓動。 

 

12、防火牆中打開 Nginx 的 8888 端口 
 # vi /etc/sysconfig/iptables 
 添加: 
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT 
 # service iptables restart 
 

13、啓動 Nginx 
 # /usr/local/nginx/sbin/nginx 
 ngx_http_fastdfs_set pid=xxx 
 (重啓 Nginx 的命令爲:/usr/local/nginx/sbin/nginx -s reload) 
 
14、通過瀏覽器訪問測試時上傳的文件 
 http://192.168.4.125:8888/group1/M00/00/00/wKgEfVUYNYeAb7XFAAVFOL7FJU4.tar.gz  
 

六:代碼樣例的使用

根據官網的地址

https://sourceforge.net/projects/fastdfs/files/

可以去下載自己需要的樣例

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