搭建FastDFS最小文件系統(一臺機)

1.什麼是FastDFS

FastDFS是用c語言編寫的一款開源的分佈式文件系統。FastDFS爲互聯網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集羣提供文件上傳、下載等服務。


2.FastDFS架構

FastDFS架構包括 Tracker server和Storage server。客戶端請求Tracker server進行文件上傳、下載,通過Trackerserver調度最終由Storage server完成文件上傳和下載。

         Trackerserver作用是負載均衡和調度,通過Trackerserver在文件上傳時可以根據一些策略找到Storageserver提供文件上傳服務。可以將tracker稱爲追蹤服務器或調度服務器。

         Storageserver作用是文件存儲,客戶端上傳的文件最終存儲在Storage服務器上,Storage server沒有實現自己的文件系統而是利用操作系統 的文件系統來管理文件。可以將storage稱爲存儲服務器。

2.1 Tracker 集羣

FastDFS集羣中的Tracker server可以有多臺,Tracker server之間是相互平等關係同時提供服務,Tracker server不存在單點故障。客戶端請求Tracker server採用輪詢方式,如果請求的tracker無法提供服務則換另一個tracker。


2.2  Storage集羣

Storage集羣採用了分組存儲方式。storage集羣由一個或多個組構成,集羣存儲總容量爲集羣中所有組的存儲容量之和。一個組由一臺或多臺存儲服務器組成,組內的Storage server之間是平等關係,不同組的Storageserver之間不會相互通信,同組內的Storageserver之間會相互連接進行文件同步,從而保證同組內每個storage上的文件完全一致的。一個組的存儲容量爲該組內存儲服務器容量最小的那個,由此可見組內存儲服務器的軟硬件配置最好是一致的。

         採用分組存儲方式的好處是靈活、可控性較強。比如上傳文件時,可以由客戶端直接指定上傳到的組也可以由tracker進行調度選擇。一個分組的存儲服務器訪問壓力較大時,可以在該組增加存儲服務器來擴充服務能力(縱向擴容)。當系統容量不足時,可以增加組來擴充存儲容量(橫向擴容)。


2.3  Storage狀態收集

Storage server會連接集羣中所有的Tracker server,定時向他們報告自己的狀態,包括磁盤剩餘空間、文件同步狀況、文件上傳下載次數等統計信息。


3 開始搭建

3.1  FastDFS-tracker 安裝

3.1.1  下載

tracker和storage使用相同的安裝包,https://github.com/happyfish100/FastDFS.

下面用到與fastdfs相關的包,都可以在https://github.com/happyfish100找到


3.1.2  gcc

FastDFS是C語言開發,建議在linux上運行,本教程使用Centos6.4作爲安裝環境。

安裝FastDFS需要編譯,編譯依賴於gcc環境,如果沒有gcc環境,需要安裝gcc:

sudo yum install gcc-c++

3.1.3  libevent

FastDFS依賴libevent庫,需要安裝:

sudo yum -y install libevent

3.1.4  libfastcommon

libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS運行所需要的一些基礎庫。

將libfastcommonV1.0.7.tar.gz 解壓,執行以下命令

tar -zxvf libfastcommonV1.0.7.tar.gz

cd libfastcommon-1.0.7

./make.sh

./make.sh install /usr/local

 

注意:如果後面遇到問題,可以試下這裏,如果沒問題就不需要理會。

libfastcommon.so安裝好後會自動將庫文件拷貝至/usr/lib64下,由於FastDFS程序引用usr/lib目錄所以需要將/usr/lib64下的庫文件拷貝至/usr/lib下。


3.1.5  tracker編譯安裝

tar -zxvf FastDFS_v5.05.tar.gz

cd FastDFS

./make.sh

./make.sh install /usr/local

安裝成功將安裝目錄下的conf下的文件拷貝到/etc/fdfs/下。
sudo cp conf/* /etc/fdfs/


3.1.6  配置

安裝成功後進入/etc/fdfs目錄:

vi tracker.conf

修改其中內容:

base_path = /home/yuqing/FastDFS

改爲:

base_path=/home/FastDFS

這裏需要注意,沒有 /home/FastDFS這個目錄需要創建

sudo mkdir -p /home/FastDFS


3.1.7  啓動

執行以下命令啓動

fdfs_trackered /etc/fdfs/tracker.conf restart

第一次啓動並沒有任何提示,可以進入/home/FastDFS/logs下查看日誌

設置開機自動啓動:

sudo vi /etc/rc.d/rc.local

添加以下內容:

fdfs_trackerd /etc/fdfs/tracker.conf restart


3.2  FastDFS-storage 安裝

在同一臺機子上繼續裝storage,編譯方法同tracker,

3.2.1 配置

下面講下配置

sudo vi /etc/fdfs/storage.conf

修改以下內容:

group_name=group1

base_path=/home/yuqing/FastDFS 改爲: base_path=/home/FastDFS

store_path0=/home/yuqing/FastDFS  改爲: store_path0=/home/FastDFS/fdfs_storage    (這裏需要注意,如果fdfs_storage沒有創建,需要手工創建)

tracker_server=192.168.36.129:22122  #配置tracker服務器ip

3.2.2  啓動

fdfs_storaged /etc/fdfs/storage.conf restart

設置開機自動啓動

sudo vi /etc/rc.d/rc.local 

添加以下內容:

fdfs_storaged /etc/fdfs/storage.conf restart


3.3  上傳圖片測試 

sudo vi /etc/fdfs/client.conf

修改以下內容:

base_path=/home/FastDFS

tracker_server=192.168.36.129:22122

修改完後,使用以下命令上傳圖片

fdfs_test /etc/fdfs/client.conf upload /home/llq/Pictures/loading.gif

執行後,會打印出以下內容:

http://192.168.36.129/group1/M00/00/00/wKgkgVqzrQiAaI71AAAqm9RPKXs429.gif

使用瀏覽器訪問此url,能正常顯示圖片則爲搭建成功。


3.4  FastDFS和nginx整合

由於我們只有一臺服務器,所以就在storage上安裝nginx。

3.4.1  FastDFS-nginx-module

下載好包後,執行以下命令:

unzip fastdfs-nginx-module-master.zip

cd fastdfs-nginx-module-master/src

將FastDFS-nginx-module/src下的mod_fastdfs.conf拷貝至/etc/fdfs/下

cp mod_fastdfs.conf /etc/fdfs/

修改conf內容:

vi /etc/fdfs/mod_fastdfs.conf

修改以下內容:

base_path=/home/FastDFS

tracker_server=192.168.36.129:22122

url_have_group_name = true

store_path0=/home/FastDFS/fdfs_storage


將libfdfsclient.so拷貝至/usr/lib下

cp /usr/lib64/libfdfsclient.so /usr/lib/


創建nginx/client目錄

sudo mkdir -p /var/temp/nginx/client

重新配置nginx,添加模塊,然後編譯

./configure --prefix=/usr/local/nginx --add-module=/home/llq/developer/fastdfs-nginx-module-master/src 

make

make install

添加nginx相應的conf文件

cd /usr/local/nginx/conf

vi nginx.conf

添加以下內容:

include vhost/*.conf;

進入vhost,添加配置文件 

cd vhost

vi nginx-fdfs.conf

server {
    listen 80;
    server_name 192.168.36.129;

    location /group1/M00/ {
        ngx_fastdfs_module;
    }
}

添加好之後,重啓nginx

sudo /usr/local/nginx/sbin/nginx -s reload

出現以下字樣則成功:

ngx_http_fastdfs_set pid=13534








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