日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

高可用軟件keepalived詳解

 漢無(wú)為 2018-12-11

高可用軟件闡述

在高可用軟件領(lǐng)域,我們可能常會(huì)聽(tīng)到Heartbeat、Corosync、Pacemaker、keepalived等軟件。常見(jiàn)有人問(wèn)Heartbeat、Corosync、Keepalived這三個(gè)集群組件我們到底選哪個(gè)好呢?

首先我想說(shuō)明的是,Heartbeat、Corosync是屬于同一類型,Keepalived與Heartbeat、Corosync,根本不是同一類型的。Keepalived使用的vrrp協(xié)議方式,虛擬路由冗余協(xié)議 (Virtual Router Redundancy Protocol,簡(jiǎn)稱VRRP);Heartbeat或Corosync是基于主機(jī)或網(wǎng)絡(luò)服務(wù)的高可用方式;

簡(jiǎn)單的說(shuō)就是,Keepalived的目的是模擬路由器的高可用,Heartbeat或Corosync的目的是實(shí)現(xiàn)Service的高可用。所以一般Keepalived是實(shí)現(xiàn)前端高可用,常用的前端高可用的組合有,就是我們常見(jiàn)的LVS+Keepalived、Nginx+Keepalived、HAproxy+Keepalived。而Heartbeat或Corosync是實(shí)現(xiàn)服務(wù)的高可用,常見(jiàn)的組合有Heartbeat v3(Corosync)+Pacemaker+NFS+Httpd 實(shí)現(xiàn)Web服務(wù)器的高可用、Heartbeat v3(Corosync)+Pacemaker+NFS+MySQL 實(shí)現(xiàn)MySQL服務(wù)器的高可用。

總結(jié)一下,Keepalived中實(shí)現(xiàn)輕量級(jí)的高可用,一般用于前端高可用,且不需要共享存儲(chǔ),一般常用于兩個(gè)節(jié)點(diǎn)的高可用。而Heartbeat(或Corosync)一般用于服務(wù)的高可用,且需要共享存儲(chǔ),一般用于多節(jié)點(diǎn)的高可用。

下面主要介紹下keepalived。

Keepalived詳解

Keepalived是什么?

Keepalived是集群管理中保證集群高可用的一個(gè)服務(wù)軟件,用來(lái)防止單點(diǎn)故障。Keepalived起初就是為了LVS調(diào)度節(jié)點(diǎn)高可用而設(shè)計(jì)的,專門用來(lái)監(jiān)控集群系統(tǒng)中各個(gè)服務(wù)節(jié)點(diǎn)的狀態(tài)。如果某個(gè)服務(wù)節(jié)點(diǎn)出現(xiàn)異常,或工作出現(xiàn)故障,Keepalived將檢測(cè)到,并將出現(xiàn)故障的服務(wù)節(jié)點(diǎn)從集群系統(tǒng)中剔除,也就是替LVS做了對(duì)后端realserver的健康狀態(tài)監(jiān)測(cè)。而當(dāng)故障節(jié)點(diǎn)恢復(fù)正常后,Keepalived又可以自動(dòng)將此服務(wù)節(jié)點(diǎn)重新加入到服務(wù)器集群中。這些工作全部自動(dòng)完成,不需要人工干涉,需要人工完成的只是修復(fù)出現(xiàn)故障的服務(wù)節(jié)點(diǎn)。

Keepalived后來(lái)實(shí)現(xiàn)了VRRP協(xié)議的功能,基于VRRP協(xié)議來(lái)實(shí)現(xiàn)的LVS服務(wù)高可用方案,可以利用其來(lái)避免單點(diǎn)故障。一個(gè)LVS服務(wù)會(huì)有2臺(tái)服務(wù)器運(yùn)行Keepalived,一臺(tái)為主服務(wù)器(MASTER),一臺(tái)為備份服務(wù)器(BACKUP),但是對(duì)外表現(xiàn)為一個(gè)虛擬IP,主服務(wù)器會(huì)發(fā)送特定的消息給備份服務(wù)器,當(dāng)備份服務(wù)器收不到這個(gè)消息的時(shí)候,即主服務(wù)器宕機(jī)的時(shí)候, 備份服務(wù)器就會(huì)接管虛擬IP,繼續(xù)提供服務(wù),從而保證了高可用性。Keepalived是VRRP的完美實(shí)現(xiàn),因此在介紹keepalived之前,先介紹一下VRRP的原理。

