FastDFS安裝詳解

FastDFS 是一款開源的分佈式文件系統(Distributed File System),可以提供小型文件的儲存、備份和下載功能。如下是它的安裝方式。
基於 6 臺 CentOS 內外網連通的主機,CentOS 安裝過程省略
主要 參考官方 Github Repo 的 Wiki 頁面FastDFS 分佈式文件系統(系列文章)
用 root 安裝

編譯環境

yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y

磁盤目錄

說明 位置
全部安裝包 /usr/local/src
數據存儲位置 /home/dfs/
這裏我爲了方便把日誌什麼的都放到了dfs
mkdir /home/dfs #建立數據存儲目錄
cd /usr/local/src #切換到安裝目錄準備下載安裝包

安裝 libfatscommon

libfatscommon 是 fastdfs 經常使用函數封裝的庫
git clone https://github.com/happyfish100/libfastcommon.git --depth 1
cd libfastcommon/
./make.sh && ./make.sh install #編譯安裝

安裝 FastDFS

fastdfs 包含 tracker, storage 和 client 這三個角色,經過後期的 config 配置(storage還須要安裝fastdfs-nginx-module)和運行,本主機就能成爲 "tracker/storage/client"
cd /usr/local/src

git clone https://github.com/happyfish100/fastdfs.git --depth 1
cd fastdfs/
./make.sh && ./make.sh install #編譯安裝
#暫時直接複製到目標目錄,沒有其餘修改,相關配置能夠在跑通後詳細閱讀和修改
cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/ #供nginx訪問使用
cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/ #供nginx訪問使用
#配置文件準備(Notice: 根據本機的角色,按需複製粘貼配置文件!)
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf #客戶端文件,測試用

獲取 fastdfs-nginx-module

此 module 用於避免上傳完成後,且 group storage 同步文件完成前,客戶端從正在同步的主機處下載文件致使的出錯
cd /usr/local/src

git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1

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

安裝 nginx

  • tracker 和 storage 均須要安裝 nginx
  • 對於 tracker, nginx 能夠均衡負載到不一樣的 storage
  • 對於 storage, nginx 能夠提供反向代理,從而訪問數據存儲位置的文件
  • 因爲須要使用啓用非默認 module , 故須要經過源碼編譯安裝,不能使用 yum . 使用源碼安裝 nginx 的注意事項見《nginx - make install》
wget http://nginx.org/download/nginx-1.15.7.tar.gz #下載 nginx mainline 版本的壓縮包
tar -zxvf nginx-1.15.4.tar.gz #解壓
cd nginx-1.15.7/
#記得添加fastdfs-nginx-module模塊
# nginx configure arguments 內容豐富、配置自由,詳見《nginx - make install》
./configure \ 
    --prefix=/usr/local/nginx \ 
    --user=www-data \
    --group=www-data \
    --conf-path=/etc/nginx/nginx.conf \ 
    --add-module=/usr/local/src/fastdfs-nginx-module/src/ 
make && make install #編譯安裝
安裝完成後,新增 www-data 用戶組 和 www-data 用戶
/usr/sbin/groupadd -f www-data
/usr/sbin/useradd -g www-data www-data

配置

  • 須要配置 nginx, tracker, storage 和 client
  • tracker 和 storage 須要搭配 nginx 使用,故在本教程中, nginx 的配置都是關於 tracker 和 storage 的,與 client 無關。
  • tracker, storage 和 client 都有自身的配置項,須要單獨配置。
tracker
vim /etc/fdfs/tracker.conf
base_path=/home/yuqing/FastDFS
改成:
base_path=/home/dfs

#將 tracker 和 storage 的 http.server_port 統一改成80能夠正常訪問,可是否最優方案,還須要觀察
http.server_port=8080
改成:
http.server_port=80
storage
vim /etc/fdfs/storage.conf
#當前主機是什麼組,就寫什麼組
group_name=group1

base_path=/home/yuqing/FastDFS
改成:
base_path=/home/dfs

store_path0=/home/yuqing/FastDFS
改成:
store_path0=/home/dfs/fdfs_storage

