分散式檔案系統(FastDFS)叢集

怪咖_OOP發表於2018-01-10

[TOC]

我們在使用FastDFS部署一個分散式檔案系統的時候,通過FastDFS的客戶端API來進行檔案的上傳、下載、刪除等操作。同時通過FastDFS的HTTP伺服器來提供HTTP服務。但是FastDFS的HTTP服務較為簡單,無法提供負載均衡等高效能的服務,所以FastDFS的開發者——淘寶的架構師餘慶,為我們提供了Nginx上使用的FastDFS模組(也可以叫FastDFS的Nginx模組);使用非常簡單。 FastDFS通過Tracker伺服器,將檔案放在Storage伺服器儲存,但是同組之間的伺服器需要複製檔案,有延遲的問題。假設Tracker伺服器將檔案上傳到了192.168.1.80,檔案ID已經返回客戶端,這時,後臺會將這個檔案複製到192.168.1.30,如果複製沒有完成,客戶端就用這個ID在192.168.1.30取檔案,肯定會出現錯誤。這個fastdfs-nginx-module可以重定向連線到源伺服器取檔案,避免客戶端由於複製延遲的問題,出現錯誤。

編譯、安裝Nginx

新增fastdfs-nginx-module

./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src
make && make install
複製程式碼

複製 fastdfs-nginx-module 原始碼中的配置檔案到/etc/fdfs 目錄

cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
複製程式碼

修改mod_fastdfs.conf配置檔案

connect_timeout=10                  # 客戶端訪問檔案連線超時時長(單位:秒)
base_path=/tmp                      # 儲存日誌目錄
tracker_server=192.168.0.200:22122  # tracker服務IP和埠
storage_server_port=23000           # storage服務埠
group_name=group1                   # 組名
url_have_group_name=true            # 訪問連結字首加上組名
store_path0=/mnt/fastdfs/storage        # 檔案儲存路徑
複製程式碼

複製 FastDFS 的部分配置檔案到/etc/fdfs 目錄

[root@hmhbt storage]# cd /usr/local/src/FastDFS/conf
[root@hmhbt conf]# cp http.conf mime.types /etc/fdfs/
複製程式碼

配置nginx訪問storage檔案

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 {
            root /mnt/fastdfs/storage;
            ngx_fastdfs_module;
        }
        error_page 500 502 503 504 /50x.html;

        location = /50x.html {
            root html;
        }
    }
}
複製程式碼

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

以上屬於原創文章,轉載請註明作者@怪咖
QQ:208275451

相關文章