Centos7下FastDFS從安裝到入門

Github倉庫

Github介紹: github.com/happyfish10…html

Github文檔: github.com/happyfish10…nginx

FastDFS介紹

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

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

Tracker server 做用是負載均衡和調度,經過 Tracker server 在文件上傳時能夠根據一些 策略找到 Storage server 提供文件上傳服務。能夠將 tracker 稱爲追蹤服務器或調度服務 器。github

Storage server 做用是文件存儲,客戶端上傳的文件最終存儲在 Storage 服務器上, Storageserver 沒有實現本身的文件系統而是利用操做系統 的文件系統來管理文件。能夠將 storage 稱爲存儲服務器。vim

服務端兩個角色:centos

  • Tracker:管理集羣,tracker 也能夠實現集羣。每一個 tracker 節點地位平等。收集 Storage 集羣的狀態。
  • Storage:實際保存文件 Storage 分爲多個組,每一個組之間保存的文件是不一樣的。每 個組內部能夠有多個成員,組成員內部保存的內容是同樣的,組成員的地位是一致的,沒有 主從的概念。

文件上傳流程

客戶端上傳文件後存儲服務器將文件 ID 返回給客戶端,此文件 ID 用於之後訪問該文 件的索引信息。文件索引信息包括:組名,虛擬磁盤路徑,數據兩級目錄,文件名。bash

group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
複製代碼
  • **group1 組名:**文件上傳後所在的 storage 組名稱,在文件上傳成功後有 storage 服務器返回, 須要客戶端自行保存。 虛擬磁盤路徑:storage 配置的虛擬路徑,與磁盤選項 store_path*對應。若是配置了服務器

  • /M00 : store_path0 則是 M00,若是配置了 store_path1 則是 M01,以此類推。架構

  • **/00/00:**數據兩級目錄:storage 服務器在每一個虛擬磁盤路徑下建立的兩級目錄,用於存儲數據 文件。

  • **/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz文件名:**與文件上傳時不一樣。是由存儲服務器根據特定信息生成,文件名包含:源存儲 服務器 IP 地址、文件建立時間戳、文件大小、隨機數和文件拓展名等信息。

文件下載流程

FastDFS安裝

使用的系統軟件

名稱 說明
centos 7.x
libfatscommon FastDFS分離出的一些公用函數包
FastDFS FastDFS本體
fastdfs-nginx-module FastDFS和nginx的關聯模塊
nginx nginx1.15.4

編譯環境

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
#建立數據存儲目錄
[root@server01 ~]# mkdir -p /home/dfs 
#切換到安裝目錄準備下載安裝包
[root@server01 ~]# cd /usr/local/src 
複製代碼

組件下載與安裝

下面的步驟安裝切換到安裝目錄下cd /usr/local/src進行開始。

安裝libfatscommon

git clone https://github.com/happyfish100/libfastcommon.git --depth 1
cd libfastcommon/
./make.sh && ./make.sh install #編譯安裝
複製代碼

安裝FastDFS

cd ../ #返回上一級目錄
git clone https://github.com/happyfish100/fastdfs.git --depth 1
cd fastdfs/
./make.sh && ./make.sh install #編譯安裝
#配置文件準備
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 #客戶端文件,測試用
cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/ #供nginx訪問使用
cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/ #供nginx訪問使用
複製代碼

安裝fastdfs-nginx-module

cd ../ #返回上一級目錄
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

wget http://nginx.org/download/nginx-1.15.4.tar.gz #下載nginx壓縮包
tar -zxvf nginx-1.15.4.tar.gz #解壓
cd nginx-1.15.4/
#添加fastdfs-nginx-module模塊
./configure --add-module=/usr/local/src/fastdfs-nginx-module/src/ 
make && make install #編譯安裝
複製代碼

單機部署

部署拓撲圖

按照上面的命令就可用安裝好相應的各個組件,那麼下面來進行單機部署的配置。

關閉防火牆