#若是有多個掛載磁盤則定義多個 store_path ,以下
#store_path_count=..
以及:
#store_path1=.....
#store_path2=......

#配置 tracker 服務器:IP
tracker_server=192.168.56.11:22122
#若是有多個則配置多個tracker
tracker_server=192.168.56.12:22122

#配置http端口
http.server_port=80
client
vim /etc/fdfs/client.conf
base_path=/home/yuqing/fastdfs
改成:
base_path=/home/dfs

tracker_server=192.168.56.11:22122  # 服務器1
tracker_server=192.168.56.12:22122  # 服務器2
... #服務器n
mod_FastDFS
vim /etc/fdfs/mod_fastdfs.conf
base_path=/home/yuqing/fastdfs
改成:
base_path=/home/dfs

tracker_server=192.168.56.11:22122
tracker_server=192.168.56.12:22122
url_have_group_name=true        #url中包含group名稱
store_path0=/home/dfs/fdfs_storage   #指定文件存儲路徑
nginx
vim /etc/nginx/nginx.conf
#storage羣group1組
upstream storage_server_group1 {
        server 192.168.56.11:80 weight=10;
        server 192.168.56.21:80 weight=10;
        server 192.168.56.22:80 weight=10;
}
#storage羣group2組
upstream storage_server_group2 {
        server 192.168.56.12:80 weight=10;
        server 192.168.56.31:80 weight=10;
        server 192.168.56.32:80 weight=10;
}

server {
    # 監聽80端口
    listen 80;
    server_name 本機IP;
    
    #此處 /group1 和 /group2 都粘貼,用於 proxy_pass
    location /group1{
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://storage_server_group1;
    }
    
    location /group2{
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://storage_server_group2;
    }
    
    # 留意當前主機做爲 storage 是 group1 仍是 group2,而後修改 location /.../... 
    # M00是FastDFS自動生成編號,對應store_path0=/home/dfs/fdfs_storage,若是FastDFS定義store_path1,這裏就是M01
    location /group1/M00/{
        root /home/dfs/fdfs_storage/data;
        ngx_fastdfs_module;
    }
}
檢查 /usr/lib 有無 libfdfsclient.so
ll /usr/lib/libfdfsclient.so

若是沒有就

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

啓動

關閉防火牆
生產環境中,我不建議關閉防火牆。只須要開放相關端口就能夠正常運行。
systemctl stop firewalld.service #關閉
systemctl restart firewalld.service #重啓
tracker
/etc/init.d/fdfs_trackerd start #啓動tracker服務
/etc/init.d/fdfs_trackerd restart #重啓動tracker服務
/etc/init.d/fdfs_trackerd stop #中止tracker服務
chkconfig fdfs_trackerd on #自啓動tracker服務
storage
/etc/init.d/fdfs_storaged start #啓動storage服務
/etc/init.d/fdfs_storaged restart #重動storage服務
/etc/init.d/fdfs_storaged stop #中止動storage服務
chkconfig fdfs_storaged on #自啓動storage服務
檢測集羣
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
# 會顯示有幾臺 tracker, 幾個 group, 幾個 storage 等詳細信息
nginx
/usr/local/nginx/sbin/nginx #啓動nginx
/usr/local/nginx/sbin/nginx -s reload #重啓nginx
/usr/local/nginx/sbin/nginx -s stop #中止nginx

測試

client 使用 fdfs 命令上傳
fdfs_upload_file /etc/fdfs/client.conf /path/to/a_file
上傳完成後,獲取 如 /group1/M00/00/00/xxxxxxxxxxxxx 的路徑,說明上傳成功
client 使用 fdfs 命令下載
fdfs_download_file /etc/fdfs/client.conf /group1/M00/00/00/xxxxxxxxxxxxx
若是下載成功會有相應提示
client 使用 wget 下載
wget http://ip//group1/M00/00/00/xxxxxxxxxxxxx
若是配置徹底正確,那麼使用集羣中任意主機的IP都可以下載文件。
若是下載成功,會有相應提示。

Done!

相關文章
相關標籤/搜索