FastDFS 集羣搭建

FastDFS 集羣搭建

前言

於前幾天搭建了 FastDFS 單機版來使用,而實際應用中,一般使用的都是集羣版本的 FastDFS,相比於單機版,大體的搭建差不多,只不過配置文件的內容有所不同。


前期規劃

  • Nginx 服務器一臺,用於作爲 HTTP 訪問的入口
    • 本次虛擬機的 IP 爲 192.168.229.167
  • Tracker 集羣,這裏配置兩臺 Tracker 服務器
    • IP 分別爲 192.168.229.170,192.168.229.171
    • 在 Tracker 上部署 Nginx,提供 HTTP 訪問的反向代理、負載均衡以及緩存等
  • Storage 集羣,這裏配置兩臺 Storage 服務器,分爲兩個組
    • 同一組的 Storage 服務器存儲的數據相同
    • 同一組的數據存儲容量取決於該組中存儲容量最小的那臺
    • IP 爲 192.168.229.175,192.168.229.176
    • 部署 Nginx 以及 FastDFS 的 Nginx 擴展模塊,提供訪問與下載服務等

操作文件時,將直接使用相關的 api 連接到 Tracker 服務器中進行增刪改查。訪問時,則使用 Nginx 服務器做負載均衡轉發請求到 Tracker 服務器,由 Tracker 服務器中的 Nginx 再轉發給 Storage 服務器進行處理。

本次練習的環境

  • 虛擬機工具 :VMware Workstations 14 Pro
  • 操作系統 :CentOS 7 64位
    • 爲了方便起見,這裏已經將防火牆關閉了
    • 實際應用中,則開啓防火牆,開放相應的端口即可

前期準備的安裝包有:

libfastcommon(這裏使用 1.0.38 版本):https://github.com/happyfish100/libfastcommon/releases

FastDFS(這裏使用 5.11 版本):https://github.com/happyfish100/fastdfs/releases

fastdfs-nginx-module(這裏使用 1.16 版本):https://github.com/happyfish100/fastdfs-nginx-module/releases

ngx_cache_purge(這裏使用 2.3 版本):http://labs.frickle.com/files/

Nginx(這裏使用 1.15.1 版本):http://nginx.org/en/download.html

安裝軟件

  • Nginx 服務器
    • ngx_cache_purge
    • Nginx
  • Tracker 服務器
    • libfastcommon
    • FastDFS
    • Nginx
    • ngx_cache_purge
  • Storage 服務器
    • libfastcommon
    • FastDFS
    • Nginx
    • ngx_cache_purge
    • fastdfs-nginx-module

