FastDFS分散式文件系統安裝與使用

介紹

FastDFS是由淘寶的餘慶先生所開發,是一個輕量級、高性能的開源分散式文件系統,用純C語言開發,包括文件存儲、文件同步、文件訪問(上傳、下載)、存取負載均衡、在線擴容、相同內容只存儲一份等功能,適合有大容量存儲需求的應用或系統。

FastDFS系統架構:

fastdfs文件上傳流程

1、client詢問tracker上傳到的storage,不需要附加參數;

2、tracker返回一台可用的storage;

3、client直接和storage通訊完成文件上傳。

fastdfs文件下載流程

1、client詢問tracker下載文件的storage,參數為文件標識(組名和文件名);

2、tracker返回一台可用的storage;

3、client直接和storage通訊完成文件下載。

術語

FastDFS兩個主要的角色:Tracker Server 和 Storage Server

Tracker Server:跟蹤伺服器,主要負責調度storage節點與client通信,在訪問上起負載均衡的作用,和記錄storage節點的運行狀態,是連接client和storage節點的樞紐。

Storage Server:存儲伺服器,保存文件和文件的meta data(元數據)

Group:文件組,也可以稱為卷。同組內伺服器上的文件是完全相同的,做集群時往往一個組會有多台伺服器,上傳一個文件到同組內的一台機器上後,FastDFS會將該文件即時同步到同組內的其它所有機器上,起到備份的作用。

meta data:文件相關屬性,鍵值對(Key Value Pair)方式,如:width_=1024, height=768。和阿里雲OSS的meta data相似。

FastDFS單節點安裝 - 伺服器規劃

跟蹤伺服器(Tracker Server):192.168.10.245

存儲伺服器(Storage Server):192.168.10.245(分散式情況下可以分開)

操作系統:CentOS7

用戶:root

數據存儲目錄:/fastdfs

安裝包:

fastdfs-master-V5.05.zip:FastDFS源碼

libfastcommon-master.zip:(從 FastDFS 和 FastDHT 中提取出來的公共 C 函數庫)

fastdfs-nginx-module-master.zip:storage節點http服務nginx模塊

nginx-1.10.0.tar.gz:Nginx安裝包

安裝包下載地址:點我下載

將所有的壓縮包全部上傳到伺服器/usr/local/src目錄下

安裝服務所需程序包(分散式情況下都要安裝)

首先安裝所需要的依賴包

yum install make cmake gcc gcc-c++

然後安裝libfatscommon

cd /usr/local/srcunzip libfastcommon-master.zipcd libfastcommon-master./make.sh./make.sh install

安裝FastDFS

cd /usr/local/srcunzip fastdfs-master-V5.05.zipcd fastdfs-master./make.sh./make.sh install

採用默認安裝方式,相應的文件與目錄如下

腳本位置

/etc/init.d/fdfs_storaged/etc/init.d/fdfs_trackerd

配置文件地址

/etc/fdfs

配置tracker伺服器

1:複製tracker樣例配置文件,並重命名

cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

2:修改tracker.conf配置文件

vim /etc/fdfs/tracker.conf#內容如下disabled=false # 啟用配置文件port=22122 # tracker伺服器埠(默認22122)base_path=/fastdfs/tracker # 存儲日誌和數據的根目錄

3: 創建base_path指定的目錄

mkdir -p /fastdfs/tracker

4:防火牆中打開tracker伺服器端:22122(百度自行開啟或測試環境中直接關閉防火牆)

5:啟動tracker伺服器

/etc/init.d/fdfs_trackerd start

初次啟動,會在/fastdfs/tracker目錄下生成logs、data兩個目錄。

檢查FastDFS Tracker Server是否啟動成功:

ps -ef | grep fdfs_trackerd

這樣就表示tracker啟動成功

6:停止tracker伺服器

/etc/init.d/fdfs_trackerd stop

到這裡Tracker服務就啟動配置完成了

#############################################

配置Storage服務

之前安裝軟體服務都必須要安裝,然後這裡直接配置storage配置文件。

1: 複製storage樣例配置文件,並重命名

cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

2:修改配置文件

vi /etc/fdfs/storage.conf#內容如下disabled=false # 啟用配置文件port=23000 # storage服務埠base_path=/fastdfs/storage # 數據和日誌文件存儲根目錄store_path0=/fastdfs/storage # 第一個存儲目錄tracker_server=192.168.10.245:22122 # tracker伺服器IP和埠http.server_port=8888 # http訪問文件的埠(默認8888)

3:創建數據目錄

mkdir -p /fastdfs/storage

4:防火牆開放埠

5:啟動storage伺服器

/etc/init.d/fdfs_storaged start

初次啟動,會在/fastdfs/storage目錄下生成logs、data兩個目錄。

檢查FastDFS Tracker Server是否啟動成功

ps -ef | grep fdfs_storaged

這樣就表示啟動成功。

6:停止storage伺服器

