FastDFS分佈式文件系統簡介及單機版安裝步驟詳解

FastDFS是一個開源的輕量級分佈式文件系統,它對文件進行管理,功能包括:文件存儲,文件同步,文件訪問(文件上傳,文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件爲載體的在線服務,如相冊網站,視頻網站等等。FastDFS爲互聯網量身定製,充分考慮了冗餘備份,負載均衡,線性擴容等機制,並注重高可用,高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集羣提供文件上傳,下載等服務。FastDFS服務端有兩個角色:跟蹤器(tracker)和存儲節點(storage)。跟蹤器主要做調度工作,在訪問上起負載均衡的作用,存儲節點存儲文件,完成文件管理的所有功能。

1.安裝環境裝備

跟蹤服務器:192.168.29.128
存儲服務器:192.168.29.129

服務器環境:Centos7
數據目錄:/opt/fastDFS/fastDFSDatadir

2.跟蹤服務器和存儲服務器均執行如下操作

2.1 編譯安裝所需依賴包

# yum install make cmake gcc gcc-c++

2.2 解壓libfastcommon-master.zip(需提前上傳或下載libfastcommon-master.zip到/usr/local/src目錄)

# cd /usr/local/src/
# unzip libfastcommon-master.zip
# cd libfastcommon-master

解壓libfastcommon-master.zip

2.3 編譯安裝

# ./make.sh
# ./make.sh install

libfastcommon 默認安裝到了
/usr/lib64/libfastcommon.so
/usr/lib64/libfdfsclient.so

2.4 因爲 FastDFS 主程序設置的lib目錄是/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

2.5 解壓FastDFS(需提前上傳或下載FastDFS_v5.05.tar.gz到/opt/fastDFS目錄下)

# cd /opt/fastDFS
# tar -zxvf FastDFS_v5.05.tar.gz
# cd FastDFS

解壓FastDFS

2.6 編譯安裝

# ./make.sh
# ./make.sh install

採用默認安裝的方式安裝,安裝後的相應文件與目錄:
A.服務腳本在:
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_tracker

B.配置文件在(樣例配置文件)
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample

C.命令工具在/usr/bin/目錄下的:
fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file
stop.sh
restart.sh

2.7 因爲FastDFS服務腳本設置的bin目錄是/usr/local/bin,但實際命令安裝在/usr/bin,可以進入/user/bin目錄使用以下命令查看fastDFS的相關命令:
這裏寫圖片描述

因此需要修改FastDFS服務腳本中相應的命令路徑,也就是把/etc/init.d/fdfs_storaged和/etc/init.d/fdfs_tracker兩個腳本中的/usr/local/bin修改成/usr/bin:

# vi /etc/init.d/fdfs_trackerd
使用查找替換命令進統一修改:%s+/usr/local/bin+/usr/bin

# vi /etc/init.d/fdfs_storaged
使用查找替換命令進統一修改:%s+/usr/local/bin+/usr/bin

3.配置 FastDFS 跟蹤器(192.168.29.128)

3.1 複製FastDFS跟蹤器樣例配置文件,並重命名:

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

跟蹤器樣例配置文件

3.2 創建數據目錄

# mkdir -p /opt/fastDFS/fastDFSDatadir/tracker

3.3 編輯跟蹤器配置文件

# vi /etc/fdfs/tracker.conf

修改內容如下:
disabled=false
port=22122
base_path=/opt/fastDFS/fastDFSDatadir/tracker

其他配置信息保持默認,具體配置參數可以參考:FastDFS配置參數詳解

3.4 防火牆中打開跟蹤器端口

3.5 啓動Tracker

# /etc/init.d/fdfs_trackerd start

(初次成功啓動,會在/opt/fastDFS/fastDFSDatadir/tracker目錄下創建data,logs兩個目錄)

啓動Tracker

4.配置FastDFS存儲(192.168.29.129)

4.1 複製FastDFS存儲器樣例配置文件,並重命名

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

存儲器樣例配置文件

4.2 創建數據目錄

# mkdir -p /opt/fastDFS/fastDFSDatadir/storage

4.3 編輯存儲器樣例配置文件

# vi /etc/fdfs/storage.conf

修改的內容如下:
disabled=false
port=23000
base_path=/opt/fastDFS/fastDFSDatadir/storage
store_path0=/opt/fastDFS/fastDFSDatadir/storage
tracker_server=192.168.29.128:22122
http.server_port=8888

其他配置信息保持默認,具體配置參數可以參考:FastDFS配置參數詳解

4.4 防火牆中打開存儲器端口

4.5 啓動 Storage

# /etc/init.d/fdfs_storaged start

(初次成功啓動,會在/opt/fastDFS/fastDFSDatadir/storage目錄下創建data,logs兩個目錄)

啓動 Storage

5.文件上傳測試(192.168.29.128)

5.1 複製FastDFS客戶端樣例配置文件,並重命名

# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

這裏寫圖片描述

5.2 修改Tracker服務器中的客戶端配置文件

# vi /etc/fdfs/client.conf

修改內容如下
base_path=/opt/fastDFS/fastDFSDatadir/tracker
tracker_server=192.168.29.128:22122

5.3 執行如下文件上傳命令

# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/fastDFS/FastDFS_v5.05.tar.gz

返回ID:group1/M00/00/00/wKgdgVkKT42AU1H4AAVFOL7FJU4.tar.gz

能返回以上文件ID,說明文件上傳成功

上傳文件測試

6. 在每個存儲節點上安裝Nginx模塊

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

6.2 上傳 fastdfs-nginx-module_v1.16.tar.gz 到/usr/local/src

6.3 解壓

# cd /usr/local/src/
# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

6.4 修改fastdfs-nginx-module的config配置文件

# cd fastdfs-nginx-module/src
# vi config

CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
修改爲:CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

(注意:這個路徑修改是很重要的,不然在Nginx編譯的時候會報錯)

6.5 編譯安裝Nginx的時候添加fastdfs-nginx-module
如果對Nginx編譯安裝不熟悉的話,可以參考我之前的博客:Nginx編譯安裝詳細教程及常用命令介紹

這裏只需在配置Nginx參數的時候 使用如下命令添加模塊
# ./configure --prefix=/opt/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src

6.6 複製fastdfs-nginx-module源碼中的配置文件到/etc/fdfs目錄,並修改

# cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

# vi /etc/fdfs/mod_fastdfs.conf

修改以下配置:
connect_timeout=10
base_path=/tmp
tracker_server=192.168.29.128:22122
storage_server_port=23000
group_name=group1
url_have_group_name = true
store_path0=/opt/fastDFS/fastDFSDatadir/storage

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

# cd /opt/fastDFS/FastDFS/conf
# cp http.conf mime.types /etc/fdfs/

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

ln -s /opt/fastDFS/fastDFSDatadir/storage/data /opt/fastDFS/fastDFSDatadir/storage/data/M00

6.9 配置Nginx

在http節點下添加以下server配置

server{
    listen      8888;
    server_name localhost;
    location ~/group([0-9])/M00{
        ngx_fastdfs_module;
    } 
} 

A.8888端口值是要與/etc/fdfs/storage.conf中的http.server_port=8888相對應,因爲http.server_port默認爲 8888,如果想改成80,則要對應修改過來
B.Storage對應有多個group的情況下,訪問路徑帶group名,如/group1/M00/00/00/xxx,對應的 Nginx 配置爲:
location ~/group([0-9])/M00 {
    ngx_fastdfs_module;
} 
C.如查下載時如發現老報404,將nginx.conf第一行user nobody修改爲user root後重新啓動

6.10 防火牆中打開Nginx的8888端口

6.11 重啓Nginx

6.12 訪問http://192.168.29.129:8888/group1/M00/00/00/wKgdgVkKT42AU1H4AAVFOL7FJU4.tar.gz下載剛剛上傳的文件,如果成功下載,則說明配置都成功了

注意:千萬不要使用kill -9命令強殺FastDFS進程,否則可能會導致binlog數據丟失

源碼地址:https://github.com/happyfish100/
下載地址:http://sourceforge.net/projects/fastdfs/files/
官方論壇:http://bbs.chinaunix.net/forum-240-1.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章