根據上面的列表將相關的軟件拷貝到各個服務器中的 /root 目錄下,並進行解壓操作(由於以上的軟件我下載的都是 tar.gz 壓縮格式的,故統一使用命令:tar zxvf XXX.tar.gz 來進行解壓操作。


安裝 FastDFS

FastDFS 的安裝其實很簡單,在上一回的文章已經講過了(FastDFS 單機版環境搭建),Tracker 服務器和 Storage 服務器都需要安裝 FastDFS,這裏快速的過一遍。

# 在線安裝依賴環境
yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel
# 進入 root 目錄下
cd /root
# 解壓 libfastcommon 壓縮包
tar zxvf libfastcommon-1.0.38.tar.gz
# 進入 libfastcommon 文件夾中,編譯 libfastcommon 以及安裝
cd libfastcommon-1.0.38
./make.sh && ./make.sh install
# 由於 libfastcommon 安裝的路徑在 /usr/lib64/ 
# 但是 FastDFS 主程序設置的 lib 目錄是在 /usr/local/lib,所以需要創建軟鏈接
# 不過試了一下,不創建也沒問題,可能是使用的版本更新了,亦或者因爲我的 CentOS7 是 64 位的
# 如果 FastDFS 安裝有問題,則運行以下四條命令重新安裝 FastDFS
# 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

# FastDFS 安裝
cd /root
# 解壓 FastDFS 壓縮包,編譯以及安裝
tar zxvf fastdfs-5.11.tar.gz
cd fastdfs-5.11
./make.sh && ./make.sh install

到此,FastDFS 就安裝好了,接下來就是配置了。


Tracker 服務器配置

兩臺 Tracker 服務器配置是相同的,這裏以其中一臺爲例

# 創建 Tracker 的存儲日誌和數據的根目錄
mkdir -p /home/fastdfs/tracker
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
# 配置 tracker.conf
vi tracker.conf

在這裏,tracker.conf 只是修改一下 Tracker 存儲日誌和數據的路徑

# 啓用配置文件(默認爲 false,表示啓用配置文件)
disabled=false
# Tracker 服務端口(默認爲 22122)
port=22122
# 存儲日誌和數據的根目錄
base_path=/home/fastdfs/tracker

這裏,Tracker 服務就可以正常使用了.不過我們也可以順帶配置一下 Tracker 服務器中客戶端配置文件

mkdir -p /home/fastdfs/client
# 修改 Tracker 服務器客戶端配置文件
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
vi /etc/fdfs/client.conf

client.conf 中修改 base_path 和 Tracker 服務器的 IP 地址與端口號即可

# 存儲日誌文件的基本路徑
base_path=/home/fastdfs/client
# Tracker 服務器 IP 地址與端口號
tracker_server=192.168.229.170:22122
tracker_server=192.168.229.171:22122

Storage 服務器配置

這裏的兩臺 Storage 服務器配置大體上相同,不同的分組,主要就是 group_name 的配置不同,其它配置基本一致。同一組的 Storage 服務器配置大體上一致。

# 創建 Storage 的存儲日誌和數據的根目錄
mkdir -p /home/fastdfs/storage
cd /etc/fdfs
cp storage.conf.sample storage.conf
# 配置 storage.conf
vi storage.conf

在這裏,storage.conf 只是修改一下 storage 存儲日誌和數據的路徑

# 啓用配置文件(默認爲 false,表示啓用配置文件)
disabled=false
# 組名,第一組爲 group1,以此遞增
group_name=group1
# Storage 服務端口(默認爲 23000)
port=23000
# 數據和日誌文件存儲根目錄
base_path=/home/fastdfs/storage
# 存儲路徑,訪問時路徑爲 M00
# store_path1 則爲 M01,以此遞增到 M99(如果配置了多個存儲目錄的話,這裏只指定 1 個)
store_path0=/home/fastdfs/storage
# Tracker 服務器 IP 地址和端口,單機搭建時也不要寫 127.0.0.1
# tracker_server 可以多次出現,如果有多個,則配置多個
tracker_server=192.168.229.170:22122
tracker_server=192.168.229.171:22122

在這裏,192.168.229.175 的 group_name 爲 group1,192.168.229.175 爲 group2


啓動 Tracker 服務以及 Storage 服務

啓動服務時,先啓動 Tracker 服務,再啓動 Storage 服務器

# 啓動 Tracker 服務
# 其它操作則把 start 改爲 stop、restart、reload、status 即可。Storage 服務相同
/etc/init.d/fdfs_trackerd start
# 啓動 Storage 服務
/etc/init.d/fdfs_storaged start
# 可以通過 fdfs_monitor 查看集羣的情況
# 查看 Storage 是否已經註冊到 Tracker 服務器中
# 當查看到 ip_addr = 192.168.229.175 (localhost.localdomain)  ACTIVE
# ACTIVE 表示成功
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

此時應該可以看到有兩個分組,而且都是 ACTIVE 狀態的。


Storage 服務器安裝 Nginx

接下來,每臺 Storage 都如下安裝與配置 Nginx

# 配置 fastdfs-nginx-module 模塊,這裏使用的是 1.16 版本
# 修改 fastdfs-nginx-module 的 config 配置文件
vi /root/fastdfs-nginx-module/src/config

CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/" 中的 local 去掉,修改爲 CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/" 。然後保存即可

# Nginx 以及模塊安裝
cd /root/nginx-1.15.1
# 添加 fastdfs-nginx-module 模塊和 ngx_cache_purge 模塊
./configure --add-module=/root/fastdfs-nginx-module/src --add-module=/root/ngx_cache_purge-2.3
# 編譯以及安裝
make && make install

# fastdfs-nginx-module 和 FastDFS 配置文件修改
# 複製 FastDFS 的部分配置文件到 /etc/fdfs
cd /root/fastdfs-5.11/conf/
cp http.conf mime.types /etc/fdfs/
# 複製 fastdfs-nginx-module 源碼中的配置文件到  /etc/fdfs 中
cp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vi /etc/fdfs/mod_fastdfs.conf

mod_fastdfs.conf 配置如下

# Storage 日誌文件
base_path=/home/fastdfs/storage
# Tracker 服務器IP和端口修改,如果有多個就配置多個
tracker_server=192.168.229.170:22122
tracker_server=192.168.229.171:22122
# Storage 服務器端口(默認爲 23000)
storage_server_port=23000

# 當前 Storage 服務器的組名
group_name=group1

# 請求的 url 中是否包含 group 名稱,改爲 true,包含 group
url_have_group_name = true
# 配置 Storage 存儲目錄信息,修改 store_path0 的信息,有多個存儲目錄就配置多個
# 必須和 storage.conf 中的配置一致
store_path0=/home/fastdfs/storage

# 有多少個分組
group_count = 2
# 每個小組的信息
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs/storage

以上需要注意的還是組名那裏,在這裏,192.168.229.175 的 group_name 爲 group1,192.168.229.175 爲 group2

接下來就是配置 Nginx 了

vi /usr/local/nginx/conf/nginx.conf

在配置文件中添加一個 server

server {
    listen       8888;
    server_name  localhost;

    # 配置爲支持 group0-group9,以及 M00-M99,以便於以後擴容
    # 由於配置了 ngx_fastdfs_module 模塊,當該服務器找不到文件時,則會去文件的源服務器中尋找
    location ~/group([0-9])/M([0-9])([0-9]) {
        ngx_fastdfs_module;
    }
}

到此,Storage 服務器就配置完畢了


Tracker 服務器安裝 Nginx

Tracker 服務器的安裝與配置就簡單些,兩臺 Tracker 服務器的配置執行相同的操作即可

# Nginx 以及模塊安裝
cd /root/nginx-1.15.1
# 添加 ngx_cache_purge 模塊
./configure --add-module=/root/ngx_cache_purge-2.3
# 編譯以及安裝
make && make install

# 配置 Nginx
vi /usr/local/nginx/conf/nginx.conf

配置如下

# 設置 group1 的服務器
upstream fdfs_group1 {
    server 192.168.229.175:8888 weight=1 max_fails=2 fail_timeout=30s;
    # server 192.168.229.177:8888 weight=1 max_fails=2 fail_timeout=30s;
}
# 設置 group2 的服務器
upstream fdfs_group2 {
    server 192.168.229.176:8888 weight=1 max_fails=2 fail_timeout=30s;
    # server 192.168.229.178:8888 weight=1 max_fails=2 fail_timeout=30s;
}

server {
    listen  8000;
    server_name localhost;

    # 請求爲 group1 的轉發給 group1 的服務器組進行處理
    location ~/group1/M([0-9])([0-9]) {
        proxy_pass http://fdfs_group1;
    }

    # 請求爲 group2 的轉發給 group2 的服務器組進行處理
    location ~/group2/M([0-9])([0-9]) {
        proxy_pass http://fdfs_group2;
    }
}

Nginx 服務器配置

Nginx 服務器作爲該 FastDFS 集羣的統一入口,進行負載均衡處理

# 安裝 Nginx 依賴環境
yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel
# Nginx 以及模塊安裝
cd /root/nginx-1.15.1
# 添加 ngx_cache_purge 模塊
./configure --add-module=/root/ngx_cache_purge-2.3
# 編譯以及安裝
make && make install

# 配置 Nginx
vi /usr/local/nginx/conf/nginx.conf

Nginx 配置如下

# 設置 tracker
upstream fdfs_tracker {
    server 192.168.229.170:8000 weight=1 max_fails=2 fail_timeout=30s;
    server 192.168.229.171:8000 weight=1 max_fails=2 fail_timeout=30s;
}

server {
    listen  80;
    server_name localhost;

    # 將所有 FastDFS 請求轉發給 Tracker 集羣處理
    location ~/group([0-9])/M([0-9])([0-9]) {
        proxy_pass http://fdfs_tracker;
    }
}

啓動 Nginx 服務

# 啓動 Nginx
/usr/local/nginx/sbin/nginx
# 重啓 Nginx
/usr/local/nginx/sbin/nginx -s reload
# 停止 Nginx
/usr/local/nginx/sbin/nginx -s stop

集羣擴容

關於擴容,有兩種方式。

  1. 第一種常見於 Storage 服務器添加新的硬盤,然後修改配置文件進行擴容。不過要注意的是,同一組的最大容量取決於容量最小的那臺服務器。
  2. 第二種擴容則是添加服務器,設置爲新的組。

參考資料及擴展資料


後記

搭建好了就是啓動各個服務器中的服務即可。在此就不測試了,和單機版的使用類似。集羣版到此也就告一段落了。建議是先試試配置單機版,然後再來配置一下集羣的版本。關於 FastDFS,計劃還會碼一篇 Java 的使用筆記。

在實踐中成長!

HochenChong

2018-7-13

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