1. 程式人生 > >FastDFS叢集搭建

FastDFS叢集搭建

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

       FastDFS為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用FastDFS很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、下載等服務。

       下面來看一張官網提供的叢集圖片,如下圖所示。可以看到,Client端可以有多個,也就是同時支援多個客戶端對FastDFS叢集服務進行訪問,Tracker是跟蹤器,負責協調Client與Storage之間的互動,為了實現高可用性,需要用多個Tracker來做為跟蹤器。Storage是專門用來儲存東西的,而且是分組進行儲存的,每一組可以有多臺裝置,這幾臺裝置儲存的內容完全一致,這樣做也是為了高可用性,當現有分組容量不夠時,我們可以水平擴容,即增加分組來達到擴容的目的。另外需要注意的一點是,如果一組中的裝置容量大小不一致,比如裝置A容量是80G,裝置B的容量是100G,那麼這兩臺裝置所在的組的容量會以小的容量為準,也就是說,當儲存的東西大小超過80G時,我們將無法儲存到該組中了。Client端在與Storage進行互動的時候也與Tracker cluster進行互動,說的通俗點就是Storage向Tracker cluster進行彙報登記,告訴Tracker現在自己哪些位置還空閒,剩餘空間是多大。

   下面再來看一張上傳圖片的時序圖,從中可以看到

    1)Client通過Tracker server將檔案上傳到Storage server,它先向Tracker進行詢問,Tracker檢視一下登記資訊之後
    2)Tracker server向Client返回一臺可用的Storage server的IP地址和埠號。
    3)Client直接通過Tracker server返回的IP地址和埠與其中一臺Storage server建立連線並進行檔案上傳。
    4)上傳完成會向Tracker進行彙報,告訴Tracker它當前是否還留有剩餘空間,以及剩餘空間大小。彙報完之後,Storage將伺服器上儲存圖片的地址返回給Client

,檔案上傳結束。



 再看一張下載圖片的時序圖,步驟如下:

    1)Client通過Tracker server下載指定Storage組中某個Storage server上的某個檔案(檔名包括Storage組名稱)。
    2)Tracker server向Client返回一臺可用的Storage server的IP地址和埠號。
    3)Client直接通過Tracker server返回的IP地址和埠與其中一臺Storage server建立連線並進行檔案下載。

先安裝tracker和group的六臺裝置

tracker:10.0.80.199、10.0.80.200

group:10.0.80.201、10.0.80.202、10.0.80.203、10.0.80.204


1、安裝libfastcommon。

下載地址:https://codeload.github.com/happyfish100/libfastcommon/zip/master

使用命令:unzip libfastcommon-master.zip -d /usr/local/fast/

編譯libfastcommon,我們到/usr/local/fast/libfastcommon-master目錄下,使用命令:./make.sh來進行編譯,接著./make.sh install安裝

建立第軟連結的命令

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

2、安裝FastDFS

下載地址:https://codeload.github.com/happyfish100/fastdfs/zip/master

使用命令:unzip fastdfs-master.zip -d /usr/local/fast/

編譯fastdfs,我們到/usr/local/fast/fastdfs-master目錄下,使用命令:./make.sh來進行編譯,接著./make.sh install安裝

3、配置tracker1(10.0.80.199)和tracker2(10.0.80.200)。我們先到/etc/fdfs/目錄下,使用cp tracker.conf.sample tracker.conf複製一份tracker.conf.sample並更名為tracker.conf

編輯tracker.conf檔案,需要修改的地方有兩處,第一處:base_path,將預設的路徑修改為/fastdfs/tracker。第二處:store_lookup,該值預設是2(即負載均衡策略),現在把它修改為0(即輪詢策略,修改成這樣方便一會兒我們進行測試,當然,最終還是要改回到2的。如果值為1的話表明要始終向某個group進行上傳下載操作,這時下圖中的"store_group=group2"才會起作用,如果值是0或2,則"store_group=group2"不起作用)。

