負載均衡之keepalived
阿新 • • 發佈:2022-05-25
DR實驗存在的隱患
- DR可能會掛,單點故障
- RS可能會掛
解決方案:
-
解決單點故障
- 主備:準備多個DR備用機,做好配置,主機掛掉備用機頂上
- 主主
-
解決RS會掛的問題
給RS傳送請求,如果收到200 ok回覆則說明RS正常
keepalived
keepalived就是實現了上述解決方法的工具,檢測web伺服器的狀態,如果有一臺web伺服器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的web伺服器從系統中剔除,當web伺服器工作正常後Keepalived自動將web伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web伺服器。
主要用途:
- 高可用:監控主機,主動替換備用機
- RS的健康檢測
只需要給主機DR和備用機裝keepalived監控DR,並且向RS傳送請求檢測RS。
keepalived的使用:
-
安裝
yum install keepalived ipvsadm -y
-
備份和修改keepalived配置檔案
DR配置檔案:
cp keepalive.conf keepalived.conf.bak cat /etc/keepalived.conf global_defs { notification_email { #設定報警郵件地址,可多行每行一個。 [email protected] } notification_email_from keepalived@localhost #設定郵件的傳送地址 smtp_server 127.0.0.1 #設定SMTP server地址 smtp_connect_timeout 30 #設定SMTP 超時時間 router_id LVS_DEVEL #執行keepalived機器的一個標識 } vrrp_instance VI_1 { #定義一個vrrp例項,不同例項的例項編號不一樣。 state MASTER #定義在keepalived的角色MASTER表示為主伺服器,BACKUP為備伺服器。 interface eth0 #指定HA檢測的網路介面 virtual_router_id 50 #虛擬路由標示,同一個例項裡的路由標示相同,且唯一。MASTER和BACKUP的路由標識一樣,且唯一。 priority 100 #定義此伺服器在此虛擬路由器中的優先順序,優先順序大許可權高 advert_int 1 #檢測時間間隔 authentication { #設定驗證型別和密碼,主從的密碼必須相同,要不兩者不通訊。 auth_type PASS auth_pass 1111 } virtual_ipaddress { #設定虛擬IP地址,可以設定多個虛擬IP地址。 192.168.233.100/24 dev ens33 label ens33:3 } } //配置DR主機lvs,代替使用ipvsadm配置lvs virtual_server 192.168.233.100 80 { delay_loop 6 lb_algo rr lb_kind DR //模式,NAT,DR,TUN nat_mask 255.255.255.0 //子網掩碼 persistence_timeout 0 // protocol TCP real_server 192.168.150.12 80 {//負載機配置 weight 1 HTTP_GET {//對後端機進行健康檢查的配置 url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } //配置RS real_server 192.168.233.129 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }
備用DR配置:
global_defs { notification_email { [email protected] } notification_email_from keepalive@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.233.100 } } //配置DR主機lvs,代替使用ipvsadm配置lvs virtual_server 192.168.233.100 80 { delay_loop 6 lb_algo rr lb_kind DR //模式,NAT,DR,TUN nat_mask 255.255.255.0 //子網掩碼 persistence_timeout 0 // protocol TCP real_server 192.168.150.12 80 {//負載機配置 weight 1 HTTP_GET {//對後端機進行健康檢查的配置 url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } //配置RS real_server 192.168.233.129 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }
-
啟動keepalived服務
service keepalived start
最後,如果keepalived程序掛掉呢?
使用zookper叢集解決這個問題。