service firewalld stop
複製代碼

tracker服務

tracker配置

#服務器ip爲 192.168.43.128
vim /etc/fdfs/tracker.conf
#須要修改的內容以下
port=22122  # tracker服務器端口(默認22122,通常不修改)
base_path=/home/dfs  # 存儲日誌和數據的根目錄
複製代碼

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服務
複製代碼

啓動tracker服務

[root@server01 src]# /etc/init.d/fdfs_trackerd start
Reloading systemd:                                         [  OK  ]
Starting fdfs_trackerd (via systemctl):                    [  OK  ]
[root@server01 src]# 
複製代碼

storage服務

storage配置

vim /etc/fdfs/storage.conf
#須要修改的內容以下
port=23000  # storage服務端口(默認23000,通常不修改)
base_path=/home/dfs  # 數據和日誌文件存儲根目錄
store_path0=/home/dfs  # 第一個存儲目錄
tracker_server=192.168.43.128:22122  # tracker服務器IP和端口
http.server_port=8888  # http訪問文件的端口(默認8888,看狀況修改,和nginx中保持一致)
複製代碼

啓動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服務
複製代碼

啓動storage服務

[root@server01 src]# /etc/init.d/fdfs_storaged start
Starting fdfs_storaged (via systemctl):                    [  OK  ]
[root@server01 src]# 
複製代碼

client測試上傳文件

vim /etc/fdfs/client.conf
#須要修改的內容以下
base_path=/home/dfs
tracker_server=192.168.43.128:22122    #tracker服務器IP和端口
#保存後測試,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
複製代碼

執行以下:


nginx服務

配置nginx訪問

vim /etc/fdfs/mod_fastdfs.conf
#須要修改的內容以下
tracker_server=192.168.43.128:22122  #tracker服務器IP和端口
url_have_group_name=true
store_path0=/home/dfs

#配置nginx.config
vim /usr/local/nginx/conf/nginx.conf
#添加以下配置
server {
    listen       8888;    ## 該端口爲storage.conf中的http.server_port相同
    server_name  localhost;
    location ~/group[0-9]/ {
        ngx_fastdfs_module;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    root   html;
    }
}

# 啓動nginx服務
/usr/local/nginx/sbin/nginx #啓動nginx
/usr/local/nginx/sbin/nginx -s reload #重啓nginx

#測試下載
wget http://192.168.43.128:8888/group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
複製代碼

啓動nginx服務以及測試下載文件

[root@server01 src]# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=4818
[root@server01 src]# wget http://192.168.43.128:8888/group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
--2019-08-12 14:03:36--  http://192.168.43.128:8888/group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
Connecting to 192.168.43.128:8888... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1024694 (1001K) [application/octet-stream]
Saving to: ‘wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz’

100%[=================================================================================================================================>] 1,024,694   --.-K/s   in 0.02s   

2019-08-12 14:03:36 (40.9 MB/s) - ‘wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz’ saved [1024694/1024694]

[root@server01 src]# 
[root@server01 src]# ls
fastdfs  fastdfs-nginx-module  libfastcommon  nginx-1.15.4  nginx-1.15.4.tar.gz  wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
[root@server01 src]# 

複製代碼

可用看到已經下載成功,FastDFS的單機部署已完成。

分佈式部署

分佈式部署拓撲

分別在兩臺服務器都安裝上Tacker以及Storage服務,在第一臺服務安裝Nginx進行下載服務的反向代理。 按照前面的步驟對兩臺服務器進行安裝,安裝完畢以後,下面來進行分佈式配置。

tracker配置

配置每臺服務器的tracker配置,都按照如下配置進行。

#服務器ip爲 192.168.196.132,192.168.196.133
vim /etc/fdfs/tracker.conf
#須要修改的內容以下
port=22122  # tracker服務器端口(默認22122,通常不修改)
base_path=/home/dfs  # 存儲日誌和數據的根目錄
# 啓動服務
/etc/init.d/fdfs_trackerd start
複製代碼

