Keepalived 安裝與配置


原文大部分內容摘自 https://blog.csdn.net/yinwenjie/article/details/47130609

本文簡單記錄 Keepalived 軟件的安裝配置操作.

准備兩台服務器,分別安裝好 nginx web 服務器.

再分別獨立安裝Keepalived系統
我們的目標是“在一台工作的Nginx崩潰的情況下,系統能夠檢測到,並自動將請求切換到另外一台備份的Nginx服務器上”。所以,之前安裝的兩台Nginx,一台是Master服務器是主要的工作服務器,另一台是備份服務器,在Master服務器出現問題后,由后者接替其工作。如下圖所示(外網的請求使用一個由keepalived控制的虛擬的浮動IP進行訪問):

使用yum 安裝好 keepalived.
下面的腳本代碼為檢測 nginx 服務器是否正常運行,如果沒有運行則嘗試啟動 nginx,休眠2s后再次檢測nginx運行狀態,如果為運行,則退出此主機上的 keepalived,由其他 keepalived 接管.

#!/bin/sh
if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
    systecmctl start nginx
fi

sleep 2
if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
    systecmctl stop keepalived
fi

keepalived 配置

! Configuration File for keepalived
# global setting , notify email setting
global_defs {
   #節點id,每個節點都不同
   router_id LVS_V1
}

#檢測 nginx 運行狀態的腳本
vrrp_script chknginx {
    script "/opt/checknginx.sh"
    interval 10
}

# instance setting
vrrp_instance VI_1 {
    # 節點角色,MASTER(一個) 和 BACKUP(多個),按角色選中填寫
    state BACKUP
    interface eth1
    # 這里一定是一樣的
    virtual_router_id 52
    # 這里的優先級比Master節點低
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

# 虛擬ip,對外提供,客戶端訪問此ip即為訪問 keepalived 中MASTER 所在主機
    virtual_ipaddress {
        192.168.1.100
    }

    track_script {
        chknginx
    }
}

Keepalived 非搶占模式

keepalived的切換可以是自動的,但是卻做不到毫秒級別,他怎么都需要幾秒鍾的時間進行切換
這就有一個問題,雖然在主節點出現問題我們轉向備份節點時,這個延時無可避免,但是在我們修復主節點后,實際上並沒有必要再馬上做一次切換,所以Keepalived提供了一種非搶占模式,來滿足這個要求
此模式下keepalived 的配置

! Configuration File for keepalived
# global setting , notify email setting
global_defs {
   router_id LVS_V1
}

vrrp_script chknginx {
    script "/opt/checknginx.sh"
    interval 10
    # 一旦節點失效,節點的優先級就減少2
    # 有多少個keepalived節點,就填寫多少數量。
    # 這樣保證這個節點的優先級比其他節點都低
    weight -2
    # fall 表示多少次檢查失敗,就算節點失效。默認1
    #fall 1
}

vrrp_instance VI_1 {
    #state狀態都是BACKUP表示是主要工作節點。
    state BACKUP
    interface eth1
    virtual_router_id 52
    # 這個關鍵配置項,設置為“非搶占”模式
    nopreempt
    # 每個節點的優先級一定要不一樣
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虛擬地址和綁定的端口,如果有多個,就綁定多個
    #dev 是指定浮動IP要綁定的網卡設備號
    virtual_ipaddress {
        192.168.61.100
    }

    #設置的檢查腳本
    #關聯上方的“vrrp_script chknginx”
    track_script {
        chknginx
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM