1. 程式人生 > >CentOS-6.8系列-FastDFS高可用叢集安裝指南

CentOS-6.8系列-FastDFS高可用叢集安裝指南

本文章也是在參考了網上好多相關文章(主要參考文章見文末)後自學整理的,如有錯誤之處煩請留言指正。

1.伺服器叢集IP規劃(可自行調整)

Tracker伺服器:

    192.168.152.11
    192.168.152.14 

Storage伺服器:

    Group1:
    192.168.152.12
    192.168.152.13
    Group2:
    192.168.152.15
    192.168.152.16

這裡寫圖片描述

說明:FastDFS服務端有兩個角色:跟蹤器(tracker)和儲存節點(storage)。跟蹤器主要做排程工作,在訪問上起負載均衡的作用。儲存節點儲存檔案,完成檔案管理的所有功能:儲存、同步和提供存取介面。

為了支援大容量,儲存節點(伺服器)採用了分組的組織方式。儲存系統由一個或多個卷組成(如上邊的Group1與Group2),卷與卷之間的檔案是相互獨立的,所有卷的檔案容量累加就是整個儲存系統中的檔案容量(如上述示例的叢集的總容量為Group1中的容量最小的那臺伺服器的容量加上Group2中的容量最小的那臺伺服器的容量(組內伺服器容量取決於容量最小的那臺伺服器))。一個卷可以由一臺或多臺儲存伺服器組成,一個卷下的儲存伺服器中的檔案都是相同的,卷中的多臺儲存伺服器起到了冗餘備份和負載均衡的作用。

當儲存空間不足或即將耗盡時,可以動態添加捲。只需要增加一臺或多臺伺服器,並將它們配置為一個新的卷(如Group3),這樣就擴大了儲存系統的容量。

2.安裝步驟

以下安裝步驟基於伺服器及IP規劃妥當,本安裝指南以上文中規劃的IP進行安裝,作業系統為Centos6.8。

2.1.安裝前準備工作

2.1.1.新建組和使用者

若不想使用root使用者進行操作,可新建一個組和使用者,命令如下:

groupadd fastdfsg
useradd -g fastdfsg fastdfs
passwd fastdfs

2.1.2.防火牆設定

修改防火牆配置檔案,tracker伺服器開放22122埠,storage伺服器開放23000埠以及http訪問需要的埠(FastDFS的nginx模組預設埠為8888,本指南使用8888埠,可根據需求改為80或8080等埠)

vi /etc/sysconfig/iptables

tracker伺服器新增如下內容:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT

這裡寫圖片描述
storage伺服器新增如下內容:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT

這裡寫圖片描述
儲存後重啟防火牆

service iptables restart

2.1.3.基礎軟體安裝

安裝一些軟體編譯、下載、解壓所需的基礎軟體,安裝wget是為了線上下載FastDFS、Nginx等軟體(不線上下載時可自行準備好FastDFS、Nginx等安裝包,並上傳到每個伺服器上,本指南使用的目錄為/usr/local/src,注:Tracker伺服器無需Nginx包,可不上傳),本指南採用線上下載解壓安裝的方式。

#基礎軟體的安裝請執行下述命令
yum install make cmake gcc gcc-c++
yum -y install perl
yum install -y wget
yum install -y unzip zip
#檢視是否已安裝上述軟體使用下邊的命令
yum list installed | grep 軟體名稱

2.2.安裝FastDFS

本步驟所有伺服器(192.168.152.11,192.168.152.14,192.168.152.12,192.168.152.13,192.168.152.15,92.168.152.16)上均需執行

2.2.1.安裝FastDFS的依賴包libfastcommon

按步驟依次執行下述命令

#切換至/usr/local/src目錄
cd /usr/local/src
#下載libfastcommon包並重命名
wget https://github.com/happyfish100/libfastcommon/archive/master.zip -O libfastcommon-master.zip
#解壓
unzip libfastcommon-master.zip
#切換至libfastcommon-master目錄
cd libfastcommon-master
#編譯
./make.sh
#安裝
./make.sh install

