1. 程式人生 > >CentOS7搭建FastDFS V5.11分散式檔案系統及Java整合詳細過程(一)

CentOS7搭建FastDFS V5.11分散式檔案系統及Java整合詳細過程(一)

1.緒論

最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的過程中遇到過很多的問題,為了能幫忙到以後搭建FastDFS的同學,少走彎路,與大家分享一下。FastDFS的作者淘寶資深架構餘慶,這個優秀的輕量及的分散式檔案系統的開源沒多久,立馬就火了。由於篇幅較大,本博文共四篇,第一篇主要介紹FastDFS,下載相關軟體包,為搭建做好準備。第二篇會講到在CentOS下搭建FastDFS的詳細過程。第三篇,會講到整合nginx詳細內容。第四篇主要講FastDFS在怎麼用fastdfs-client-java連線,並結合例項。

2.應用場景

3.詳細介紹

FastDFS是一個開源的分散式檔案系統,她對檔案進行管理,功能包括:檔案儲存、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大容量儲存和負載均衡的問題。特別適合以檔案為載體的線上服務,如相簿網站、視訊網站等等。

FastDFS服務端有兩個角色:跟蹤器(tracker)和存儲節點(storage)。跟蹤器主要做排程工作,在訪問上起負載均衡的作用。

儲存節點儲存檔案,完成檔案管理的所有功能:儲存、同步和提供存取介面,FastDFS同時對檔案的meta data進行管理。所謂檔案的meta data就是檔案的相關屬性,以鍵值對(key value pair)方式表示,如:width=1024,其中的key為width,value為1024。檔案meta data是檔案屬性列表,可以包含多個鍵值對。

FastDFS系統結構如下圖所示:
這裡寫圖片描述

跟蹤器和儲存節點都可以由一臺多臺伺服器構成。跟蹤器和儲存節點中的伺服器均可以隨時增加或下線而不會影響線上服務。其中跟蹤器中的所有伺服器都是對等的,可以根據伺服器的壓力情況隨時增加或減少。

為了支援大容量,儲存節點(伺服器)採用了分卷(或分組)的組織方式。儲存系統由一個或多個卷組成,卷與卷之間的檔案是相互獨立的,所有卷 的檔案容量累加就是整個儲存系統中的檔案容量。一個卷可以由一臺或多臺儲存伺服器組成,一個卷下的儲存伺服器中的檔案都是相同的,卷中的多臺儲存伺服器起 到了冗餘備份和負載均衡的作用。

在卷中增加伺服器時,同步已有的檔案由系統自動完成,同步完成後,系統自動將新增伺服器切換到線上提供服務。

當儲存空間不足或即將耗盡時,可以動態添加捲。只需要增加一臺或多臺伺服器,並將它們配置為一個新的卷,這樣就擴大了儲存系統的容量。
FastDFS中的檔案標識分為兩個部分:卷名和檔名,者缺一不可。

3.1 上傳檔案互動過程:

  1. client詢問tracker上傳到的storage,不需要附加引數;
  2. tracker返回一臺可用的storage;
  3. client直接和storage通訊完成檔案上傳。

這裡寫圖片描述

3.2 下載檔案互動過程:

  1. client詢問tracker下載檔案的storage,引數為檔案標識(卷名和檔名);
  2. tracker返回一臺可用的storage;
  3. client直接和storage通訊完成檔案下載。

這裡寫圖片描述

4.FastDFS搭建工具下載

作者的GitHub地址:https://github.com/happyfish100
這次搭建的所有工具,都可以在上面下載到。我搭建的是目前最新版本Version 5.11 2017-05-26。作者還有一個5.10的發行版本,你如果沒有下載最近的,到時候整合nginx的時候可能會遇到:

local/fastdfs-nginx-module/src/common.c:1245: 錯誤:‘FDFSHTTPParams’沒有名為‘support_multi_range’的成員
make[1]: *** [objs/addon/src/ngx_http_fastdfs_module.o] 錯誤 1
make[1]: Leaving directory `/usr/local/nginx-1.10.1'

遇到這個錯誤的原因是,在fastdfs-nginx-module的HISTORY中你可以到:

這裡寫圖片描述
整合的時候,fastdfs-nginx-module中的support_multi_range在Version 5.10中找不到。

Version 5.11對應的fastdfs-nginx-module的Version 1.20
Version 5.10對應的fastdfs-nginx-module的Version 1.19

之所以在安裝前寫了這麼一段話,是因為這個很重要,版本不對應會給接下來的安裝帶來各種問題。

4.1 下載工具:

這裡寫圖片描述

把原始碼下載下來4個zip包,再去下個nginx:

這裡寫圖片描述

4.2 上傳到CentOS

上傳檔案到liunx系統的方法很多。我個人比較喜歡用vsftp上傳。
感興趣的同學可以參考我一另一篇博文:

在windows上直接輸入ftp地址,把剛剛下載好的檔案拖到ftp上即可。
這裡寫圖片描述

在CentOS上檢視:

[[email protected] ~]#ll /usr/yong.cao/ftp/                                                                          
total 19320                                                                                                                            
drwxr-xr-x  10 root root      258 Jun 14 01:26 fastdfs-5.11                                           
-rw-r--r--   1 root root   421773 Jun 17 09:34 fastdfs-5.11.zip                                     
-rw-r--r--   1 root root    75491 Jun 17 09:34 fastdfs-client-java-master.zip               
-rw-r--r--   1 root root    22192 Jun 17 09:34 fastdfs-nginx-module-master.zip        
drwxr-xr-x   5 root root      135 Jun  8 21:51 libfastcommon-master                            
-rw-r--r--   1 root root   478888 Jun 17 09:34 libfastcommon-master.zip                  
-rw-r--r--   1 root root   980831 Jun 17 09:34 nginx-1.12.0.tar.gz                               
-rw-r--r--.  1 root root      150 Jun  4 12:19 record.txt                                                      
-rw-r--r--.  1 root root 17699306 Jun  4 13:32 zookeeper-3.4.6.tar.gz

檢視到剛剛的檔案都在。