企業實戰:逐步實現企業各類情景下的需求前端
企業情景三:
網站的訪問量愈來愈大,網站訪問量已經從原來的1000QPS,變爲3000QPS,目前業務已經經過集羣LVS架構可作到隨時拓展,後端節點已經經過集羣技術保障了可用性,但對於前端負載均衡器來講,是個比較大的安全隱患,由於當前端負載均衡器出現故障時,整個集羣就處於癱瘓狀態,所以,負載均衡器的可用性也顯得相當重要,那麼怎麼來解決負載均衡器的可用性問題呢?linux
項目三:主從實現基於Keepalived高可用集羣網站架構vim
實現keepalived企業級高可用基於LVS-DR模式的應用實戰: 後端
1、環境準備:
兩臺centos系統作DR、一主一從,兩臺實現過基於LNMP的電子商務網站centos
2、安裝步驟:
一、兩臺服務器都使用yum 方式安裝keepalived服務
二、iptables -F && setenforing 清空防火牆策略,關閉selinux安全
實現前分配各個角色bash
機器名稱 | 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(橋接) |
3、配置基於DR模式的LVS負載均衡集羣:服務器
主(master): 一、修改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 } } 二、修改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): 一、修改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 } } 二、修改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的變換以及權重值) 企業實戰系列,逐步瞭解,逐步提高,不足之處煩請各位大佬指出(抱拳)