FastDFS集群搭建與實戰
FastDFS是一個輕量級的分散式文件系統,在實際生產環境往往以集群的形式部署,保證了服務的高可用。本文重點闡述FastDFS集群的搭建和項目實戰。
工作流程
上傳流程圖
下載流程圖
底層原理
FastDFS不會對文件進行分塊存儲,直接保存到Storage服務上,這也是不適合超大文件存儲的原因,官方建議(4K~500M),優點:簡介高效。
FastDFS採用分組存儲方式,同一組可以包括多個Storage Server,其中一個Storage接收到上傳的文件,會同步文件到同組其他Storage Server。
一個組的存儲容量為組內Storage Server容量最小的那個。優點:組內服務壓力較大時可以增加Storage Server來緩解壓力;系統容量不足時增加組來獲得更大的存儲空間。
文件上傳成功返回的文件ID由組名,磁碟目錄和文件名構成。
集群伺服器規劃
系統環境:centos 7.3
跟蹤伺服器1(Tracker):192.168.72.135
跟蹤伺服器2(Tracker):192.168.72.136
存儲伺服器1(Storage):192.168.72.135---(group1)
存儲伺服器2(Storage):192.168.72.136---(group1)
存儲伺服器3(Storage):192.168.72.137---(group2)
由於電腦性能有限,但要模擬多group,只虛擬了3個節點,對group1做了兩個節點來備份數據,group2為單節點,生產環境要每個組至少兩個節點來保證高可用。
安裝包
fastdfs-5.11.tar.gz
fastdfs-nginx-module-master.zip
libfastcommon-1.0.36.tar.gz
nginx-1.8.1.tar.gz
集群部署
Tracker和Storage部署
1:節點1,節2,節點3分別安裝FastDFS,具體安裝參考上篇文章:FastDFS極速入門
2:分別關閉三個節點的防火牆,或者配置防火牆開放埠,關閉防火牆: systemctl stop firewalld
3:修改節點1的tracker.conf配置文件:
>mkdir /data/fdfs-tracker
>vi /etc/fdfs/tracker.conf
把base_path修改為:base_path=/data/fdfs-tracker
4:修改節點2的tracker.conf配置文件:同上
5:修改節點1的storage.conf配置文件:
> mkdir/data/fdfs-storage/base
> mkdir /data/fdfs-storage/storage0
>vi /etc/fdfs/storage.conf
把group_name修改為:group_name=group1
把base_path修改為:base_path=/data/fdfs-storage/base
把store_path0修改為:store_path0=/data/fdfs-storage/storage0
把tracker_server修改兩個tracker節點地址:
tracker_server=192.168.72.135:22122
tracker_server=192.168.72.136:22122
6:修改節點2的storage.conf配置文件,同步驟5。
7:修改節點3的storage.conf配置文件,
把group_name修改為:group_name=group2
其他同步驟5。
8:節點1,節點2上啟動tracker服務
>service fdfs_trackerd start
9:節點1,節點2和節點3上啟動storage服務
>service fdfs_storaged start
Tracker和Storage安裝完成,可以使用FastDFS自帶的客戶端進行上傳下載測試,具體操作方法,參考上篇
fastdfs-nginx-module和nginx安裝
所有節點安裝fastdfs-nginx-module模塊
fastdfs-nginx-module模塊作用:
文件上傳到組內一個storage存儲後,storage服務會吧文件同步到組內其他storage,這就存在時間延時問題,如果此時客戶端通過nginx訪問到還未同步完成的組內其他storage會導致文件不存在無法訪問錯誤,fastdfs-nginx-module可以解決該問題的發生,通過重定向到源storage節點來獲取文件。
root目錄解壓fastdfs-nginx-module:
>unzip fastdfs-nginx-module.zip
安裝依賴包:
>yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel
安裝nginx
>tar -zxvf nginx-1.8.1.tar.gz
>cd nginx-1.8.1
>./configure --prefix=/opt/nginx --add-module=/roo/fastdfs-nginx-module/src
>make && make install
複製fastdfs-nginx-module中配置文件到/etc/fdfs目錄,並修改配置文件:
>cp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
>vi /etc/fdfs/mod_fastdfs.conf
tracker_server修改為:
tracker_server=192.168.72.135:22122
tracker_server=192.168.72.136:22122
group_name修改為:
節點1:group_name=group1
節點2:group_name=group1
節點3:group_name=group2
url_have_group_name修改為:
url_have_group_name = true
複製FastDFS部分配置文件到/etc/fdfs目錄:
> cd /root/fastdfs-5.1/conf
>cp http.conf mime.types /etc/fdfs/
修改nginx.conf配置文件:
啟動nginx:
>./nginx -c conf/nginx.conf
到此FastDFS集群已經搭建完成,文件上傳後可以通過任意storage節點上的nginx來獲得文件
實戰
FastDFS提供了C,PHP和java客戶端,選用java客戶端來進行實戰。
創建maven工程,pom.xml文件添加依賴:
添加配置文件
src/main/resoureces目錄下添加fdfs_clent.conf配置文件,內容如下:
創建FdfsClient類
靜態代碼塊:
文件上傳
文件下載
獲得文件屬性
文件刪除
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:碼農code之路 |