2.2.2.安裝FastDfs

按步驟依次執行下述命令

#切換至/usr/local/src目錄
cd /usr/local/src
#下載FastDfs包並重命名
wget https://github.com/happyfish100/fastdfs/archive/V5.11.zip -O fastdfs-5.11.zip
#解壓
unzip fastdfs-5.11.zip 
#切換至fastdfs-5.11目錄
cd fastdfs-5.11
#編譯
./make.sh
#安裝
./make.sh install

2.3.配置

至此,FastDFS已安裝完畢,下面開始針對Tracket伺服器(192.168.152.11,192.168.152.14)與Storage伺服器(192.168.152.12,192.168.152.13,192.168.152.15,192.168.152.16)分別進行配置

2.3.1.Tracker伺服器配置

在192.168.152.11,192.168.152.14兩臺tracker伺服器上均依次執行下述命令即可

#切換至/etc/fdfs/目錄
cd /etc/fdfs/
#複製tracker.conf.sample檔案並命名為tracker.conf
cp tracker.conf.sample tracker.conf
#修改tracker.conf檔案
vi tracker.conf
#修改內容如下:
disabled=false              # 啟用配置檔案
port=22122                  # tracker伺服器埠(預設22122)
base_path=/fastdfs/tracker  # 儲存日誌和資料的根目錄
#建立上述配置檔案中配置的/fastdfs/tracker目錄
mkdir -p /fastdfs/tracker

2.3.2.Storage伺服器配置

在四臺storage伺服器上均依次執行下述命令即可

#切換至/etc/fdfs/目錄
cd /etc/fdfs/
#複製storage.conf.sample檔案並命名為storage.conf
cp storage.conf.sample storage.conf
#修改storage.conf檔案
vi /etc/fdfs/storage.conf
# 修改的內容如下:
disabled=false                          # 啟用配置檔案
port=23000                              # storage服務埠
base_path=/fastdfs/storage              # 資料和日誌檔案儲存根目錄
store_path0=/fastdfs/storage                # 第一個儲存目錄
tracker_server=192.168.152.11:22122     # tracker伺服器IP和埠
tracker_server=192.168.152.14:22122     # tracker伺服器IP和埠
http.server_port=8888                   # http訪問檔案的埠(可自行修改)
group_name=group1                   #.12和.13伺服器寫成group1,.15                                          和.16伺服器寫成group2
#建立上述配置檔案中配置的/fastdfs/storage目錄
mkdir -p /fastdfs/storage

2.4.伺服器啟動與關閉

Tracker伺服器:

/etc/init.d/fdfs_trackerd start     #啟動命令
ps -ef | grep fdfs_trackerd     #檢視是否啟動
/etc/init.d/fdfs_trackerd stop      #關閉命令

Storage伺服器

/etc/init.d/fdfs_storaged start #啟動命令
ps -ef | grep fdfs_storaged     #檢視是否啟動
/etc/init.d/fdfs_storaged stop      #關閉命令

2.5.測試Client

至此FastDFS的叢集安裝已基本完成,下面用FastDFS自帶的client進行檔案上傳測試。測試成功後,接著在Storage伺服器上安裝Nginx模組。

2.5.1.client客戶端配置

FastDFS自帶client測試端,現在在兩臺Tracker伺服器中任選一臺伺服器,依次執行下述命令:

#切換至/etc/fdfs/目錄
cd /etc/fdfs/
#複製client.conf.sample檔案並命名為client.conf
cp client.conf.sample client.conf
#修改client.conf檔案
vi client.conf
# 修改以下配置,其它保持預設
    base_path=/fastdfs/tracker
    tracker_server=192.168.152.11:22122
    tracker_server=192.168.152.14:22122

2.5.2.上傳測試

#新建一個檔案,這裡建一個示例txt的檔案
vi /usr/local/src/test.txt      #隨便寫點內容,如:Tracker-192.168.152.11
#執行上傳命令
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/test.txt
#返回如下資訊表示上傳成功

