背景
FastDFS是一個開源的輕量級分佈式文件系統,爲互聯網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,解決了大容量存儲和負載均衡的問題,特別適合以文件爲載體的在線服務,如相冊網站、視頻網站等等。對於互聯網應用,和其他分佈式文件系統相比,優勢非常明顯。
出於簡潔考慮,FastDFS沒有對文件做分塊存儲,因此不太適合分佈式計算場景。
在此再次感謝淘寶資深架構師餘慶大神開源瞭如此優秀的輕量級分佈式文件系統,本篇文章就記錄一下FastDFS的最新版本5.11在CentOS7中的安裝與配置。
相關鏈接
源碼地址: https://github.com/happyfish100/
下載地址: http://sourceforge.net/projects/fastdfs/files/
官方論壇: http://bbs.chinaunix.net/forum-240-1.html
環境準備
操作系統:CentOS7
兩臺服務器:192.168.53.141、192.168.53.142
安裝包:
fastdfs-5.11.tar.gz
libfastcommon-1.0.36.tar.gz
fastdfs-nginx-module-master.zip
nginx-1.14.0.tar.gz
服務器規劃:
tracker服務器:192.168.53.141
storage服務器: 192.168.53.142
安裝包獲取
本次安裝爲目前更新的最新版本,所用到的安裝包均來自github上作者最後的releases。
獲取FastDFS安裝包
目前作者最後一次releases的時間的17年6月3號,對應的最新版本是5.11,直接在餘大的GitHub上下載:
https://github.com/happyfish100/fastdfs/releases
獲取libfastcommon安裝包
目前作者最後一次releases的時間的17年4月5號,對應的最新版本是1.0.36,直接在餘大的GitHub上下載:
https://github.com/happyfish100/libfastcommon/releases
獲取fastdfs-nginx-module安裝包
從github上獲取最新的代碼
https://github.com/happyfish100/fastdfs-nginx-module
獲取nginx安裝包
http://nginx.org/en/download.html
獲取完成最新安裝包之後,上傳到/usr/local/src/目錄下。
安裝說明
FastDFS分爲tracker(跟蹤器)和storage(存儲器);
tracker跟蹤器主要做調度工作,在訪問上起負載均衡的作用。
storage存儲器,文件和meta data都保存到存儲服務器上。
group組、卷,組外可橫向拓展,組內服務器上文件相互備份,是完全相同的。
兩臺服務器全部需要安裝libfastcommon和FastDFS,不同點爲tracker和storage配置不同。
安裝FastDFS(全部)
我們準備的兩臺服務器需要全部安裝FastDFS基礎環境
安裝依賴
#安裝依賴
yum -y install gcc-c++ perl
安裝libfastcommon類庫
FastDFS 5.x 取消了對 libevent 的依賴,添加了對 libfastcommon 的依賴,安裝FastDFS必須安裝libfastcommon類庫
tar -zxvf libfastcommon-1.0.36.tar.gz
cd libfastcommon-1.0.36
./make.sh
./make.sh install
執行./make.sh命令進行編譯,沒有error信息的話就說明編譯成功了,最後再執行./make.sh install進行安裝,看到類似如下提示信息就說明libfastcommon已安裝成功:
創建軟連接
因爲 FastDFS 主程序設置的 lib 目錄是/usr/local/lib, 所以需要創建軟鏈接(FastDFS主程序安裝需要依賴此類庫,若不創建軟連接會安裝失敗)ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
安裝FastDFS
tar -zxvf fastdfs-5.11.tar.gz
cd fastdfs-5.11
./make.sh
./make.sh install
沒有報錯信息一般就是安裝成功了,安裝日誌爲:
相關文件和目錄
我們是採用默認安裝的方式安裝的,安裝完成對應的文件和目錄如下:
- 服務腳本:
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_tracker - 配置文件(配置文件樣例):
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/storage_ids.conf.sample
/etc/fdfs/tracker.conf.sample - 命令工具在/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配置FastDFS跟蹤器(192.168.53.141)
複製tracker.conf.sample並重命名爲tracker.conf
cd /etc/fdfs/ cp tracker.conf.sample tracker.conf
編輯配置文件
vi /etc/fdfs/tracker.conf
主要信息及改動情況如下:disabled=false #默認爲false 此處不修改 不啓用=false就是啓用。設計如此,暫不吐槽。 port=22122 #跟蹤器端口號,默認爲22122,生產環境可自行修改,這裏我暫用默認端口 base_path=/fastdfs/tracker #目錄地址 依實際掛載的數據盤自行設置,根目錄必須存在,子目錄會自動創建
其他參數保留默認配置即可,詳細的配置信息可參考官方的文檔說明:
http://bbs.chinaunix.net/thread-1941456-1-1.html
創建基礎數據目錄(base_path對應的路徑)mkdir -p /fastdfs/tracker
防火牆中打開跟蹤器端口(默認爲 22122)firewall-cmd --permanent --zone=public --add-port=22122/tcp firewall-cmd --reload
啓動tracker
/etc/init.d/fdfs_trackerd start
查看tracker是否啓動成功ps -ef | grep fdfs
下面的停止和設置開機啓動爲非必須的操作,我是不想每次重啓服務器都手動啓動一遍,就加了開機啓動!
停止tracker/etc/init.d/fdfs_trackerd stop
設置開機啓動vi /etc/rc.d/rc.local
添加以下內容:## FastDFS Tracker /etc/init.d/fdfs_trackerd start
由於在centos7中,/etc/rc.d/rc.local文件的權限被降低了,沒有執行權限,需要給它添加可執行權限。
chmod +x /etc/rc.d/rc.local
配置FastDFS存儲器(192.168.53.142)
複製storage.conf.sample並重命名爲storage.conf
cd /etc/fdfs/ cp storage.conf.sample storage.conf
編輯配置文件
vi /etc/fdfs/storage.conf
主要信息及改動情況如下:disabled=false #默認爲false 此處不修改 不啓用=false就是啓用。設計如此,這裏也暫不吐槽。 port=23000 #存儲器端口號,默認爲23000,生產環境可自行修改,這裏我暫用默認端口 base_path=/fastdfs/storage #目錄地址 依實際掛載的數據盤自行設置,根目錄必須存在,子目錄會自動創建 store_path0=/fastdfs/storage #存放文件時storage server支持多個路徑,如果不配置base_path0,那邊它就和base_path對應的路徑一樣 tracker_server=192.168.53.141:22122 # tracker_server 的列表 要寫端口的哦 (再次提醒是主動連接tracker_server ) http.server_port=8888 # HTTP服務端口 默認爲8888 生產環境可自行修改,這裏我暫用默認端口
其他參數保留默認配置即可,詳細的配置信息可參考官方的文檔說明:
http://bbs.chinaunix.net/thread-1941456-1-1.html
創建基礎數據目錄(base_path對應的路徑)mkdir -p /fastdfs/storage
防火牆中打開跟蹤器端口(默認爲 23000)firewall-cmd --permanent --zone=public --add-port=23000/tcp firewall-cmd --reload
啓動storaged
/etc/init.d/fdfs_storaged start
(初次啓動會在/fastdfs/storage目錄下生成data和logs目錄)
查看storage是否啓動成功ps -ef | grep fdfs
下面的停止和設置開機啓動爲非必須的操作,我是不想每次重啓服務器都手動啓動一遍,就加了開機啓動!
停止storaged/etc/init.d/fdfs_storaged stop
設置開機啓動vi /etc/rc.d/rc.local
添加以下內容:## FastDFS Storaged /etc/init.d/fdfs_storaged start
由於在centos7中,/etc/rc.d/rc.local文件的權限被降低了,沒有執行權限,需要給它添加可執行權限。
chmod +x /etc/rc.d/rc.local
測試文件上傳(192.168.53.141)
修改Tracker服務器中的客戶端配置文件
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf vi /etc/fdfs/client.conf
主要信息及改動情況如下:
base_path=/fastdfs/tracker
tracker_server=192.168.53.141:22122
執行上傳命名/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/fastdfs-5.11.tar.gz
返回 ID 號: group1/M00/00/00/wKg1jlrfY6-Ad3ssAAUkKwe5sE4.tar.gz
(第一個參數爲上傳配置文件,第二個參數爲 需要上傳的文件。能返回以上文件 ID, 說明文件上傳成功)在存儲節點上安裝nginx
安裝nginx和fastdfs-nginx-modulemok模塊
解壓文件cd /usr/local/src/ unzip fastdfs-nginx-module-master.zip tar -zxvf nginx-1.14.0.tar.gz
安裝編譯 Nginx 所需的依賴包
yum -y install pcre* zlib zlib-devel
編譯安裝 Nginx(添加 fastdfs-nginx-module 模塊)./configure --add-module=/usr/local/src/fastdfs-nginx-module-master/src make && make install
複製 fastdfs-nginx-module 源碼中的配置文件到/etc/fdfs 目錄, 並修改
cp /usr/local/src/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/ vi /etc/fdfs/mod_fastdfs.conf
修改以下配置:
connect_timeout=10 #默認爲2 改爲10 2秒太少了 base_path=/tmp tracker_server=192.168.53.141:22122 #tracker跟蹤器地址 storage_server_port=23000 #storage存儲器的端口 group_name=group1 #組名 url_have_group_name = true #url hava group name 顧名思義 默認爲false 改爲true store_path0=/fastdfs/storage #存儲器存儲地址
複製FastDFS 的部分配置文件到/etc/fdfs 目錄
cd /usr/local/src/fastdfs-5.11/conf/ cp http.conf mime.types /etc/fdfs/
在/fastdfs/storage 文件存儲目錄下創建軟連接,將其鏈接到實際存放數據的目錄
ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00
配置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; } } }
防火牆打開8888端口
firewall-cmd --permanent --zone=public --add-port=8888/tcp firewall-cmd --reload
啓動nginx後訪問剛剛測試上傳的文件地址
http://192.168.53.142:8888/group1/M00/00/00/wKg1jlrfY6-Ad3ssAAUkKwe5sE4.tar.gz
能正常下載文件,此時fdfs單節點的安裝和配置完成。