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 ServerTracker 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.zipcd /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:訪問文件
http://192.168.10.245:8888/group1/M00/00/00/wKgK9VrTbmGAcVpaAAB7mZt7HdQ73695.h瀏覽器返回之前我們測試上傳的文件內容信息。###########################################
Java集成FastDFS上傳文件。作者: LLL丶衣羊
鏈接:https://www.imooc.com/article/26078
來源:慕課網
推薦閱讀:
打造個人品牌 so easy !_慕課手記
有獎徵文002期|聊聊AI人工智慧 贏取2018 GMIC大會門票及IT書籍
慕課網:有獎徵文|談一談你是如何走上擼碼這條不歸路的?
十年磨一劍,慕課網與長城會集結全球AI界頂尖資源聯合打造的「洞見·人工智慧公開課」即將啟幕!
使用PyCharm進行遠程開發和調試
推薦閱讀:
※理解卷積神經網路的利器:9篇重要的深度學習論文(下)
※scrapy進階,組合多請求抓取Item利器ItemCollector詳解!
※攜程圖片服務架構
※ICDE:POLARDB定義雲原生資料庫
※Spring中的事務管理為我們做了哪些事?