記錄下返回資訊,後續測試會用到
group1/M00/00/00/wKiYDFn8cjiAcwZaAAAAFx6Z3I4714.txt

2.5.3.使用fdfs_monitor檢視叢集資訊

#執行如下命令(在修改了/etc/fdfs/client.conf檔案的伺服器上執行)
/usr/bin/fdfs_monitor /etc/fdfs/client.conf

控制檯顯示如下截圖內容(叢集中tracker與storage節點資訊)

這裡寫圖片描述

2.6.Storage伺服器安裝Nginx模組

注意:只需要在四臺storage伺服器上安裝Nginx模組即可,安裝Nginx的作用是fastdfs-nginx-module 可以重定向檔案連線到源伺服器取檔案,避免客戶端由於複製延遲導致的檔案無法訪問錯誤。
四臺storage伺服器均需依次執行下述步驟

2.6.1.下載並配置fastdfs-nginx-module模組

#切換到/usr/local/src目錄
cd /usr/local/src
#下載fastdfs-nginx-module包並重命名
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip -O     fastdfs-nginx-module-master.zip
#解壓
unzip fastdfs-nginx-module-master.zip
#切換至fastdfs-nginx-module-master/src目錄
cd fastdfs-nginx-module-master/src
#修改config檔案
vi config#新版本的可能已無需修改CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/" 
    修改為:
    CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

2.6.2.Storage節點安裝Nginx

#切換至/usr/local/src目錄
cd /usr/local/src
#安裝編譯 Nginx 所需的依賴包
yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel
#下載nginx安裝包
wget http://nginx.org/download/nginx-1.13.6.tar.gz
#解壓
tar -zxvf nginx-1.13.6.tar.gz 
#切換至nginx-1.13.6目錄
cd nginx-1.13.6
#新增fastdfs-nginx-module模組至Nginx
./configure --add-module=/usr/local/src/fastdfs-nginx-module-master/src
#編譯安裝
make && make install

2.6.3.Storage節點Nginx相關配置

#複製 fastdfs-nginx-module 原始碼中的配置檔案到/etc/fdfs 目錄
cp /usr/local/src/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
#切換至/etc/fdfs/目錄
cd /etc/fdfs/
#修改mod_fastdfs.conf配置檔案
vi mod_fastdfs.conf
修改以下配置: 
    connect_timeout=10
    base_path=/tmp
    tracker_server=192.168.152.11:22122
    tracker_server=192.168.152.14:22122
    storage_server_port=23000
    group_name=group1
    url_have_group_name = true
    store_path0=/fastdfs/storage        #.12和.13伺服器寫成group1,.15和.16伺服器寫成group2
#切換至/usr/local/src/fastdfs-5.11/conf目錄
cd /usr/local/src/fastdfs-5.11/conf
#複製FastDFS 的部分配置檔案到/etc/fdfs 目錄
cp http.conf mime.types /etc/fdfs/
#在/fastdfs/storage 檔案儲存目錄下建立軟連線,將其連結到實際存放資料的目錄
ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00
#切換至/usr/local/nginx/conf/目錄
cd /usr/local/nginx/conf/
#複製nginx.conf檔案(目的是為了備份)
cp nginx.conf nginx.conf.sample
#修改nginx.conf
vi nginx.conf
#修改使用紅色部分
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 {
                    ngx_fastdfs_module;
                }
                error_page 500 502 503 504 /50x.html;
                location = /50x.html {
                    root html;
                }
            }
        }
注意:1.8888 埠值是要與/etc/fdfs/storage.conf 中的 http.server_port=8888 相對應, 因為 http.server_port 預設為 8888,如果想改成 80,則要對應修改過來。
2.Storage 對應有多個 group 的情況下,訪問路徑帶 group 名,如/group1/M00/00/00/xxx, 對應的 Nginx 配置為:
location ~/group([0-9])/M00 {
    ngx_fastdfs_module;
}