VRRP工作機(jī)制

先看兩個(gè)概念:VRRP路由器和VRRP虛擬路由器

1. VRRP路由器

就是一臺(tái)物理路由器,只不過(guò)上面運(yùn)行了VRRP協(xié)議實(shí)現(xiàn)的程序,一臺(tái)VRRP物理路由器可以位于多個(gè)虛擬路由器。

2 .VRRP虛擬路由器

所謂虛擬就是說(shuō)并不是實(shí)際存在的,虛擬路由器通常由多臺(tái)物理的VRRP路由器通過(guò)某種方式組成的,就好比這些物理的路由器都丟到一個(gè)池里面去,整個(gè)pool對(duì)外看起來(lái)就像是一臺(tái)路由器,其實(shí)內(nèi)部有多臺(tái)虛擬路由器。

然后再來(lái)看一下VRRP的工作機(jī)制?

VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協(xié)議??梢哉J(rèn)為是實(shí)現(xiàn)路由器高可用的協(xié)議,目的就是為了解決靜態(tài)路由單點(diǎn)故障。VRRP通過(guò)一種競(jìng)選協(xié)議來(lái)動(dòng)態(tài)的將路由任務(wù)交給LAN中的虛擬路由器的某臺(tái)VRRP路由器。將N臺(tái)提供相同功能的路由器組成一個(gè)路由器組,這個(gè)組里面有一個(gè)master和多個(gè)backup,master上面有一個(gè)對(duì)外提供服務(wù)的vip(該路由器所在局域網(wǎng)內(nèi)其他機(jī)器的默認(rèn)路由為該vip),master會(huì)發(fā)組播,當(dāng)backup收不到vrrp包時(shí)就認(rèn)為master宕掉了,這時(shí)就需要根據(jù)VRRP的優(yōu)先級(jí)來(lái)選舉一個(gè)backup當(dāng)master。這樣的話就可以保證路由器的高可用了。Keepalived就是巧用VRRP協(xié)議來(lái)實(shí)現(xiàn)高可用性(HA)的。

VRRP所有的協(xié)議報(bào)文都是通過(guò)IP多播(multicast)包(多播地址224.0.0.18)形式發(fā)送的。虛擬路由器由VRID(范圍0-255)和一組IP地址組成,對(duì)外表現(xiàn)為一個(gè)周知的MAC地址。所以,在一個(gè)虛擬路由 器中,不管誰(shuí)是MASTER,對(duì)外都是相同的MAC和IP(稱之為VIP)??蛻舳酥鳈C(jī)并不需要因?yàn)镸ASTER的改變而修改自己的路由配置,對(duì)客戶端來(lái)說(shuō),這種主從的切換是透明的。

在一個(gè)虛擬路由器中,只有作為MASTER的VRRP路由器會(huì)一直發(fā)送VRRP通告信息(VRRPAdvertisement message),BACKUP不會(huì)搶占MASTER,除非它的優(yōu)先級(jí)(priority)更高。當(dāng)MASTER不可用時(shí)(BACKUP收不到通告信息), 多臺(tái)BACKUP中優(yōu)先級(jí)最高的這臺(tái)會(huì)被搶占為MASTER。這種搶占是非??焖俚?<>

VRRP工作流程?

1) 初始化

路由器啟動(dòng)時(shí),如果路由器的優(yōu)先級(jí)是255(最高優(yōu)先級(jí),路由器擁有路由器地址),要發(fā)送VRRP通告信息,并發(fā)送廣播ARP信息通告路由器IP地址對(duì)應(yīng)的MAC地址為路由虛擬MAC,設(shè)置通告信息定時(shí)器準(zhǔn)備定時(shí)發(fā)送VRRP通告信息,轉(zhuǎn)為MASTER狀態(tài);否則進(jìn)入BACKUP狀態(tài),設(shè)置定時(shí)器檢查定時(shí)檢查是否收到MASTER的通告信息。

