1.pacemaker
Pacemaker 是一款開源的高可用資源管理軟件,適合大集群或者小集群。
Pacemaker 由Novell支持,SLES HAE就是用Pacemaker來管理集群,並且Pacemaker 得到了
來自Redhat,Linbit等公司的支持。
Pacemaker是Heartbeat 3.0的crm,它可以使用所有的Heartbeat的資源腳本,升級無憂。
當故障發生時, Pacemaker 會自動的開始恢復,比保證你的程序在集群的其他節點上提供服務,
接管故障的機器。你的用戶甚至不會知道有故障發生!
什么是Pacemaker?
Pacemaker是一個集群資源管理者。他用資源級別的監測和恢復來保證集群服務(aka. 資源)的最
大可用性。它可以用你所擅長的基礎組件(Corosync或者是Heartbeat)來實現通信和關系管理。
Pacemaker包含以下的關鍵特性:
監測並恢復節點和服務級別的故障存儲無關,並不需要共享存儲資源無關,任何能用腳本控制的
資源都可以作為服務支持使用STONITH來保證數據一致性。支持大型或者小型的集群clusters
支持 quorate(法定人數) 或 resource(資源) 驅動的集群支持任何的 冗余配置自動同步各個節
點的配置文件可以設定集群范圍內的ordering, colocation and anti-colocation支持高級的
服務模式
2.keepalived
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 協議簡介
在現實的網絡環境中,兩台需要通信的主機大多數情況下並沒有直接的物理連接。對於這樣的情
況,它們之間路由怎樣選擇?主機如何選定到達目的主機的下一跳路由,這個問題通常的解決方法
有兩種:
1.在主機上使用動態路由協議(RIP、OSPF等)
2.在主機上配置靜態路由
很明顯,在主機上配置動態路由是非常不切實際的,因為管理、維護成本以及是否支持等諸多問題。
配置靜態路由就變得十分流行,但路由器(或者說默認網關default gateway)卻經常成為單點故障。
VRRP的目的就是為了解決靜態路由單點故障問題,VRRP通過一競選(election)協議來動態的將路
由任務交給LAN中虛擬路由器中的某台VRRP路由器。
VRRP 工作機制
在一個VRRP虛擬路由器中,有多台物理的VRRP路由器,但是這多台的物理的機器並不能同時工作,
而是由一台稱為MASTER的負責路由工作,其它的都是BACKUP,MASTER並非一成不變,VRRP讓每個
VRRP路由器參與競選,最終獲勝的就是MASTER。MASTER擁有一些特權,比如,擁有虛擬路由器的
IP地址,我們的主機就是用這個IP地址作為靜態路由的。擁有特權的MASTER要負責轉發發送給網關
地址的包和響應ARP請求。
VRRP通過競選協議來實現虛擬路由器的功能,所有的協議報文都是通過IP多播(multicast)包
(多播地址224.0.0.18)形式發送的。虛擬路由器由VRID(范圍0-255)和一組IP地址組成,對外表
現為一個周知的MAC地址。所以,在一個虛擬路由 器中,不管誰是MASTER,對外都是相同的MAC和
IP(稱之為VIP)。客戶端主機並不需要因為MASTER的改變而修改自己的路由配置,對客戶端來說,
這種主從的切換是透明的。
一個虛擬路由器中,只有作為MASTER的VRRP路由器會一直發送VRRP通告信息(VRRPAdvertisement message),
BACKUP不會搶占MASTER,除非它的優先級(priority)更高。當MASTER不可用時(BACKUP收不到通告
信息), 多台BACKUP中優先級最高的這台會被搶占為MASTER。這種搶占是非常快速的(<1s),以保
證服務的連續性。由於安全性考慮,VRRP包使用了加密協議進行加密.
VRRP 工作流程
(1)初始化
路由器啟動時,如果路由器的優先級是255(最高優先級,路由器擁有路由器地址),要發送VRRP
通告信息,並發送廣播ARP信息通告路由器IP地址對應的MAC地址為路由虛擬MAC,設置通告信息定
時器准備定時發送VRRP通告信息,轉為MASTER狀態;否則進入BACKUP狀態,設置定時器檢查定時
檢查是否收到MASTER的通告信息。
(2)Master
1.設置定時通告定時器;
2.用VRRP虛擬MAC地址響應路由器IP地址的ARP請求;
3.轉發目的MAC是VRRP虛擬MAC的數據包;
4.如果是虛擬路由器IP的擁有者,將接受目的地址是虛擬路由器IP的數據包,否則丟棄;
5.當收到shutdown的事件時刪除定時通告定時器,發送優先權級為0的通告包,轉初始化狀態;
6.如果定時通告定時器超時時,發送VRRP通告信息;
7.收到VRRP通告信息時,如果優先權為0,發送VRRP通告信息;否則判斷數據的優先級是否高於本
機,或相等而且實際IP地址大於本地實際IP,設置定時通告定時器,復位主機超時定時器,轉
BACKUP狀態;否則的話,丟棄該通告包;
(3)Backup
1.設置主機超時定時器;
2.不能響應針對虛擬路由器IP的ARP請求信息;
3.丟棄所有目的MAC地址是虛擬路由器MAC地址的數據包;
4.不接受目的是虛擬路由器IP的所有數據包;
5.當收到shutdown的事件時刪除主機超時定時器,轉初始化狀態;
6.主機超時定時器超時的時候,發送VRRP通告信息,廣播ARP地址信息,轉MASTER狀態;
7.收到VRRP通告信息時,如果優先權為0,表示進入MASTER選舉;否則判斷數據的優先級是否高於
本機,如果高的話承認MASTER有效,復位主機超時定時器;否則的話,丟棄該通告包;
ARP查詢處理
當內部主機通過ARP查詢虛擬路由器IP地址對應的MAC地址時,MASTER路由器回復的MAC地址為虛
擬的VRRP的MAC地址,而不是實際網卡的 MAC地址,這樣在路由器切換時讓內網機器覺察不到;而
在路由器重新啟動時,不能主動發送本機網卡的實際MAC地址。如果虛擬路由器開啟的ARP代理
(proxy_arp)功能,代理的ARP回應也回應VRRP虛擬MAC地址;
3.區別
安裝配置不同
從安裝、配置、使用、維護等角度上對比,Keepalived都比Heartbeat要簡單得多,Keepalived
只有1個安裝文件、1個配置文件,配置文件也簡單很多
協議不同
Keepalived使用的vrrp協議方式進行通信和選舉,虛擬路由冗余協議Virtual Router
Redundancy Protocol
Heartbeat是基於主機或網絡的服務的高可用方式 ,使用心跳進行通信和選舉,Heartbeat除了
走網絡外,還可以通過串口通信,貌似更可靠
應用場景不同
keepalived目的是模擬路由器的雙機,lvs的高可用建議用keepavlived
heartbeat目的是用戶service的雙機 ,業務的高可用用heartbeat
功能不同
Keepalived主要用於集群倒換,基本沒有管理功能
Heartbeat雖然復雜,但功能更強大,配套工具更全,適合做大型集群管理
使用方式基本類似
如果要基於兩者設計高可用方案,最終都要根據業務需要寫自定義的腳本,Keepalived的腳本沒
有任何約束,隨便怎么寫都可以;Heartbeat的腳本有約束,即要支持service start/stop/restart
這種方式,而且Heartbeart提供了很多默認腳本,簡單的綁定ip,啟動apache等操作都已經有了