FastDFS 安裝與使用
1. 什么是 FastDFS
FastDFS是一個開源的高性能分布式文件系統(DFS)。 它的主要功能包括:文件存儲,文件同步和文件訪問,以及高容量和負載平衡的設計。 FastDFS應滿足基於照片共享站點和視頻共享站點等文件服務的網站的要求。
Github介紹: https://github.com/happyfish100/fastdfs
Github文檔: https://github.com/happyfish100/fastdfs/wiki
2. 架構
FastDFS 官方介紹分為兩部分:tracker-server(跟蹤服務器)和 storage-server(存儲服務器)。實際應用中還包含一個 nginx 下載服務器。我們分這三部分來講:
tracker-server
跟蹤服務器:負責文件訪問的調度和負載平衡。管理所有的存儲服務器。
storage-server
存儲服務器:存儲文件以及文件管理功能。包括:文件存儲,文件同步,提供文件訪問接口。 它還管理元數據,這些元數據表示為文件的鍵值對。
存儲系統包含一個或多個卷,這些卷的文件在這些卷中是獨立的。 整個存儲系統的容量等於所有容量的總和。 文件卷包含一個或多個存儲服務器,這些服務器的文件在這些服務器中相同。 文件卷中的服務器相互備份,所有這些服務器都是負載平衡的。 將存儲服務器添加到卷時,此卷中已存在的文件會自動復制到此新服務器,完成此復制后,系統將在線將此服務器切換為提供存儲服務。
client-cluster
客戶端服務器:上傳和下載數據。
3. 部署結構
4. 一個完整的用例圖
5. 安裝與使用
本人使用的是 ubuntu14.04 環境,在其他系統環境下的安裝方式不一致,詳情可以參考 官方wiki
編譯環境
首先配置編譯環境,安裝必要的庫包。
一鍵安裝:
sudo apt-get install gcc g++ make automake autoconf libtool libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev
磁盤目錄
說明 | 位置 |
---|---|
所有安裝包 | /usr/local/src |
數據存儲位置 | /home/dfs/ |
mkdir /home/dfs #創建數據存儲目錄
cd /usr/local/src #切換到安裝目錄准備下載安裝包
安裝 libfatscommon
git clone https://github.com/happyfish100/libfastcommon.git --depth 1
cd libfastcommon/
./make.sh && ./make.sh install #編譯安裝
安裝 FastDFS
cd ../ #返回上一級目錄
git clone https://github.com/happyfish100/fastdfs.git --depth 1
cd fastdfs/
./make.sh && ./make.sh install #編譯安裝
#配置文件准備
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf #客戶端文件,測試用
cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/ #供nginx訪問使用
cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/ #供nginx訪問使用
安裝 fastdfs-nginx-module
cd ../ #返回上一級目錄
git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
安裝nginx
wget http://nginx.org/download/nginx-1.15.4.tar.gz #下載nginx壓縮包
tar -zxvf nginx-1.15.4.tar.gz #解壓
cd nginx-1.15.4/
#添加fastdfs-nginx-module模塊
./configure --add-module=/usr/local/src/fastdfs-nginx-module/src/
make && make install #編譯安裝
這里推薦下載源碼編譯安裝,如果通過 sudo apt-get install nginx
方式安裝的話,不容易配置 fastdfs-nginx-module
模塊,在后繼的部署過程中容易報錯。
FastDFS 單機部署 和 分布式部署 兩種方式,這里以 單機部署為例:
單機部署
tracker 配置
#服務器ip為 192.168.52.1
#建議用ftp下載下來這些文件 本地修改
vim /etc/fdfs/tracker.conf
#需要修改的內容如下
port=22122 # tracker服務器端口(默認22122,一般不修改)
base_path=/home/dfs # 存儲日志和數據的根目錄
storage 配置
vim /etc/fdfs/storage.conf
#需要修改的內容如下
port=23000 # storage服務端口(默認23000,一般不修改)
base_path=/home/dfs # 數據和日志文件存儲根目錄
store_path0=/home/dfs # 第一個存儲目錄
tracker_server=192.168.52.1:22122 # tracker服務器IP和端口
http.server_port=8888 # http訪問文件的端口(默認8888,看情況修改,和nginx中保持一致)
配置 nginx 訪問
vim /etc/fdfs/mod_fastdfs.conf
#需要修改的內容如下
tracker_server=192.168.52.1:22122 #tracker服務器IP和端口
url_have_group_name=true
store_path0=/home/dfs
#配置nginx.config
vim /usr/local/nginx/conf/nginx.conf
#添加如下配置
server {
listen 8888; ## 該端口為storage.conf中的http.server_port相同
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
6. 運行 FastDFS
關閉防火牆
如果防火牆打開了的話記得關閉,不然無法啟動 FastDFS
#不關閉防火牆的話無法使用
systemctl stop firewalld.service #關閉
systemctl restart firewalld.service #重啟
啟動tracker服務
/etc/init.d/fdfs_trackerd start #啟動tracker服務
啟動storage服務
/etc/init.d/fdfs_storaged start #啟動storage服務
重啟 nginx
/usr/local/nginx/sbin/nginx -s reload #重啟nginx
這里重啟 nginx 我遇到了一些問題,如果你也跟我一樣啟動失敗的話,記得檢查下 nginx 是否之前沒有啟動,或是有沒有進程占用了 nginx 的端口號,導致啟動失敗。
啟動 nginx:
/usr/local/nginx/sbin/nginx #啟動nginx
查看 nginx 相關端口號:
ps -ef | grep nginx
7. client 測試
#保存后測試,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
然后在瀏覽器中打開 服務器網址+端口號+ID,查看是否能返回結果,比如輸入:
192.168.52:8888/group1/M00/00/00/xx.tar.gz