高可用軟件闡述在高可用軟件領(lǐng)域,我們可能常會聽到Heartbeat、Corosync、Pacemaker、keepalived等軟件。常見有人問Heartbeat、Corosync、Keepalived這三個集群組件我們到底選哪個好呢? 首先我想說明的是,Heartbeat、Corosync是屬于同一類型,Keepalived與Heartbeat、Corosync,根本不是同一類型的。Keepalived使用的vrrp協(xié)議方式,虛擬路由冗余協(xié)議 (Virtual Router Redundancy Protocol,簡稱VRRP);Heartbeat或Corosync是基于主機或網(wǎng)絡服務的高可用方式; 簡單的說就是,Keepalived的目的是模擬路由器的高可用,Heartbeat或Corosync的目的是實現(xiàn)Service的高可用。所以一般Keepalived是實現(xiàn)前端高可用,常用的前端高可用的組合有,就是我們常見的LVS+Keepalived、Nginx+Keepalived、HAproxy+Keepalived。而Heartbeat或Corosync是實現(xiàn)服務的高可用,常見的組合有Heartbeat v3(Corosync)+Pacemaker+NFS+Httpd 實現(xiàn)Web服務器的高可用、Heartbeat v3(Corosync)+Pacemaker+NFS+MySQL 實現(xiàn)MySQL服務器的高可用。 總結(jié)一下,Keepalived中實現(xiàn)輕量級的高可用,一般用于前端高可用,且不需要共享存儲,一般常用于兩個節(jié)點的高可用。而Heartbeat(或Corosync)一般用于服務的高可用,且需要共享存儲,一般用于多節(jié)點的高可用。 下面主要介紹下keepalived。 Keepalived詳解Keepalived是什么? Keepalived是集群管理中保證集群高可用的一個服務軟件,用來防止單點故障。Keepalived起初就是為了LVS調(diào)度節(jié)點高可用而設計的,專門用來監(jiān)控集群系統(tǒng)中各個服務節(jié)點的狀態(tài)。如果某個服務節(jié)點出現(xiàn)異常,或工作出現(xiàn)故障,Keepalived將檢測到,并將出現(xiàn)故障的服務節(jié)點從集群系統(tǒng)中剔除,也就是替LVS做了對后端realserver的健康狀態(tài)監(jiān)測。而當故障節(jié)點恢復正常后,Keepalived又可以自動將此服務節(jié)點重新加入到服務器集群中。這些工作全部自動完成,不需要人工干涉,需要人工完成的只是修復出現(xiàn)故障的服務節(jié)點。 Keepalived后來實現(xiàn)了VRRP協(xié)議的功能,基于VRRP協(xié)議來實現(xiàn)的LVS服務高可用方案,可以利用其來避免單點故障。一個LVS服務會有2臺服務器運行Keepalived,一臺為主服務器(MASTER),一臺為備份服務器(BACKUP),但是對外表現(xiàn)為一個虛擬IP,主服務器會發(fā)送特定的消息給備份服務器,當備份服務器收不到這個消息的時候,即主服務器宕機的時候, 備份服務器就會接管虛擬IP,繼續(xù)提供服務,從而保證了高可用性。Keepalived是VRRP的完美實現(xiàn),因此在介紹keepalived之前,先介紹一下VRRP的原理。 VRRP工作機制先看兩個概念:VRRP路由器和VRRP虛擬路由器 1. VRRP路由器 就是一臺物理路由器,只不過上面運行了VRRP協(xié)議實現(xiàn)的程序,一臺VRRP物理路由器可以位于多個虛擬路由器。 2 .VRRP虛擬路由器 所謂虛擬就是說并不是實際存在的,虛擬路由器通常由多臺物理的VRRP路由器通過某種方式組成的,就好比這些物理的路由器都丟到一個池里面去,整個pool對外看起來就像是一臺路由器,其實內(nèi)部有多臺虛擬路由器。 然后再來看一下VRRP的工作機制? VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協(xié)議??梢哉J為是實現(xiàn)路由器高可用的協(xié)議,目的就是為了解決靜態(tài)路由單點故障。VRRP通過一種競選協(xié)議來動態(tài)的將路由任務交給LAN中的虛擬路由器的某臺VRRP路由器。將N臺提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網(wǎng)內(nèi)其他機器的默認路由為該vip),master會發(fā)組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據(jù)VRRP的優(yōu)先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。Keepalived就是巧用VRRP協(xié)議來實現(xiàn)高可用性(HA)的。 VRRP所有的協(xié)議報文都是通過IP多播(multicast)包(多播地址224.0.0.18)形式發(fā)送的。虛擬路由器由VRID(范圍0-255)和一組IP地址組成,對外表現(xiàn)為一個周知的MAC地址。所以,在一個虛擬路由 器中,不管誰是MASTER,對外都是相同的MAC和IP(稱之為VIP)??蛻舳酥鳈C并不需要因為MASTER的改變而修改自己的路由配置,對客戶端來說,這種主從的切換是透明的。 在一個虛擬路由器中,只有作為MASTER的VRRP路由器會一直發(fā)送VRRP通告信息(VRRPAdvertisement message),BACKUP不會搶占MASTER,除非它的優(yōu)先級(priority)更高。當MASTER不可用時(BACKUP收不到通告信息), 多臺BACKUP中優(yōu)先級最高的這臺會被搶占為MASTER。這種搶占是非常快速的(<> VRRP工作流程? 1) 初始化 路由器啟動時,如果路由器的優(yōu)先級是255(最高優(yōu)先級,路由器擁有路由器地址),要發(fā)送VRRP通告信息,并發(fā)送廣播ARP信息通告路由器IP地址對應的MAC地址為路由虛擬MAC,設置通告信息定時器準備定時發(fā)送VRRP通告信息,轉(zhuǎn)為MASTER狀態(tài);否則進入BACKUP狀態(tài),設置定時器檢查定時檢查是否收到MASTER的通告信息。 2) Master
3)Backup
VRRP ARP查詢處理? 當內(nèi)部主機通過ARP查詢虛擬路由器IP地址對應的MAC地址時,MASTER路由器回復的MAC地址為虛擬的VRRP的MAC地址,而不是實際網(wǎng)卡的 MAC地址,這樣在路由器切換時讓內(nèi)網(wǎng)機器覺察不到;而在路由器重新啟動時,不能主動發(fā)送本機網(wǎng)卡的實際MAC地址。如果虛擬路由器開啟的ARP代理 (proxy_arp)功能,代理的ARP回應也回應VRRP虛擬MAC地址。 keepalived架構(gòu)keepalived也是模塊化設計不同模塊負責不同的功能,下面是keepalived的相關(guān)模塊:core、check、vrrp、libipfwc、libipvs-2.4、libipvs-2.6。 core:是keepalived的核心,負責主進程的啟動和維護及全局配置文件的加載解析等。 check:負責healthchecker(健康檢查),包括了各種健康檢查方式以及對應的配置的解析(包括LVS的配置解析)。 vrrp:VRRPD子進程就是來實現(xiàn)VRRP協(xié)議的。 libipfwc:liipfwc庫是配置LVS時會用到的。 libipvs*:配置LVS時會用到。 PS:注意keepalived和LVS完全是兩碼事只不過他們各負其責相互配合而已。 |
|
來自: 漢無為 > 《網(wǎng)絡中間件保留》