keepalived是集群管理中保證集群高可用的乙個服務軟體,其功能類似於heartbeat,用來防止單點故障。
keepalived是以vrrp協議為實現基礎的,vrrp全稱virtual router redundancy protocol,即虛擬路由冗餘協議。
虛擬路由冗餘協議,可以認為是實現路由器高可用的協議,即將n臺提供相同功能的路由器組成乙個路由器組,這個組裡面有乙個master和多個backup,master上面有乙個對外提供服務的vip(該路由器所在區域網內其他機器的預設路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據vrrp的優先順序來選舉乙個backup當master。這樣的話就可以保證路由器的高可用了。
keepalived主要有三個模組,分別是core、check和vrrp。core模組為keepalived的核心,負責主程序的啟動、維護以及全域性配置檔案的載入和解析。check負責健康檢查,包括常見的各種檢查方式。vrrp模組是來實現vrrp協議的。
vrrp協議
學過網路的朋友都知道,網路在設計的時候必須考慮到冗餘容災,包括線路冗餘,裝置冗餘等,防止網路存在單點故障,那在路由器或三層交換機處實現冗餘就顯得尤為重要,在網路裡面有個協議就是來做這事的,這個協議就是vrrp協議,keepalived就是巧用vrrp協議來實現高可用性(ha)的
只需要把伺服器當作路由器即可! 在《
vrrp協議
》裡講到了虛擬路由器的id也就是vrid在這裡比較重要
keepalived完全遵守vrrp協議,包括競選機制等等
keepalived配置詳解
keepalived有三類配置區域(姑且就叫區域吧),注意不是三種配置檔案,是乙個配置檔案裡面三種不同類別的配置區域
全域性配置(global configuration)
vrrpd配置
lvs配置
一,全域性配置
全域性配置又包括兩個子配置:
全域性定義(global definition)
靜態路由配置(static ipaddress/routes)
1,全域性定義(global definition)配置範例
global_defs
notification_email_from [email protected]
smtp_server 127.0.0.1
stmp_connect_timeout 30
router_id node1}
全域性配置解析
global_defs全域性配置標識,表面這個區域{}是全域性配置
notification_email
表示keepalived在發生諸如切換操作時需要傳送email通知,以及email傳送給哪些郵件位址,郵件位址可以多個,每行乙個
notification_email_from
表示傳送通知郵件時郵件源位址是誰
smtp_server 127.0.0.1
表示傳送email時使用的smtp伺服器位址,這裡可以用本地的sendmail來實現
smtp_connect_timeout 30
連線smtp連線超時時間
router_id node1
機器標識
2,靜態位址和路由配置範例
static_ipaddress
static_routes
192.168.1.1/24 brd + dev eth0 scope global 相當於: ip addr add 192.168.1.1/24 brd + dev eth0 scope global
就是給eth0配置ip位址
路由同理
一般這個區域不需要配置
這裡實際上就是給伺服器配置真實的ip位址和路由的,在複雜的環境下可能需要配置,
一般不會用這個來配置
,我們可以直接用vi /etc/sysconfig/network-script/ifcfg-eth1來配置,切記這裡可不是vip哦,不要搞混淆了,切記切記!
vrrpd配置
vrrpd配置包括三個類
vrrp同步組(synchroization group)
vrrp例項(vrrp instance)
vrrp指令碼
1,vrrp同步組(synchroization group)配置範例
vrrp_sync_group vg_1
notify_master /path/to/to_master.sh
notify_backup /path_to/to_backup.sh
notify_fault 「/path/fault.sh vg_1」
notify /path/to/notify.sh
smtp_alert}
其中:
group
http和mysql是例項名和下面的例項名一致
notify_master /path/to/to_master.sh:表示當切換到master狀態時,要執行的指令碼
notify_backup /path_to/to_backup.sh:表示當切換到backup狀態時,要執行的指令碼
notify_fault 「/path/fault.sh vg_1」
notify /path/to/notify.sh:
smtp alter表示切換時給global defs中定義的郵件位址傳送右鍵通知
2,vrrp例項(instance)
配置範例
state指定instance(initial)的初始狀態,就是說在配置好後,這台伺服器的初始狀態就是這裡指定的,但這裡指定的不算,還是得要通過競選通過優先順序來確定,裡如果這裡設定為master,但如若他的優先順序不及另外一台,那麼這台在傳送通告時,會傳送自己的優先順序,另外一台發現優先順序不如自己的高,那麼他會就回搶占為master
inte***ce:
例項繫結的網絡卡,因為在配置虛擬ip的時候必須是在已有的網絡卡上新增的
dont track primary:
忽略vrrp的inte***ce錯誤
track inte***ce:
跟蹤介面,設定額外的監控,裡面任意一塊網絡卡出現問題,都會進入故障(fault)狀態,例如,用nginx做均衡器的時候,內網必須正常工作,如果內網出問題了,這個均衡器也就無法運作了,所以必須對內外網同時做健康檢查
mcast src ip:
傳送多播資料報時的源ip位址,這裡注意了,這裡實際上就是在那個位址上傳送vrrp通告,這個非常重要,一定要選擇穩定的網絡卡埠來傳送,這裡相當於heartbeat的心跳埠,如果沒有設定那麼就用預設的繫結的網絡卡的ip,也就是inte***ce指定的ip位址
garp master delay:
在切換到master狀態後,延遲進行免費的arp(gratuitous arp)請求
virtual router id:
這裡設定vrid,這裡非常重要,相同的vrid為乙個組,他將決定多播的mac位址
priority 100:
設定本節點的優先順序,優先順序高的為master
advert int:
檢查間隔,預設為1秒
virtual ipaddress:
這裡設定的就是vip,也就是虛擬ip位址,他隨著state的變化而增加刪除,當state為master的時候就新增,當state為backup的時候刪除,這裡主要是有優先順序來決定的,和state設定的值沒有多大關係,這裡可以設定多個ip位址
virtual routes:
原理和virtual ipaddress一樣,只不過這裡是增加和刪除路由
lvs sync daemon inte***ce:
lvs syncd繫結的網絡卡
authentication:
這裡設定認證
auth type:
認證方式,可以是pass或ah兩種認證方式
auth pass:
認證密碼
nopreempt:
設定不搶占,這裡只能設定在state為backup的節點上,而且這個節點的優先順序必須別另外的高
preempt delay:
搶占延遲
debug:
debug級別
notify master:
和sync group這裡設定的含義一樣,可以單獨設定,例如不同的例項通知不同的管理人員,http例項發給**管理員,mysql的就發郵件給dba
3,vrrp指令碼
首先在vrrp_script區域定義指令碼名字和指令碼執行的間隔和指令碼執行的優先順序變更
vrrp_script check_running
注意:vrrp指令碼(vrrp_script)和vrrp例項(
vrrp_instance
)屬於同乙個級別
keepalived工作原理和配置
keepalived是集群管理中保證集群高可用的乙個服務軟體,用來防止單點故障。keepalived是以vrrp協議為實現基礎的,keepalive類似於ylayer3,4 5交換機制的軟體,vrrp全稱virtual router redundancy protocol,即虛擬路由冗餘協議。虛擬路...
Keepalived工作原理
keepalived是以vrrp協議為實現基礎的,vrrp全稱virtual router redundancy protocol,即虛擬路由冗餘協議。虛擬路由冗餘協議,可以認為是實現路由器高可用的協議,即將n臺提供相同功能的路由器組成乙個路由器組,這個組裡面有乙個master和多個backup,m...
Keepalived工作原理
keepalived是以vrrp協議為實現基礎的 vrrp virtual router redundancy protocol 虛擬路由冗餘協議 可以認為是實現路由器高可用的協議,即將n臺提供相同功能的路由器組成乙個路由器組,這個組裡面有乙個master和多個backup,master上面有乙個對...