【FastDFS篇】FastDFS單節點安裝及使用
第一部分:簡介
- 1、FastDFS是一個人開源的輕量級的分散式檔案系統,它對檔案進行管理,功能包括:檔案儲存、檔案同步、檔案訪問(檔案上傳、下載)等,解決了大容量儲存和負載均衡的問題。特別適合以檔案為載體的線上服務。如,相簿網站、視訊網站等。
- 2、FastDFS實現了軟體方式的RAID,可以使用廉價的IDE硬碟進行儲存。
- 3、支援儲存伺服器線上擴容
- 4、支援相同內容的檔案只儲存一份,節約磁碟空間
- 5、FastDFS只能通過Client API訪問,不支援POSIX訪問方式
系統架構-架構圖:
系統架構-上傳檔案流程圖:
1. client詢問tracker上傳到的storage,不需要附加引數;
2. tracker返回一臺可用的storage;
3. client直接和storage通訊完成檔案上傳
系統架構-下載檔案流程圖:
1. client詢問tracker下載檔案的storage,引數為檔案標識(組名和檔名);
2. tracker返回一臺可用的storage;
3. client直接和storage通訊完成檔案下載
備:相關術語
Tracker Server:跟蹤伺服器,主要做排程工作,在訪問上起負載均衡的作用。記錄storage server的狀態,是連線Client和Storage server的樞紐。
Storage Server:儲存伺服器,檔案和meta data都儲存到儲存伺服器上
group:組,也可稱為卷。同組內伺服器上的檔案是完全相同的
檔案標識:包括兩部分:組名和檔名(包含路徑)
meta data:檔案相關屬性,鍵值對(Key Value Pair)方式,如:width=1024,heigth=768
第二部分:安裝
- 一、準備工作(倆臺機器同時進行)
- 1.準備c的編譯環境:
yum install make cmake gcc gcc-c++
1.1.上傳檔案:
fastdfs_client_java._v1.25.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
FastDFS_v5.05.tar.gz
ngx_cache_purge-2.3.tar.gz
(下載地址:點我噢 密碼:2x9m)2.安裝libfastcommon(倆臺機器同時進行)
- 2.1.上傳libfastcommon-master.zip到/usr/local/software下
- 2.2.進行解壓libfastcommon-master.zip:
命令:unzip libfastcommon-master.zip -d /usr/local/fast/
- 2.3.進入目錄:
cd /usr/local/fast/libfastcommon-master/
- 2.4.進行編譯和安裝:
命令:./make.sh
命令:./make.sh install
備註:注意看預設安裝的路徑:libfastcommon預設安裝到了/usr/lib64/這個位置 - 2.5.進行軟體建立。FastDFS主程式設定的目錄為/usr/local/lib/,所以我們需要建立/
usr/lib64/下的一些核心執行程式的軟連線檔案。
命令:mk dir /usr/local/lib/
命令:ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
命令:ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
命令:ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
命令:ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
- 3.安裝FastDFS
- 3.1 進入到cd /usr/local/software下,解壓FastDFS_v5.05.tar.gz檔案
命令:cd /usr/local/software
命令:tar -zxvf FastDFS_v5.05.tar.gz -C /usr/local/fast/
- 3.2 安裝編譯
命令:cd /usr/local/fast/FastDFS/
編譯命令:./make.sh
安裝命令:./make.sh install
- 3.3.採用預設安裝方式指令碼檔案說明:
1、服務指令碼在:cd /etc/init.d && ls | grep fdfs
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd
2、配置檔案在:cd /etc/fdfs
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
3、命令列工具在/usr/bin/目錄下
Fdfs_*的一些列執行指令碼
cd /usr/bin/ && ls | grep fdfs
4、因為FastDFS服務指令碼設定的bin目錄為/usr/local/bin/下,但是實際我們安裝在了/usr/bin/下面。所以我們需要修改FastDFS配置檔案中的路徑,也就是需要修改倆
個配置檔案:
- 3.1 進入到cd /usr/local/software下,解壓FastDFS_v5.05.tar.gz檔案
命令:vim /etc/init.d/fdfs_storaged
進行全域性替換命令:%s+/usr/local/bin+/usr/bin
命令:vim /etc/init.d/fdfs_trackerd
進行全域性替換命令:%s+/usr/local/bin+/usr/bin
- 4、配置跟蹤器(注意是tracker的節點)
- 4.1 進入 cd
/etc/fdfs/目錄配置跟蹤器檔案(注意是tracker節點),把tracker.conf.samp
le檔案進行cope一份:去修改tracker.conf檔案
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
- 4.2 修改tracker.conf檔案
命令:vim /etc/fdfs/tracker.conf
如下圖所示:我們暫時修改配置檔案裡的base_path即可。
- 4.1 進入 cd
修改為自己的路徑地址:base_path=/fastdfs/tracker
注意:對於tracker.conf配置檔案引數解釋可以找官方文件,地址為:
http://bbs.chinaunix.net/thread-1941456-1-1.html
- 4.3 最後我們一定要建立之前定義好的目錄(也就是/fastdfs/tracker):
命令:mkdir -p /fastdfs/tracker - 4.4 關閉防火牆:(我們在學習時可以不用考慮防火牆的問題)
Vim /etc/sysconfig/iptables
新增:-A INPUT -m state –state NEW -m tcp -p tcp –dport 22122 -j ACCEPT
重啟:service iptables restart - 4.5 啟動跟蹤器
如圖所示:cd /fastdfs/tracker/ && ll
測試為空。
啟動tracker命令:/etc/init.d/fdfs_trackerd start
檢視程序命令:ps -el | grep fdfs
cd /fastdfs/tracker/ && ll
停止tracker命令:/etc/init.d/fdfs_trackerd stop
- 4.6.可以設定開機啟動跟蹤器:(一般生產環境需要開機啟動一些服務,如keepalived、linux、tomcat等等)
命令:vim /etc/rc.d/rc.local
加入配置:/etc/init.d/fdfs_trackerd start
- 4.3 最後我們一定要建立之前定義好的目錄(也就是/fastdfs/tracker):
5.配置FastDFS儲存(另外一個非tracker節點!)
5.1進入檔案目錄:cd /etc/fdfs/,進行copy storage檔案一份
命令:cd /etc/fdfs/
命令:cp storage.conf.sample storage.conf
5.2 修改storage.conf檔案
命令:vim /etc/fdfs/storage.conf
修改內容:
base_path=/fastdfs/storage
store_path0=/fastdfs/storage
tracker_server=192.168.1.172:22122
http.server_port=8888- 5.3 建立儲存目錄:
mkdir -p /fastdfs/storage
- 5.4 開啟防火牆:
命令:vim /etc/sysconfig/iptables
新增:-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
重啟:service iptables restart
- 5.5 啟動儲存(storage)
命令:/etc/init.d/fdfs_storaged start (關閉:/etc/init.d/fdfs_storaged stop)
(初次啟動成功後會在/fastdbf/storage/ 目錄下建立 data、logs倆個目錄) - 5.6 檢視FastDFS storage 是否啟動成功
命令:ps -ef | grep fdfs
並且我們進入到/fastdfs/storage/data/資料夾下會看到一些目錄檔案(256*256)如下:
命令:cd /fastdfs/storage/data/ && ls
- 5.7同理,也可以設定開機啟動儲存器:(一般生產環境需要開機啟動一些服務,
如keepalived、linux、tomcat等等)
命令:vim /etc/rc.d/rc.local
加入配置:/etc/init.d/fdfs_storaged start
到此為止我們的FastDFS環境已經搭建完成!
6、測試環境
6.1 我們先使用命令上傳一個檔案。注意:是在tracker(跟蹤器)中上傳。
首先我們在跟蹤器(tracker節點)裡copy一份client.conf檔案。
命令:cd /etc/fdfs/
命令:cp client.conf.sample client.conf
6.2 編輯client.conf檔案
命令:vim /etc/fdfs/client.conf
修改內容:
base_path=/fastdfs/tracker
tracker_server=trackerIP:221226.3 我們找到命令的指令碼位置,並且使用命令,進行檔案的上傳:
命令:cd /usr/bin/
命令:ls | grep fdfs
6.4 使用命令fdfs_upload_file進行上傳操作:
首先,我們先看一下儲存器(192.168.1.173),進入到data下,在進入00資料夾
下,發現00資料夾下還有一堆資料夾,然後繼續進入00資料夾下,最終我們所進入的資料夾為:
/fastdfs/storage/data/00/00
裡面什麼檔案都沒有。
然後,我們進行上傳操作,比如把之前的/usr/local/software/資料夾下的某一個
檔案上傳到FastDFS系統中去,在跟蹤器(trancker節點)中上傳檔案,命令如下:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/software/FastDFS_v5.05.tar.gz
(臨時測試用,後面舉例用圖片)
最後我們發現,命令執行完畢後,返回一個group1/M00/00/00/…的ID,其實就
是返回當前所上傳的檔案在儲存器(storeage節點)中的哪一個組、哪一個目
錄位置,所以我們檢視儲存器中的/fastdfs/storage/data/00/00資料夾位置,發現
已經存在了剛才上傳的檔案,到此為止,我們的測試上傳檔案已經OK了。如下
7、FastDFS與Nginx整合
- 7.1 首先兩臺機器裡必須先安裝nginx
- 7.2 然後我們在儲存節點上(storeage節點)安裝fastdfs-nginx-module_v1.16.tar.gz包進行整合。
cd /usr/local/software/
tar -zxvf /usr/local/software/fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fast/
- 7.3 進入目錄:
cd fastdfs-nginx-module/src/
- 7.4 編輯配置檔案config
命令:vim /usr/local/fast/fastdfs-nginx-module/src/config
修改內容:去掉下圖中的local檔案層次
修改完畢為
- 7.5 FastDFS與nginx進行整合
首先把之前的nginx進行刪除
目錄命令:cd /usr/local/
刪除命令:rm -rf nginx
進入到nginx目錄命令:cd nginx-1.6.2/
加入模組命令:./configure --add-module=/usr/local/fast/fastdfs-nginx-module/src/
重新編譯命令:make && make install
- 7.6 複製fastdfs-ngin-module中的配置檔案,到/etc/fdfs目錄中,如圖所示:
copy命令:cp /usr/local/fast/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
- 7.7 進行修改 /etc/fdfs/ 目錄下,我們剛剛copy過來的mod_fastdfs.conf 檔案。
命令:vim /etc/fdfs/mod_fastdfs.conf
修改內容:比如連線超時時間、跟蹤器路徑配置、url的group配置、
connect_timeout=10
tracker_server=192.168.1.172:22122
url_have_group_name = true
store_path0=/fastdfs/storage - 7.8 複製FastDFS裡的2個檔案,到/etc/fdfs目錄中,如圖所示:
目錄命令:cd /usr/local/fast/FastDFS/conf/
Copy命令:cp http.conf mime.types /etc/fdfs/
- 7.9.建立一個軟連線,在/fastdfs/storage檔案儲存目錄下建立軟連線,將其連結到實際存放資料的目錄。
ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00
- 7.10 修改Nginx配置檔案,
cd /usr/local/nginx/conf/
命令:vim nginx.conf
修改配置內容如下圖所示:
vim nginx.conf
修改內容為:
listen 8888;
server_name localhost;
location ~/group([0-9])/M00 {
#alias /fastdfs/storage/data;
ngx_fastdfs_module;
}
注意:nginx裡的埠要和第五步 配置FastDFS儲存中的storage.conf檔案配置一致,也就是(http.server_port=88880)
- 7.11 最後檢查防火牆,然後我們啟動nginx服務
啟動命令:/usr/local/nginx/sbin/nginx
,我們剛才上傳了一個檔案,上傳成功,
現在我們使用這個ID用瀏覽器訪問地址:【訪問storeage節點的nginx!!!】
http://192.168.159.40:8888/group1/M00/00/00/wKifKFqx1viANk_pAAIXab_3x9U382.PNG
我們就可以下載這個檔案了,如果是圖片及直接會顯示。
運維注意:我們在使用FastDFS的時候,需要正常關機,不要使用kill -9
強殺FastDFS程序,不然會在檔案上傳時出現丟資料的情況。
到此,我們的FastDFS與Nginx整合完畢。
八:啟動停止服務步驟如下:
啟動命令:
啟動tracker命令:/etc/init.d/fdfs_trackerd start
檢視程序命令:ps -el | grep fdfs
啟動storage命令:/etc/init.d/fdfs_storaged start
檢視程序命令:ps -el | grep fdfs
啟動nginx命令:/usr/local/nginx/sbin/nginx
停止命令:
停止tracker命令:/etc/init.d/fdfs_trackerd stop
關閉storage命令:/etc/init.d/fdfs_storaged stop
關閉nginx命令:/usr/local/nginx/sbin/nginx -s stop