企業實戰(3)-主從實現基於Keepalived高可用集羣網站架構

企業實戰:逐步實現企業各種情景下的需求

企業情景三:
網站的訪問量越來越大,網站訪問量已經從原來的1000QPS,變爲3000QPS,目前業務已經通過集羣LVS架構可做到隨時拓展,後端節點已經通過集羣技術保障了可用性,但對於前端負載均衡器來說,是個比較大的安全隱患,因爲當前端負載均衡器出現故障時,整個集羣就處於癱瘓狀態,因此,負載均衡器的可用性也顯得至關重要,那麼怎麼來解決負載均衡器的可用性問題呢?

項目三:主從實現基於Keepalived高可用集羣網站架構

實現keepalived企業級高可用基於LVS-DR模式的應用實戰:

一、環境準備:
兩臺centos系統做DR、一主一從,兩臺實現過基於LNMP的電子商務網站

二、安裝步驟:
1、兩臺服務器都使用yum 方式安裝keepalived服務
2、iptables -F && setenforing 清空防火牆策略,關閉selinux

實現前分配各個角色

機器名稱 IP配置 服務角色 備註
lvs-server-master VIP:172.17.252.110 DIP:172.17.250.223 主負載均衡器 開啓路由功能 配置keepalived
lvs-server-backup VIP:172.17.252.110 DIP:172.17.251.37 從負載均衡器 開啓路由功能 配置keepalived
rs01 RIP:172.17.252.87 後端服務器 網關指向DIP(橋接)
rs02 RIP:172.17.250.45 後端服務器 網關指向DIP(橋接)

三、配置基於DR模式的LVS負載均衡集羣:

主(master):
1、修改keepalived主(lvs-server-master)配置文件實現virtual_instance
vrrp_instance VI_1 {
    state MASTER  #狀態情況
    interface eth1   #接口
    virtual_router_id 51
    priority 100   #權重
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass magedu
    }
    virtual_ipaddress {
    172.17.252.110   #VIP
    }
}
2、修改keepalived主(lvs-server-backup)配置文件實現virtual_server
virtual_server VIP 端口 {
    delay_loop 6
    ld_algo rr
    lb_kind DR
    protocol TCP
    real_server 172.17.252.87 80 {   #RIP
        weight 1
        TCP_CHECK {
            connect_timeout 3
        }
    }
    real_server 172.17.250.45 80 {   #RIP
    weight 1
    TCP_CHECK {
        connect_timeout 3
        }
}
從(back-up):
1、修改keepalived從(lvs-server-backup)配置文件實現virtual_instance
vrrp_instance VI_1 {
    state BACKUP  #狀態情況
    interface eth1  #接口
    virtual_router_id 51
    priority 98  #權重,注意從要比主的權重小
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass grr02
        }
        virtual_ipaddress {
            172.17.252.110
            }
}
2、修改keepalived從(lvs-server-backup)配置文件實現virtual_server
virtual_server VIP 端口 {
    delay_loop 6
    ld_algo rr
    lb_kind DR  #LVS-DR模式
    protocol TCP
    real_server 172.17.252.87 80 {
        weight 1
        TCP_CHECK {
        connect_timeout 3
            }
        }
    real_server 172.17.250.45 80 {
    weight 1
    TCP_CHECK {
        connect_timeout 3
        }
}

企業應用
(1)實現keeaplived故障通知機制
在企業中,高可用服務,是保證整個系統穩定性的重要前提,確保高可用服務能正常工作和運轉,也是非常重要的工作。除了服務上線前的充分測試之外,也需要確保對高可用服務的監控機制,keepalived 自身具備監控和通知機制,可在發生主從切換、故障轉移時,通過自定義命令或者腳本,實現通知功能,從而讓管理員在第一時間得知系統運行狀態,確保整個服務的穩定性和可用性。
可在配置文件中,在instance配置中,通過keepalived 通知功能notify,可實現定製化腳本功能,如下所示:

notify_backup "/etc/keepalived/notify.sh backup"
notify_master "/etc/keepalived/notify.sh master"
notify_fault "/etc/keepalived/notify.sh fault" ```

腳本示範:

vim /etc/keepalived/notify.shbr/>#!/bin/bash
contact='root@localhost'
notify() {
mailsubject="$(hostname) to be $1: vip floating"
mailbody="$(date +'%F %H:%M:%S'): vrrp transition, $(hostname) changed to be $1"
echo $mailbody | mail -s "$mailsubject" $contact
}
case $1 in
master)
notify master
exit 0
;;
backup)
notify backup
exit 0
;;
fault)
notify fault
exit 0
;;
*)
echo "Usage: $(basename $0) {master|backup|fault}"
exit 1
;;
esac


(2)實現keeaplived自定義腳本功能
在配置文件中,可實現以下配置,定義一個腳本,並在對應的實例instance中調用,之後就可通過手動建立down 文件,使得keepalived 實例減少權重,實現主從切換,常用於在線修改keepalived 配置文件時使用
腳本示範:

    ```vrrp_script chk_down {
    script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0 "
    interval 2 # check every 2 seconds
    weight -5
    }   ```

對應實例中調用
track_script {
chk_down
}
在配置文件中,也可實現以下配置,定義一個腳本,並在對應的實例中調用,也可以用於檢測服務是否有異常,異常的話進行切換。
腳本示範:

vrrp_script chk_sshd {
script "killall -0 sshd" # cheaper than pidof
interval 2 # check every 2 seconds
weight -4 # default prio: -4 if KO
fall 2 # require 2 failures for KO
rise 2 # require 2 successes for OK
}

track_script {
    chk_sshd

}


主從實現完成,若想要實現主主方式,可以理解爲互爲主從,一個server端配置爲主從,另一server端也配置爲主從(注意IP的變換以及權重值)
企業實戰系列,逐步瞭解,逐步提升,不足之處煩請各位大佬指出(抱拳)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章