keepalived簡介
由于keepalived存在的時間很長,所以網絡上對于其部署和應用的案例很多,這里我不再贅述其安裝步驟,這里主要介紹其一些模式和使用場景,以及通過抓包的方式展現其高可用切換的流程。
Keepalived模式分類
2)適用于keepalived組內成員后期變動小場景。
組播模式配置
global_defs {
router_id k8s-11 #表示這臺主機的ID,默認情況下為主機名
vrrp_skip_check_adv_addr #此配置為如果收到的報文和上一個報文是同一個路由器則跳過檢查報文中的源地址。主要為了提高性能
vrrp_iptables #避免生成iptables input鏈 規則
vrrp_strict #嚴格遵守VRRP協議,不允許狀況:1,沒有VIP地址,2.配置了單播,3.在VRRP版本2中有IPv6地址
vrrp_garp_interval 0 #ARP報文發送延遲
vrrp_gna_interval 0 #消息發送延遲
vrrp_mcast_group 224.0.0.18 #指定組播IP地址,默認為224.0.0.18
}
vrrp_script check_nginx { #腳本配置
pass
}
vrrp_instance VI_1 {
state BACKUP #當前節點在此虛擬路由器上的狀態,狀態為MASTER或者BACKUP,一般都配置為backup,最終需要權重來進行比較
interface ens33 #綁定為當前虛擬路由器使用的物理接口,如eth0
virtual_router_id 11 #每個虛擬路由器唯一標識,范圍0-255。同一組虛擬路由器的vrid需要保持一致。
priority 100 #當前物理節點在此虛擬路由器的優先級,范圍1-254
advert_int 1 #vrrp通告的時間間隔(心跳),默認1s
authentication { #認證機制
auth_type PASS
auth_pass 88888888
}
virtual_ipaddress { #配置虛擬IP
192.168.200.16 #指定VIP,不指定網卡,默認為eth0。默認為/32
192.168.200.17/24 dev ens33
#指定VIP的網卡
192.168.200.18/24 dev ens33 label ens33:1
#指定VIP的網卡label
}
track_script { #執行腳本
check_nginx
}
}
單播模式配置
global_defs {
router_id k8s-21
vrrp_skip_check_adv_addr
vrrp_iptables
# vrrp_strict #此選項必須關閉
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_nginx {
pass
}
vrrp_instance VI_2 {
state MASTER
interface ens33
virtual_router_id 21
priority 100
advert_int 2
authentication {
auth_type PASS
auth_pass 88888888
}
unicast_src_ip 192.168.100.21 #本機IP地址
unicast_peer {
192.168.100.22 #同一keepalived組內其他節點IP地址
192.168.100.23 #同一keepalived組內其他節點IP地址
}
virtual_ipaddress {
192.168.100.200/24 dev ens33 #虛擬VIP地址
}
track_script {
check_nginx
}
}
keepalived切換選舉過程
通過以上抓包分析可見,keepalived的選舉機制是很簡單的,就是簡單利用心跳報文+節點優先級進行選舉master,這種方式不可避免的會產生分區腦裂的故障。如果要避免分區腦裂的問題,目前成熟的解決方案是采用分布式選舉算法,例如zookeeper使用的ZAB算法,kafka使用的Raft算法。
VRRP協議報文頭
6.3 通過抓包我們也可以很容易解釋為什么網上說keepalived配置文件中的Virtual_ID必須要配置一樣,因為在同一個組播地址中同一組keepalived的其他節點只會識別Virtual_ID與自己相同的VRRP報文。當然,在同一個局域網中如果有多組keepalived都采用組播模式,那么必須滿足不同組keepalived的Virtual_ID必須不同,或者不同組keepalived的組播地址配置不同。不然會發生干擾,VIP可能會出現”跨組飄移”。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129108.html
摘要:在協議實現里,虛擬路由器使用作為虛擬地址,就是唯一的,這個地址同一時間只有一個物理路由器占用。在虛擬路由器里面的物理路由器組里面通過多播地址來定時發送通告消息。負責健康檢查,包括常見的各種檢查方式。 公司內部 OA 系統要做線上高可用,避免單點故障,所以計劃使用2臺虛擬機通過 Keepalived 工具來實現 nginx 的高可用(High Avaiability),達到一臺nginx...
MySQL高可用方案測試 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; margin...
摘要:環境說明需求與目標本文將通過對目前主流的幾種高可用方案進行對比分析,并基于騰訊云和等基礎產品進行搭建配置測試總結。 本文來源 | 云+社區專欄文章作者 | 萬守兵,騰訊云資深架構師。8年以上大型互聯網公司運維工作經驗,騰訊云資深遷云架構師,一直從事大型互聯網服務端架構設計和優化工作。個人專注于云計算、k8s和 DevOps領域。 導讀:在企業實際生產環境中為了能夠給業務上層應用提供高...
摘要:高可用的首要想法就是雙機熱備,故障時自動切換,所以我們要給加一個備機。注下面實現高可用都用的是雙機熱備,為了方便,把調度服務器簡稱為主機,把調度服務器的備機簡稱為備機。 我之前在一片文章 用Nginx+Redis實現session共享的均衡負載 中做了一個負載均衡的實驗,其主要架構如下: showImg(https://segmentfault.com/img/bVushO); 把de...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20