2) Master

  • 設(shè)置定時(shí)通告定時(shí)器;
  • 用VRRP虛擬MAC地址響應(yīng)路由器IP地址的ARP請(qǐng)求;
  • 轉(zhuǎn)發(fā)目的MAC是VRRP虛擬MAC的數(shù)據(jù)包;
  • 如果是虛擬路由器IP的擁有者,將接受目的地址是虛擬路由器IP的數(shù)據(jù)包,否則丟棄;
  • 當(dāng)收到shutdown的事件時(shí)刪除定時(shí)通告定時(shí)器,發(fā)送優(yōu)先權(quán)級(jí)為0的通告包,轉(zhuǎn)初始化狀態(tài);
  • 如果定時(shí)通告定時(shí)器超時(shí)時(shí),發(fā)送VRRP通告信息;
  • 收到VRRP通告信息時(shí),如果優(yōu)先權(quán)為0,發(fā)送VRRP通告信息;否則判斷數(shù)據(jù)的優(yōu)先級(jí)是否高于本機(jī),或相等而且實(shí)際IP地址大于本地實(shí)際IP,設(shè)置定時(shí)通告定時(shí)器,復(fù)位主機(jī)超時(shí)定時(shí)器,轉(zhuǎn)BACKUP狀態(tài);否則的話,丟棄該通告包;

3)Backup

  • 設(shè)置主機(jī)超時(shí)定時(shí)器;
  • 不能響應(yīng)針對(duì)虛擬路由器IP的ARP請(qǐng)求信息;
  • 丟棄所有目的MAC地址是虛擬路由器MAC地址的數(shù)據(jù)包;
  • 不接受目的是虛擬路由器IP的所有數(shù)據(jù)包;
  • 當(dāng)收到shutdown的事件時(shí)刪除主機(jī)超時(shí)定時(shí)器,轉(zhuǎn)初始化狀態(tài);
  • 主機(jī)超時(shí)定時(shí)器超時(shí)的時(shí)候,發(fā)送VRRP通告信息,廣播ARP地址信息,轉(zhuǎn)MASTER狀態(tài);
  • 收到VRRP通告信息時(shí),如果優(yōu)先權(quán)為0,表示進(jìn)入MASTER選舉;否則判斷數(shù)據(jù)的優(yōu)先級(jí)是否高于本機(jī),如果高的話承認(rèn)MASTER有效,復(fù)位主機(jī)超時(shí)定時(shí)器;否則的話,丟棄該通告包;

VRRP ARP查詢處理?

當(dāng)內(nèi)部主機(jī)通過(guò)ARP查詢虛擬路由器IP地址對(duì)應(yīng)的MAC地址時(shí),MASTER路由器回復(fù)的MAC地址為虛擬的VRRP的MAC地址,而不是實(shí)際網(wǎng)卡的 MAC地址,這樣在路由器切換時(shí)讓內(nèi)網(wǎng)機(jī)器覺(jué)察不到;而在路由器重新啟動(dòng)時(shí),不能主動(dòng)發(fā)送本機(jī)網(wǎng)卡的實(shí)際MAC地址。如果虛擬路由器開(kāi)啟的ARP代理 (proxy_arp)功能,代理的ARP回應(yīng)也回應(yīng)VRRP虛擬MAC地址。

keepalived架構(gòu)

高可用軟件keepalived詳解

keepalived也是模塊化設(shè)計(jì)不同模塊負(fù)責(zé)不同的功能,下面是keepalived的相關(guān)模塊:core、check、vrrp、libipfwc、libipvs-2.4、libipvs-2.6。

core:是keepalived的核心,負(fù)責(zé)主進(jìn)程的啟動(dòng)和維護(hù)及全局配置文件的加載解析等。

check:負(fù)責(zé)healthchecker(健康檢查),包括了各種健康檢查方式以及對(duì)應(yīng)的配置的解析(包括LVS的配置解析)。

vrrp:VRRPD子進(jìn)程就是來(lái)實(shí)現(xiàn)VRRP協(xié)議的。

libipfwc:liipfwc庫(kù)是配置LVS時(shí)會(huì)用到的。

libipvs*:配置LVS時(shí)會(huì)用到。

PS:注意keepalived和LVS完全是兩碼事只不過(guò)他們各負(fù)其責(zé)相互配合而已。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多