2.6.4.Nginx啟動

#啟動Nginx
/usr/local/nginx/sbin/nginx
#重啟命令為
/usr/local/nginx/sbin/nginx -s reload

2.7.測試Nginx模組

測試前確保所有Storage伺服器上的FastDFS及Nginx已啟動,啟動完成後,在瀏覽器位址列中輸入如下地址:
http://[storageIP]:8888/group1/M00/00/00/wKiYDFn8cjiAcwZaAAAAFx6Z3I4714.txt
其中storageIP可以為四臺storage伺服器中的任何一臺的ip,group1/M00/00/00/wKiYDFn8cjiAcwZaAAAAFx6Z3I4714.txt為前文用FastDFS自帶的Client測試上傳的檔案返回的地址。
正常情況下會返回下圖內容
這裡寫圖片描述
可以繼續嘗試更換ip(Storage伺服器的ip)、或輪流關閉Tracker伺服器、或關閉Storage伺服器進行測試。但根據上文測試返回的連線,可以確定text.txt檔案儲存的實際地方為group1中的兩臺伺服器,因此在做停機測試時要保證group1中的兩臺Storage伺服器(即192.168.152.12,192.168.152.13)至少有一臺在正常執行。

2.8.設定FastDFS及storage節點Nginx開機啟動

設定開機啟動採用修改/etc/rc.d/rc.local檔案的方式

vi /etc/rc.d/rc.local
    #Tracker伺服器上新增如下內容
    /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

這裡寫圖片描述

#Storage伺服器上新增如下內容
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
/usr/local/nginx/sbin/nginx

這裡寫圖片描述

2.9.Tracker節點安裝keepalived實現高可用

分別在Tracker節點192.168.152.11及192.168.152.14上安裝nginx及keepalived,實現fastdfs的負載均衡及高可用

2.9.1.Tracker節點Nginx相關

2.9.1.1.Tracker節點安裝Nginx

#切換至/usr/local/src目錄
cd /usr/local/src
#安裝編譯 Nginx 所需的依賴包
yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel
#下載nginx安裝包
wget http://nginx.org/download/nginx-1.13.6.tar.gz
#解壓
tar -zxvf nginx-1.13.6.tar.gz 
#切換至nginx-1.13.6目錄
cd nginx-1.13.6
#配置
./configure
#編譯安裝
make && make install

2.9.1.2.Tracker節點Nginx相關配置

