keepalied雙主熱備

一、keepalied安裝

下載keepalied後解壓,進入解壓目錄,執行 configure 命令配置安裝目錄與conf配置文件目錄

./configure --prefix=/usr/local/keepalived --sysconf=/etc

prefix : keepaivied 安裝路徑

sysconf :核心配置文件所在位置,固定,改爲其他位置無法啓動

 

執行命令後若提示以下內容,則需安裝 libnl/libnl-3 依賴

安裝 libnl/libnl-3 依賴 

yum -y install libnl libnl-devel

安裝後再次執行 configure  命令即可

執行  make && make install 安裝

 

註冊爲系統服務

進入如下目錄:

/home/software/keepalived-2.0.18/keepalived/etc

複製文件:

cp init.d/keepalived /etc/init.d/
cp sysconfig/keepalived /etc/sysconfig/

刷新配置:

systemctl daemon-reload

相關操作:

# 啓動keepalived
systemctl start keepalived
# 停止keepalived
systemctl stop keepalived
# 重啓keepalived
systemctl restart keepalived

二、Keepalied雙機主備高可用

1.配置Keepalived主節點

準備第一臺虛擬機(IP:192.168.3.57),按照上述安裝後,進入keepalived.conf所在目錄,即 /etc/keepalived 目錄下,編輯配置文件  vim keepalived.conf ,刪除其中默認數據,將下方配置項複製進去保存即可,其中內容根據說明自行調整

global_defs {
    # 路由id:當前安裝keepalived的節點主機標識符,保證全局唯一
    router_id keep_57
}

vrrp_instance VI_1 {
    # 狀態是(MASTER)主機還是備用機(BACKUP)
    state MASTER
    # 該實例綁定的網卡
    interface eth0
    # 保證主備節點一致
    virtual_router_id 233
    # 權重,master權重一般高於backup,有多個就選舉,誰權重高誰當選
    priority 100
    # 主備之間同步檢查時間間隔,單位秒
    advert_int 2
    # 認證權限密碼,防止非法節點進入
    authentication {
        auth_type PASS 
        auth_pass 1111 
    }
    # 虛擬出來的ip,可以有多個(vip) 
    virtual_ipaddress {
        192.168.3.51
    }
}

其中 interface 綁定的值爲當前網卡名,輸入 ip addr 查看,如下圖

進入/usr/local/keepalived/sbin/目錄下,執行 ./keepalived 啓動keepalived

進入至Keepalived解壓路徑cd  /home/software/keepalived-2.0.18/keepalived/etc

執行命令

cp init.d/keepalived /etc/init.d/

cp sysconfig/keepalived /etc/sysconfig/

複製完成後,可通過service keepalived restart 重啓服務

相關命令

啓動 
service keepalived start

停止 
service keepalived stop

重啓 
service keepalived restart 

在該臺虛擬機啓動nginx服務,訪問綁定的虛擬IP :192.168.3.51 即可映射至nginx服務,成功訪問

 

2.配置Keepalived備用節點

 另外開啓一臺虛擬機(IP:192.168.3.56),安裝Keepalived,安裝步驟與主節點安裝一致,調整keepalived.conf文件爲別用節點

global_defs {
    # 路由id:主機標識符,全局唯一
    router_id keep_56
}

vrrp_instance VI_1 {
    # 備用機
    state BACKUP
    # 該實例綁定的網卡
    interface eth0
    # 保證主備節點一致
    virtual_router_id 233
    # 權重,低於主節點
    priority 70
    # 主備之間同步檢查時間間隔,單位秒
    advert_int 2
    # 認證權限密碼,與主節點一致
    authentication {
        auth_type PASS 
        auth_pass 1111 
    }
    # 與主節點保持一致,綁定到同一個vip
    virtual_ipaddress {
        192.168.3.51
    }
}

也在該太虛擬機啓動一下nginx服務。

 

到現在,Keepalived主備高可用已搭建完成,可進行測試,我們搭建的環境如下

192.168.3.57 虛擬機:nginx服務已啓動,Keepalived服務已啓動,綁定vip(192.168.3.51),主節點(MASTER)

192.168.3.56 虛擬機:nginx服務已啓動,Keepalived服務已啓動,綁定vip(192.168.3.51),備用節點(BACKUP)

現在訪問192.168.3.51看看效果:

成功跳轉主節點的nginx服務。

我們模擬主節點宕機的情況,使用kill -9命令殺死主節點的Keepalived服務

 

主節點的Keepalived節點已經宕機,我們再來訪問  192.168.3.51

我們發現, 再次訪問後,訪問到的是備用節點服務,成功做到了主備高可用,我們再把主節點服務修復,啓動Keepalived服務,再次訪問看看。

 刷新幾次發現,keepalived服務成功從備用節點切換到主節點。至此主備高可用服務搭建完成測試無誤

三、Keepalied配置Nginx自動重啓,實現7×24小時不間斷服務

1. 增加Nginx重啓檢測腳本
vim /etc/keepalived/check_nginx_alive_or_not.sh

書寫下方腳本

#!/bin/bash

A=`ps -C nginx --no-header |wc -l`
# 判斷nginx是否宕機,如果宕機了,嘗試重啓
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    # 等待一小會再次檢查nginx,如果沒有啓動成功,則停止keepalived,使其啓動備用機
    sleep 3
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi
增加運行權限
chmod +x /etc/keepalived/check_nginx_alive_or_not.sh

 

2. 配置keepalived監聽nginx腳本
vrrp_script check_nginx_alive {
    script "/etc/keepalived/check_nginx_alive_or_not.sh"
    interval 2
    # 每隔兩秒運行上一行腳本
    weight 10
    # 如果腳本運行失敗,則升級權重+10
    # weight -10 腳本運行失敗,則升級權重-10
}
3. vrrp_instance 中新增監控的腳本
track_script {
    check_nginx_alive # 追蹤 nginx 腳本
}

最終修改後的keepalived.conf文件如下:

global_defs {
    router_id keep_57
}

vrrp_script check_nginx_alive {
    script "/etc/keepalived/check_nginx_alive_or_not.sh"
    interval 2
    weight 10
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 233
    priority 100
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.51
    }
    track_script {
        check_nginx_alive
    }
}

4. 測試

嘗試關閉nginx,再次訪問,發現nginx依舊正常訪問,腳本成功執行

 

四、配置Keepalived雙主熱備

雙主熱備是爲了防止備用機使用較少造成資源浪費,配置方式爲兩臺服務互爲主備即可

 

192.168.3.57 Keepalived.conf配置如下

global_defs {
    router_id keep_57
}

vrrp_script check_nginx_alive {
    script "/etc/keepalived/check_nginx_alive_or_not.sh"
    interval 2
    weight 10
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 233
    priority 100
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.51
    }
    track_script {
        check_nginx_alive
    }
}
vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 234
    priority 70
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.52
    }
    track_script {
        check_nginx_alive
    }
}

 

192.168.3.56 Keepalived.conf配置如下

global_defs {
    router_id keep_56
}

vrrp_script check_nginx_alive {
    script "/etc/keepalived/check_nginx_alive_or_not.sh"
    interval 2
    weight 10
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 233
    priority 70
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.51
    }
    track_script {
        check_nginx_alive
    }
}

vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 234
    priority 100
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.52
    }
    track_script {
        check_nginx_alive
    }
}

重啓兩個Keepalived服務即可,雙主熱備還需配合DNS負載均衡共同使用,DNS解析時,負載均衡配置IP爲192.168.3.51-192.168.3.52,如此便實現了兩個服務共同使用,雙主熱備

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