FastDFS 安裝與使用

FastDFS 安裝與使用

1. 什么是 FastDFS

FastDFS是一個(gè)開源的高性能分布式文件系統(tǒng)(DFS)。 它的主要功能包括:文件存儲(chǔ),文件同步和文件訪問,以及高容量和負(fù)載平衡的設(shè)計(jì)。 FastDFS應(yīng)滿足基于照片共享站點(diǎn)和視頻共享站點(diǎn)等文件服務(wù)的網(wǎng)站的要求。

Github介紹: https://github.com/happyfish100/fastdfs

Github文檔: https://github.com/happyfish100/fastdfs/wiki

2. 架構(gòu)

FastDFS 官方介紹分為兩部分:tracker-server(跟蹤服務(wù)器)和 storage-server(存儲(chǔ)服務(wù)器)。實(shí)際應(yīng)用中還包含一個(gè) nginx 下載服務(wù)器。我們分這三部分來講:

tracker-server

跟蹤服務(wù)器:負(fù)責(zé)文件訪問的調(diào)度和負(fù)載平衡。管理所有的存儲(chǔ)服務(wù)器。

storage-server

存儲(chǔ)服務(wù)器:存儲(chǔ)文件以及文件管理功能。包括:文件存儲(chǔ),文件同步,提供文件訪問接口。 它還管理元數(shù)據(jù),這些元數(shù)據(jù)表示為文件的鍵值對(duì)。

存儲(chǔ)系統(tǒng)包含一個(gè)或多個(gè)卷,這些卷的文件在這些卷中是獨(dú)立的。 整個(gè)存儲(chǔ)系統(tǒng)的容量等于所有容量的總和。 文件卷包含一個(gè)或多個(gè)存儲(chǔ)服務(wù)器,這些服務(wù)器的文件在這些服務(wù)器中相同。 文件卷中的服務(wù)器相互備份,所有這些服務(wù)器都是負(fù)載平衡的。 將存儲(chǔ)服務(wù)器添加到卷時(shí),此卷中已存在的文件會(huì)自動(dòng)復(fù)制到此新服務(wù)器,完成此復(fù)制后,系統(tǒng)將在線將此服務(wù)器切換為提供存儲(chǔ)服務(wù)。

client-cluster

客戶端服務(wù)器:上傳和下載數(shù)據(jù)。

3. 部署結(jié)構(gòu)

FastDFS架構(gòu)圖.png

4. 一個(gè)完整的用例圖

FastDFS例子.png

5. 安裝與使用

本人使用的是 ubuntu14.04 環(huán)境,在其他系統(tǒng)環(huán)境下的安裝方式不一致,詳情可以參考 官方wiki

編譯環(huán)境

首先配置編譯環(huán)境,安裝必要的庫包。

一鍵安裝:

sudo apt-get install gcc g++ make automake autoconf libtool libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev 
磁盤目錄
說明 位置
所有安裝包 /usr/local/src
數(shù)據(jù)存儲(chǔ)位置 /home/dfs/
mkdir /home/dfs #創(chuàng)建數(shù)據(jù)存儲(chǔ)目錄
cd /usr/local/src #切換到安裝目錄準(zhǔn)備下載安裝包
安裝 libfatscommon
git clone https://github.com/happyfish100/libfastcommon.git --depth 1
cd libfastcommon/
./make.sh && ./make.sh install #編譯安裝
安裝 FastDFS
cd ../ #返回上一級(jí)目錄
git clone https://github.com/happyfish100/fastdfs.git --depth 1
cd fastdfs/
./make.sh && ./make.sh install #編譯安裝
#配置文件準(zhǔn)備
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 #客戶端文件,測(cè)試用
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 ../ #返回上一級(jí)目錄
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 模塊,在后繼的部署過程中容易報(bào)錯(cuò)。


FastDFS 單機(jī)部署 和 分布式部署 兩種方式,這里以 單機(jī)部署為例:

單機(jī)部署

tracker 配置
#服務(wù)器ip為 192.168.52.1
#建議用ftp下載下來這些文件 本地修改
vim /etc/fdfs/tracker.conf
#需要修改的內(nèi)容如下
port=22122  # tracker服務(wù)器端口(默認(rèn)22122,一般不修改)
base_path=/home/dfs  # 存儲(chǔ)日志和數(shù)據(jù)的根目錄
storage 配置
vim /etc/fdfs/storage.conf
#需要修改的內(nèi)容如下
port=23000  # storage服務(wù)端口(默認(rèn)23000,一般不修改)
base_path=/home/dfs  # 數(shù)據(jù)和日志文件存儲(chǔ)根目錄
store_path0=/home/dfs  # 第一個(gè)存儲(chǔ)目錄
tracker_server=192.168.52.1:22122  # tracker服務(wù)器IP和端口
http.server_port=8888  # http訪問文件的端口(默認(rèn)8888,看情況修改,和nginx中保持一致)
配置 nginx 訪問
vim /etc/fdfs/mod_fastdfs.conf
#需要修改的內(nèi)容如下
tracker_server=192.168.52.1:22122  #tracker服務(wù)器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. 運(yùn)行 FastDFS

關(guān)閉防火墻

如果防火墻打開了的話記得關(guān)閉,不然無法啟動(dòng) FastDFS

#不關(guān)閉防火墻的話無法使用
systemctl stop firewalld.service #關(guān)閉
systemctl restart firewalld.service #重啟
啟動(dòng)tracker服務(wù)
/etc/init.d/fdfs_trackerd start #啟動(dòng)tracker服務(wù)
啟動(dòng)storage服務(wù)
/etc/init.d/fdfs_storaged start #啟動(dòng)storage服務(wù)
重啟 nginx
/usr/local/nginx/sbin/nginx -s reload #重啟nginx

這里重啟 nginx 我遇到了一些問題,如果你也跟我一樣啟動(dòng)失敗的話,記得檢查下 nginx 是否之前沒有啟動(dòng),或是有沒有進(jìn)程占用了 nginx 的端口號(hào),導(dǎo)致啟動(dòng)失敗。

啟動(dòng) nginx:

/usr/local/nginx/sbin/nginx #啟動(dòng)nginx

查看 nginx 相關(guān)端口號(hào):

ps -ef | grep nginx

7. client 測(cè)試

#保存后測(cè)試,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz

然后在瀏覽器中打開 服務(wù)器網(wǎng)址+端口號(hào)+ID,查看是否能返回結(jié)果,比如輸入:

192.168.52:8888/group1/M00/00/00/xx.tar.gz
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容