建立命令:mkdir -p /fastdfs/tracker,其中-p表示遞迴建立目錄

 下面我們便使用命令:/etc/init.d/fdfs_trackerd start 進行啟動,啟動之後,我們再檢視該目錄,發現多了兩個目錄data和logs,我們可以通過命令:ps -ef | grep fdfs來檢視tracker是否正常啟動。同理,我們啟動一下10.0.80.200上的tracker。

4、配置storage,按照我們的規劃,10.0.80.20110.0.80.20210.0.80.20310.0.80.204四臺虛擬機器將作為我們的儲存節點,四個節點中同一組的配置應該是相同的,也就是10.0.80.20110.0.80.202一組(組名為group1),10.0.80.20310.0.80.204一組(組名為group2)。

     進入配置檔案目錄/etc/fdfs,然後進行復制storage.conf.sample並更名為storage.conf,使用的命令:cp storage.conf.sample storage.conf

  接下來我們編輯storage.conf檔案,對於group1的10.0.80.20110.0.80.202這兩臺裝置需要修改的配置如下。

       base_path=/fastdfs/storage
       store_path0=/fastdfs/storage
       tracker_server=10.0.80.199:22122
       tracker_server=10.0.80.200:22122


配置完了10.0.80.201,接下來我們把storage.conf檔案複製到10.0.80.20210.0.80.20310.0.80.204這三臺裝置上。其中10.0.80.201這臺裝置與10.0.80.202同屬於group1,因此把配置檔案放到它的/etc/fdfs/目錄後不用做任何修改。但是10.0.80.20310.0.80.204這兩臺裝置需要修改一下,只需要把group_name由group1改為group2

由於四個配置檔案的base_path=/fastdfs/storage和store_path0=/fastdfs/storage都配置成了/fastdfs/storage,但是目前我們這四臺虛擬機器還未建立過該目錄,因此我們需要為這四臺虛擬機器都建立一下該目錄,命令:mkdir -p /fastdfs/storage

使用命令:/etc/init.d/fdfs_storaged start進行啟動,再使用命令:tail -f /fastdfs/storage/logs/storaged.log來檢視啟動資訊

5、當我們所有的tracker和storage節點都啟動成功之後,我們可以在任意的一個儲存節點上檢視儲存叢集的資訊,命令:/usr/bin/fdfs_monitor /etc/fdfs/storage.conf,可以看到叢集資訊。可以看到tracker Server有兩個,當前提供服務的是10.0.80.199,group的數量是2,第一組的IP有10.0.80.20110.0.80.202,第二組的IP有10.0.80.20310.0.80.204

6、tracker和storage叢集上傳圖片

     進入到10.0.80.199 /etc/fdfs/目錄下,cp client.conf.sample client.conf複製一份該檔案並命名為client.conf

     修改的配置有

    base_path=/fastdfs/tracker
    tracker_server=10.0.80.199:22122
    tracker_server=10.0.80.200:22122


使用的命令:/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /usr/local/3.jpg

按回車執行上傳命令後,會返回一個串:group1/M00/00/00/wKicB1jjiFmAOUdkAAHk-VzqZ6w720.jpg,其中group1表示這張圖片被儲存在了哪個組當中,M00代表磁碟目錄,如果電腦只有一個磁碟那就只有M00, 如果有多個磁碟,那就M01、M02...等等。00/00代表磁碟上的兩級目錄,每級目錄下是從00到FF共256個資料夾,兩級就是256*256個

     多次上傳圖片,就可以看到儲存確實是一次group1,一次group2,輪詢進行儲存;

     同處一個組的某臺裝置如果發生了故障,那麼這時上傳的檔案將只能存放到其它同組裝置上,等故障裝置修復後,同組的其它裝置會自動將資料同步到該故障裝置上

7、 到目前為止,我們還是不能夠使用http方式來上傳或下載檔案的,因此我們需要配置下nginx來達到這個目的

      在10.0.80.201下載fastdfs-nginx-module外掛

      下載地址:https://codeload.github.com/happyfish100/fastdfs-nginx-module/zip/master

       進入到/usr/local/nginx-1.12.0/目錄下,然後在下面的輸入框中輸入命令:./configure --add-module=/usr/local/fast/fastdfs-nginx-module/src/

      執行: make && make install