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表示遞迴建立目錄
4、配置storage,按照我們的規劃,10.0.80.201、10.0.80.202、10.0.80.203、10.0.80.204四臺虛擬機器將作為我們的儲存節點,四個節點中同一組的配置應該是相同的,也就是10.0.80.201、10.0.80.202一組(組名為group1),10.0.80.203、10.0.80.204一組(組名為group2)。
進入配置檔案目錄/etc/fdfs,然後進行復制storage.conf.sample並更名為storage.conf,使用的命令:cp storage.conf.sample storage.conf
接下來我們編輯storage.conf檔案,對於group1的10.0.80.201、10.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.202、10.0.80.203、10.0.80.204這三臺裝置上。其中10.0.80.201這臺裝置與10.0.80.202同屬於group1,因此把配置檔案放到它的/etc/fdfs/目錄後不用做任何修改。但是10.0.80.203和10.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.201和10.0.80.202,第二組的IP有10.0.80.203和10.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