#tracker伺服器開放8888埠
vi /etc/sysconfig/iptables
#新增如下埠
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
#重啟網絡卡 
service network restart
#切換至/usr/local/nginx/conf/目錄
cd /usr/local/nginx/conf/
#複製nginx.conf檔案(目的是為了備份)
cp nginx.conf nginx.conf.sample
#修改nginx.conf
vi nginx.conf
#修改使用紅色部分
user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    #設定 group1 的伺服器
    upstream fdfs_group1 {
         server 192.168.152.12:8888 weight=1 max_fails=2 fail_timeout=30s;
         server 192.168.152.13:8888 weight=1 max_fails=2 fail_timeout=30s;
    }

    #設定 group2 的伺服器
    upstream fdfs_group2 {
         server 192.168.152.15:8888 weight=1 max_fails=2 fail_timeout=30s;
         server 192.168.152.16:8888 weight=1 max_fails=2 fail_timeout=30s;
    }

    server {
        listen       8888;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;


       #設定 group 的負載均衡引數
        location /group1/M00 {
            proxy_pass http://fdfs_group1;
        }

        location /group2/M00 {
            proxy_pass http://fdfs_group2;
        }
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
       #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}
上述配置仍然監聽為8888埠
啟動nginx
/usr/local/nginx/sbin/nginx

2.9.2.Tracker節點keepalived相關

2.9.2.1.Tracker節點keepalived安裝

2.9.2.1.1.方法一:yum方式安裝

#使用yum方式安裝keepalived(自動安裝依賴)
yum install -y keepalived ipvsadm

2.9.2.1.2.方法二:本地安裝

#安裝依賴
yum install -y libnl lm_sensors-libs net-snmp-libs ipvsadm
#切換至/usr/local/src目錄
cd /usr/local/src
#下載keepalived
wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz
#解壓
tar -zxvf keepalived-1.2.13.tar.gz
#配置
./configure --prefix=/usr/local/keepalived/
#編譯安裝
make && make install
#新增keepalived至service
#拷貝可執行檔案,沒有這一步將會在執行service keepalived start的時候報錯:   keepalived: command not found
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
#需要在/etc目錄下建立keepalived目錄
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
# 建立入口指令碼檔案,可以接收start| stop | status | restart
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
#拷貝系統配置檔案
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
#經過了如上的處理就可以通過以下方式來操作keepalived
service keepalived start | stop | restart | status

2.9.2.2.Tracker節點keepalived配置

#防火牆新增arrp組播規則,或關閉防火牆 
vi /etc/sysconfig/iptables 
-A INPUT -p vrrp -d 224.0.0.18/32 -j ACCEPT
#切換至/etc/keepalived/目錄
#注意:採用本地安裝時配置檔案路徑為/usr/local/keepalived/etc/keepalived
cd /etc/keepalived/
#複製keepalived.conf檔案
cp keepalived.conf keepalived.conf.sample
#修改keepalived配置檔案
vi /etc/keepalived/keepalived.conf
192.168.152.11Tracker節點配置檔案如下(注意紅色部分):
global_defs {
           router_id nginx_01  #標識本節點的名稱,通常為hostname
        }

        ## keepalived會定時執行指令碼並對指令碼執行的結果進行分析,動態調整vrrp_instance的優先順序。
        ##如果指令碼執行結果為0,並且weight配置的值大於0,則優先順序相應的增加。如果指令碼執行結果非0,
        ##並且weight配置的值小於 0,則優先順序相應的減少。其他情況,維持原本配置的優先順序,即配置檔案中priority對應的值。
        vrrp_script chk_nginx {
               script "/etc/keepalived/nginx_check.sh"#注意路徑(本地安裝時的路徑差別)
               interval 2  #每2秒檢測一次nginx的執行狀態
               weight -20  #失敗一次,將自己的優先順序-20
        }

        vrrp_instance VI_1 {
            state BACKUP                  # 狀態,主節點為MASTER,備份節點為BACKUP(搶佔模式可設定一個為MSTER)
            interface eth1              # 繫結VIP的網路介面,通過ifconfig檢視自己的網路介面
            virtual_router_id 51          # 虛擬路由的ID號,兩個節點設定必須一樣,可選IP最後一段使用,相同的VRID為一個組,他將決定多播的MAC地址
            mcast_src_ip 192.168.152.11    # 本機IP地址
            priority 100                  # 節點優先順序,值範圍0~254,MASTER要比BACKUP高
            advert_int 1                  # 組播資訊傳送時間間隔,兩個節點必須設定一樣,預設為1秒
            nopreempt
            # 設定驗證資訊,兩個節點必須一致
            authentication {
                auth_type PASS
                auth_pass 1111
            }
            # 虛擬IP,兩個節點設定必須一樣。可以設定多個,一行寫一個
            virtual_ipaddress {
                192.168.152.20
            }

            track_script {
               chk_nginx  # nginx存活狀態檢測指令碼
            }
        }
192.168.152.14racker節點配置檔案如下:
global_defs {
           router_id nginx_02
        }

        vrrp_script chk_nginx {
            script "/etc/keepalived/nginx_check.sh"
            interval 2
            weight -20
        }

        vrrp_instance VI_1 {
            state BACKUP
            interface eth2
            virtual_router_id 51
            mcast_src_ip 192.168.152.14
            priority 90
            advert_int 1
            nopreempt
            authentication {
                auth_type PASS
                auth_pass 1111
            }
            virtual_ipaddress {
                192.168.152.20
            }

            track_script {
               chk_nginx
            }
        }
注意:上述配置為keepalived的非搶佔模式的配置
非搶佔模式的配置與搶佔模式的配置的區別為:
1.在vrrp_instance塊下兩個節點各增加了nopreempt指令,表示不爭搶vip
2.節點的state都為BACKUP(搶佔模式有一個設定為MASTER)(兩個keepalived   節點都啟動後,預設都是BACKUP狀態,雙方在傳送組播資訊後,會根據優先順序來  選舉一個MASTER出來。由於兩者都配置了nopreempt,所以MASTER從故障中恢    復後,不會搶佔vip。這樣會避免VIP切換可能造成的服務延遲。)
#建立nginx服務檢測指令碼
#分別在主備伺服器/etc/keepalived目錄下建立nginx_check.sh指令碼,併為其新增執行許可權chmod +x /etc/keepalived/nginx_check.sh。用於keepalived定時檢測nginx的服務狀態,如果nginx停止了,會嘗試重新啟動nginx,如果啟動失敗,會將keepalived程序殺死,將vip漂移到備份機器上。
cd /etc/keepalived
vi nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ];then
    /opt/nginx/sbin/nginx #嘗試重新啟動nginx
    sleep 2  #睡眠2秒
    if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
        killall keepalived #啟動失敗,將keepalived服務殺死。將vip漂移到其它備份節點
    fi