storage配置

配置每臺服務器的storage配置,都按照如下配置進行。

vim /etc/fdfs/storage.conf
#須要修改的內容以下
port=23000  # storage服務端口(默認23000,通常不修改)
base_path=/home/dfs  # 數據和日誌文件存儲根目錄
store_path0=/home/dfs  # 第一個存儲目錄
tracker_server=192.168.196.132:22122  # 服務器1
tracker_server=192.168.196.133:22122  # 服務器2
http.server_port=8888  # http訪問文件的端口(默認8888,看狀況修改,和nginx中保持一致)
# 啓動服務
/etc/init.d/fdfs_storaged start
複製代碼

client測試上傳文件

兩臺服務器都配置一個client進行測試。

vim /etc/fdfs/client.conf
#須要修改的內容以下
base_path=/home/dfs
tracker_server=192.168.196.132:22122  # 服務器1
tracker_server=192.168.196.133:22122  # 服務器2
#保存後測試,返回ID表示成功 
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
複製代碼

執行上傳文件的返回結果:

[root@centos7-server02 nginx-1.15.4]# fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
group1/M00/00/00/wKjEhF1SQHKAEN6aAA-itrfn0m4.tar.gz
[root@centos7-server02 nginx-1.15.4]# 
複製代碼
[root@server03 src]# fdfs_upload_file /etc/fdfs/client.conf 1.txt 
group1/M00/00/00/wKjEhV1SQLCAbAWtAAAABFqC_Qg891.txt
[root@server03 src]# 
複製代碼

配置nginx訪問

在其中一臺配置nginx便可,若是要作負載均衡,可用兩臺都配置nginx,而後F5或者haproxy負載均衡。

vim /etc/fdfs/mod_fastdfs.conf
#須要修改的內容以下
tracker_server=192.168.196.132:22122  # 服務器1
tracker_server=192.168.196.133:22122  # 服務器2
url_have_group_name=true
store_path0=/home/dfs
#配置nginx.config
vim /usr/local/nginx/conf/nginx.conf
#在上方添加以下配置
server {
    listen       8888;    ## 該端口爲storage.conf中的http.server_port相同
    server_name  localhost;
    location ~/group[0-9]/ {
        ngx_fastdfs_module;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    root   html;
    }
}

# 啓動nginx服務
/usr/local/nginx/sbin/nginx #啓動nginx
/usr/local/nginx/sbin/nginx -s reload #重啓nginx
複製代碼

測試經過nginx下載文件

wget http://192.168.196.132:8888/group1/M00/00/00/wKjEhF1SQHKAEN6aAA-itrfn0m4.tar.gz
wget http://192.168.196.132:8888/group1/M00/00/00/wKjEhV1SQLCAbAWtAAAABFqC_Qg891.txt
複製代碼

這是剛纔測試上傳的兩個文件,經過nginx的8888端口 + File ID進行下載,下載成功則安裝完成。

檢測集羣

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
# 會顯示會有幾臺服務器 有2臺就會 顯示 Storage 1-Storage 2的詳細信息
複製代碼

相關說明

配置文件

tracker_server #有幾臺服務器寫幾個
group_name #地址的名稱的命名
bind_addr #服務器ip綁定
store_path_count #store_path(數字)有幾個寫幾個
store_path(數字) #設置幾個儲存地址寫幾個 從0開始
複製代碼

可能遇到的問題

若是不是root 用戶 你必須在除了cd的命令以外 所有加sudo
若是不是root 用戶 編譯和安裝分開進行 先編譯再安裝
若是上傳成功 可是nginx報錯404 先檢查mod_fastdfs.conf文件中的store_path0是否一致
若是nginx沒法訪問 先檢查防火牆 和 mod_fastdfs.conf文件tracker_server是否一致
若是不是在/usr/local/src文件夾下安裝 可能會編譯出錯
複製代碼

相關文章
相關標籤/搜索