/etc/init.d/fdfs_storaged stop

##############################

配置完成,上傳測試(fastdfs自帶測試)

文件上傳測試

#直接編寫配置文件cp /etc/fdfs/client.conf.sample /etc/fdfs/client.confvim /etc/fdfs/client.conf# 修改以下配置,其它保持默認base_path=/fastdfs/trackertracker_server=192.168.10.245:22122

執行上傳命令

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/include/stdio.h

返迴文件路徑:group1/M00/00/00/wKgK9VrTbmGAcVpaAAB7mZt7HdQ73695.h,表明上傳成功。我們配置成功。

#######################################

我們要配置的是一個文件伺服器,而不是單獨的測試環境

這裡我們還需要配置fastdfs-nginx-module和nginx

安裝配置fastdfs-nginx-module(只在storage節點安裝)

1:fastdfs-nginx-module 作用說明 (集群情況下說明)

FastDFS 通過 Tracker 伺服器,將文件放在 Storage 伺服器存儲,但是同組存儲伺服器之間需要進入文件複製,有同步延遲的問題。假Tracker 伺服器將文件上傳到了 192.168.10.245,上傳成功後文件ID已經返回給客戶端。此時 FastDFS 存儲集群機制會將這個文件同步到同組存儲 192.168.10.246,在文件還沒有複製完成的情況下,客戶端如果用這個文件 ID 在 192.168.10.100 上取文件,就會出現文件無法訪問的錯誤。而 fastdfs-nginx-module 可以重定向文件連接到源伺服器取文件,避免客戶端由於複製延遲導致的文件無法訪問錯誤.

:2:解壓fastdfs-nginx-module-master.zip

cd /usr/local/srcunzip fastdfs-nginx-module-master.zip

3:安裝nginx

安裝nginx依賴項

yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

解壓nginx並安裝

tar -zxvf nginx-1.10.0.tar.gzcd nginx-1.10.0/./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/usr/local/src/fastdfs-nginx-module-master/srcmakemake install

nginx操作命令

nginx#啟動nginxnginx# 可通過ps -ef | grep nginx查看nginx是否已啟動成功#停止nginxnginx -s stop# 重新啟動nginx -s reload

4: 複製 fastdfs-nginx-module 源碼中的配置文件到/etc/fdfs 目錄並進行配置

cp /usr/local/src/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/#修改以下配置connect_timeout=10 # 客戶端訪問文件連接超時時長(單位:秒)base_path=/tmp # 臨時目錄tracker_server=192.168.10.245:22122 # tracker服務IP和埠storage_server_port=23000 # storage服務埠group_name=group1 # 組名url_have_group_name=true # 訪問鏈接前綴加上組名store_path0=/fastdfs/storage # 文件存儲路徑#其它配置保持默認即可。

5: 複製 FastDFS 的部分配置文件到/etc/fdfs 目錄

cd /usr/local/src/fastdfs-master/confcp http.conf mime.types /etc/fdfs/

6:在/fastdfs/storage文件存儲目錄下創建軟連接,將其鏈接到實際存放數據的目錄

ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00

7:配置nginx配置文件

簡潔版(配置文件在/opt/nginx/conf下):

user nobody;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 { ngx_fastdfs_module; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}

注意一: 8888 埠值是要與/etc/fdfs/storage.conf 中的http.server_port=8888 相對應,因為 http.server_port 默認為 8888,如果想改成 80,則要對應修改過來。

注意二:Storage 對應有多個 group 的情況下,訪問路徑帶 group 名,如/group1/M00/00/00/xxx,對應的 Nginx 配置為:

#默認這樣配置location ~/group([0-9])/M00 { ngx_fastdfs_module;}

注意三:如查下載時如發現老報 404, 將 nginx.conf 第一行 user nobody 修改為 user root 後重新啟動。

8:防火牆開放8888埠

9:重新啟動nginx

10:訪問文件

192.168.10.245:8888/gro

瀏覽器返回之前我們測試上傳的文件內容信息。

###########################################

Java集成FastDFS上傳文件。

作者: LLL丶衣羊

鏈接:imooc.com/article/26078

來源:慕課網


推薦閱讀:

打造個人品牌 so easy !_慕課手記

有獎徵文002期|聊聊AI人工智慧 贏取2018 GMIC大會門票及IT書籍

慕課網:有獎徵文|談一談你是如何走上擼碼這條不歸路的?

十年磨一劍,慕課網與長城會集結全球AI界頂尖資源聯合打造的「洞見·人工智慧公開課」即將啟幕!

使用PyCharm進行遠程開發和調試


推薦閱讀:

理解卷積神經網路的利器:9篇重要的深度學習論文(下)
scrapy進階,組合多請求抓取Item利器ItemCollector詳解!
攜程圖片服務架構
ICDE:POLARDB定義雲原生資料庫
Spring中的事務管理為我們做了哪些事?

TAG:分散式系統 | Hadoop | 架構 |