Fi

2.9.2.3.Tracker節點啟動keepalived

#啟動keepalived
service keepalived start
注意:本地安裝的啟動方式如下示例
/usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf
#檢查是否啟動
ps -ef | grep keepalived
#檢視vip繫結情況
ip addr

這裡寫圖片描述

2.9.3.設定tracker節點keepalived與nginx開機啟動

設定開機啟動採用修改/etc/rc.d/rc.local檔案的方式
vi /etc/rc.d/rc.local
#Tracker伺服器上新增如下內容
/usr/local/nginx/sbin/nginx
service keepalived start

2.9.4.Keepalived測試

Keepalived測試可結合ip addr命令在關閉或開啟tracker節點的情況下檢視vip的繫結情況,及用vip即192.168.152.20訪問應用,進行檔案的上傳下載操作,完成綜合測試。

3.擴充套件

3.1.Storage同組內節點擴容

在不新增組的情況下進行FastDFS的擴容,可增加磁碟,配置中新增store_path[x]引數即可,
注意:同組內的所有機器都要擴容
參考下述步驟

3.1.1.同一組內所有Storage節點掛載磁碟

3.1.2.FastDFS及Nginx相關配置檔案修改

#修改tracker.conf(Tracker節點)配置檔案
vi /etc/fdfs/tracker.conf
將 store_path=0 修改為 store_path=2
從輪詢的方式改為儲存負載均衡的方式(即選擇剩餘空間最大的目錄存放檔案)
#修改storage.conf(Storage節點)配置檔案
vi /etc/fdfs/storage.conf
將 store_path_count=1 改為 store_path_count=2
增加store_path1=/fdfs/storage1
#修改mod_fastdfs.conf(Storage節點)配置檔案
將store_path_count=1 改為 store_path_count=2
在 store_path0=/fastdfs/storage 下面增加一行store_path1=/fastdfs2/storage
同一節點上分配多個組的話,在該配置檔案最下邊依據規律做相應的修改
#建立軟連線
ln -s /fastdfs2/storage/data/ /fastdfs2/storage/data/M01
#修改nginx.conf(Storage節點)配置檔案
將location ~/group([0-9])/M00 {
            ngx_fastdfs_module;
        }
修改為location ~/group([0-9])/M0[0-1] {
            ngx_fastdfs_module;
        }
#重啟tracker、storage、nginx
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
/usr/local/nginx/sbin/nginx -s reload
注意:若http的形式無法訪問的話執行下述命令嘗試
Killall nginx
/usr/local/nginx/sbin/nginx

注意:原文寫的時候為word格式,文中出現的顏色區分的地方沒有相應效果,勿怪^_^