Centos 7.X部署分布式文件系統:FastDFS+Nginx
1.1 介紹
FastDFS是一個開源的,高性能的的分布式文件系統,他主要的功能包括:文件存儲,同步和訪問,設計基於高可用和負載均衡,FastDFS非常適用於基於文件服務的站點,例如圖片分享和視頻分享網站。
FastDFS它
是一個輕量級的開源分布式文件系統,主要解決了大容量的文件存儲和高並發訪問的問題,文件存取時實現了負載均衡。支持存儲服務器在線擴容,支持相同的文件只保存一份,節約磁盤。
FastDFS
只能通過Client API訪問,不支持POSIX訪問方式。FastDFS適合中大型網站使用,用來存儲資源文件(如:圖片、文檔、視頻等)
1.2 FastDFS組成
tracker server
跟蹤服務器:用來調度來自客戶端的請求。且在內存中記錄所有存儲組和存儲服務器的信息狀態。
storage server
存儲服務器:用來存儲文件(data)和文件屬性(metadata)
client
客戶端:業務請求發起方,通過專用接口基於TCP協議與tracker以及storage server進行交互
group
組,也可稱為卷:同組內上的文件是完全相同的
文件標識
包括兩部分:組名和文件名(包含路徑)
meta data
文件相關屬性:鍵值對(Key Value Pair)方式
fid
文件標識符: (例如: group1/M00/00/00/CgEOxVegXB2AdYafAAAB0b8tBbQ9155303 )
group1:存儲組的組名;上傳完成後,需要客戶端自行保存
M00:服務器配置的虛擬路徑,與磁盤選項store_path#對應
00/00:兩級以兩位16進制數字命名的目錄
CgEOxVegXB2AdYafAAAB0b8tBbQ9155303:文件名,與原文件名並不相同;由storage server根據特定信息生成。文件名包含:源存儲服務器的IP地址、文件創建時間戳、文件大小、隨機數和文件擴展名等
1.3 FastDFS同步機制
同一組內的storage server之間是對等的,文件上傳、刪除等操作可以在任意一臺storage server上進行;
文件同步只在同組內的storage server之間進行,采用push方式,即源服務器同步給目標服務器;
源頭數據才需要同步,備份數據不需要再次同步,否則就構成環路了;
提示:上述第二條規則有個例外,就是新增加一臺storage server時,由已有的一臺storage server將已有的所有數據(包括源頭數據和備份數據)同步給該新增服務器。
1.4 FastDFS特性
指標 | 說明 |
系統簡潔性 | 很簡潔,只有兩個角色:tracker、storage |
系統性能 | 很高、沒有使用數據庫,文件同步直接點對點,不經過tracker中轉 |
系統穩定性 | 高、C語言開發,可支持高並發和負載 |
RAID方式 | 分組(組內冗余),具有很高的靈活性 |
通信協議 | 專有協議,下載文件支持HTTP |
屬性(meta,data) | 支持 |
相同內容文件只保存一份 | 支持 |
下載文件時支持文件偏移量 | 支持 |
2、背景
在這裏,我用3臺服務器部署,這3臺服務器都要部署nginx+fastdfs以及相關模塊。3臺服務器部署方式都一樣,只不過storage服務器有些配置會不同,過程有點麻煩,請大家一定要有耐心,一步一步走下去部署是OK的。
2.1 環境說明
172.18.18.111(以下簡稱tracker服務器): nginx、fastdfs(啟動tracker、storage)、fastfds其它模塊
172.18.18.112(以下簡稱storage服務器):nginx、fastdfs(啟動storage)、fastfds其它模塊
172.18.18.113(以下簡稱storage服務器):nginx、fastdfs(啟動storage)、fastfds其它模塊
2.2 軟件包、安裝路徑
準備的軟件包:
nginx-1.9.3.tar.gz lua-5.1.4.tar.gz libfastcommon-1.0.35.zip fastdfs-master.zip LuaJIT-2.1.0-beta2.tar.gz v0.2.19.tar.gz GraphicsMagick-1.3.25.tar.gz GraphicsMagick-1.3.25.tar
所有軟件包上傳路徑:
#cd /usr/src/
安裝路徑:
#/usr/local/
fastdfs配置文件路徑:
#/etc/fdfs/
3、部署FastDFS
3.1、安裝libfastcommon
安裝fastDFS前,首先下載最新版本的libfastcommon進行安裝,上傳至/usr/src目錄中。下載地址https://github.com/happyfish100/libfastcommon/releases
解壓、配置和編譯:
#cd /usr/src/ #unzip libfastcommon-1.0.35.zip #cd libfastcommon-1.0.35/ #./make.sh #./make.sh install
提示:確認make沒有錯誤後,執行安裝,64位系統默認會復制到/usr/lib64下。
設置環境變量、創建軟鏈接:
#export LD_LIBRARY_PATH=/usr/lib64/ #ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
3.2、安裝fastdfs
下載最新版本的fastDFS,上傳至/usr/s
rc目錄中。下載地址:https://github.com/happyfish100/fastdfs
解壓、編譯:
#cd /usr/src/ #unzip fastdfs-master.zip #cd fastdfs-master/ #./make.sh #./make.sh install
提示:確認make沒有錯誤後,執行安裝,默認會安裝到/usr/bin中,會在/etc/fdfs生成以.sample結尾的4個文件,如下所示:
#ll /etc/fdfs/ -rw-r--r-- 1 root root 1461 Aug 12 15:48 client.conf.sample -rw-r--r-- 1 root root 7927 Aug 12 15:48 storage.conf.sample -rw-r--r-- 1 root root 105 Aug 12 15:48 storage_ids.conf.sample -rw-r--r-- 1 root root 7389 Aug 12 15:48 tracker.conf.sample
Centos 7.X部署分布式文件系統:FastDFS+Nginx