自拍无码在线|亚洲AvAv国产|手机久草视频在线|国产三区四区视频|日夲強伦一级入口|欧美香蕉视频一区二区|亚洲涩图日本五月|最新免费成人网址|超碰91官网在线观看|国产口爆在线观看

vrrp與keepalived詳解 -電腦資料

電腦資料 時(shí)間:2019-01-01 我要投稿
【www.zwdianwu.cn - 電腦資料】

    一、Vrrp協(xié)議

    1、VRRP 協(xié)議簡介

    vrrp: Virtual Redundent Routing Protocol (虛擬冗余路由協(xié)議)

    在現(xiàn)實(shí)的網(wǎng)絡(luò)環(huán)境中,兩臺(tái)需要通信的主機(jī)大多數(shù)情況下并沒有直接的物理連接,

vrrp與keepalived詳解

。對(duì)于這樣的情況,它們之間路由怎樣選擇?主機(jī)如何選定到達(dá)目的主機(jī)的下一跳路由?

    這個(gè)問題通常的解決方法有二種:

    在主機(jī)上使用動(dòng)態(tài)路由協(xié)議(RIP、OSPF等)

    在主機(jī)上配置靜態(tài)路由

    很明顯,在主機(jī)上配置動(dòng)態(tài)路由是非常不切實(shí)際的,因?yàn)?a class="channel_keylink" href="http://www.zwdianwu.cn/fanwenwang/gzzd/" title="管理">管理、維護(hù)成本以及是否支持等諸多問題。配置靜態(tài)路由就變得十分流行,但路由器|默認(rèn)網(wǎng)關(guān)|default gateway卻經(jīng)常成為單點(diǎn)故障。

    VRRP的目的就是為了解決靜態(tài)路由單點(diǎn)故障問題,VRRP通過競選(election)協(xié)議來動(dòng)態(tài)的將路由任務(wù)交給LAN中虛擬路由器中的某臺(tái)VRRP路由器。

    2、VRRP 工作機(jī)制

    在一個(gè)VRRP虛擬路由器中,有多臺(tái)物理的VRRP路由器,但是這多臺(tái)的物理的機(jī)器并不能同時(shí)工作,而是由一臺(tái)稱為MASTER的負(fù)責(zé)路由工作,其它的都是BACKUP,MASTER并非一成不變,VRRP讓每個(gè)VRRP路由器參與競選,最終獲勝的就是MASTER。MASTER擁有虛擬路由器的IP地址,我們的主機(jī)就是用這個(gè)IP地址作為靜態(tài)路由的,MASTER要負(fù)責(zé)轉(zhuǎn)發(fā)發(fā)送給網(wǎng)關(guān)地址的包和響應(yīng)ARP請(qǐng)求。

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

    在一個(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。這種搶占是非?焖俚(<1s),以保證服務(wù)的連續(xù)性。由于安全性考慮,VRRP包使用了加密協(xié)議進(jìn)行加密。

    3、相關(guān)術(shù)語

    虛擬路由器:由一個(gè) Master 路由器和多個(gè) Backup 路由器組成。主機(jī)將虛擬路由器當(dāng)作默認(rèn)網(wǎng)關(guān)。

    VRID:虛擬路由器的標(biāo)識(shí)。有相同 VRID 的一組路由器構(gòu)成一個(gè)虛擬路由器。

    Master 路由器:虛擬路由器中承擔(dān)報(bào)文轉(zhuǎn)發(fā)任務(wù)的路由器。

    Backup 路由器:Master 路由器出現(xiàn)故障時(shí),能夠代替 Master 路由器工作的路由器。

    虛擬 IP 地址:虛擬路由器的 IP 地址。一個(gè)虛擬路由器可以擁有一個(gè)或多個(gè)IP 地址。

    IP 地址擁有者:接口 IP 地址與虛擬 IP 地址相同的路由器被稱為 IP 地址擁有者。

    虛擬 MAC 地址:一個(gè)虛擬路由器擁有一個(gè)虛擬 MAC 地址。虛擬 MAC 地址的格式為 00-00-5E-00-01-{VRID}。通常情況下,虛擬路由器回應(yīng) ARP 請(qǐng)求

    使用的是虛擬 MAC 地址,只有虛擬路由器做特殊配置的時(shí)候,才回應(yīng)接口的真實(shí) MAC 地址。

    priority(優(yōu)先級(jí)):VRRP 根據(jù)優(yōu)先級(jí)來確定虛擬路由器中每臺(tái)路由器的地位。

    搶占方式(默認(rèn)):如果 Backup 路由器工作在搶占方式下,當(dāng)它收到 VRRP 報(bào)文后,會(huì)將自己的優(yōu)先級(jí)與通告報(bào)文中的優(yōu)先級(jí)進(jìn)行比較。如果自己的優(yōu)先級(jí)比當(dāng)前的 Master 路由器的優(yōu)先級(jí)高,就會(huì)主動(dòng)搶占成為 Master 路由器;否則,將保持 Backup 狀態(tài)。

    非搶占方式:如果 Backup 路由器工作在非搶占方式下,則只要 Master 路由器沒有出現(xiàn)故障,Backup 路由器即使隨后被配置了更高的優(yōu)先級(jí)也不會(huì)成為

    Master 路由器。

    4、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í)器;否則的話,丟棄該通告包;

    5、ARP查詢處理

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

    6、認(rèn)證方式與工作模式

    認(rèn)證方式:

    簡單字符認(rèn)證

    md5認(rèn)證

    工作模式:

    master-backup模式

    master-master模式

    二、Keepalived

    1、Keepalived 定義

    什么是Keepalived呢?

    觀其名可知保持存活在網(wǎng)絡(luò)里面就是保持在線了也就是所謂的高可用或熱備用來防止單點(diǎn)故障(單點(diǎn)故障是指一旦某一點(diǎn)出現(xiàn)故障就會(huì)導(dǎo)致整個(gè)系統(tǒng)架構(gòu)的不可用)

    在Linux主機(jī)上,以daemon(守護(hù)進(jìn)程)方式實(shí)現(xiàn)了vrrp協(xié)議,并提供了完成配置ipvs規(guī)則及實(shí)現(xiàn)相應(yīng)real server狀態(tài)檢測(cè)能力。

    能調(diào)用外部腳本

    輕量靈活,不能解決腦裂問題

    適用場(chǎng)景:ipvs, haproxy, nginx(reverse proxy)

    Keepalived 是一個(gè)基于VRRP協(xié)議來實(shí)現(xiàn)的LVS服務(wù)高可用方案,可以利用其來避免單點(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)。

    2、Keepalived組件

    keepalived是模塊化設(shè)計(jì),不同模塊負(fù)責(zé)不同的功能。

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

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

    vrrp:VRRPD子進(jìn)程,用來實(shí)現(xiàn)VRRP協(xié)議;

    libipfwc:iptables(ipchains)庫,配置LVS;

    libipvs*:配置LVS;

    3、keepalived進(jìn)程

    keepalived啟動(dòng)后會(huì)有三個(gè)進(jìn)程:

    父進(jìn)程:內(nèi)存管理,子進(jìn)程管理等等

    子進(jìn)程:VRRP子進(jìn)程

    子進(jìn)程:healthchecker子進(jìn)程

    兩個(gè)子進(jìn)程都被系統(tǒng)WatchDog看管,兩個(gè)子進(jìn)程各自負(fù)責(zé)自己的事,

    healthchecker子進(jìn)程負(fù)責(zé)檢查各自服務(wù)器的健康程度,如果healthchecker子進(jìn)程檢查到MASTER上服務(wù)不可用了,就會(huì)通知本機(jī)上的兄弟VRRP子進(jìn)程,讓他刪除通告,并且去掉虛擬IP,轉(zhuǎn)換為BACKUP狀態(tài)。

    三、keepalived安裝與配置

    1、安裝keepalived

    [root@BAIYU_180 html]# yum install keepalived -y

    [root@BAIYU_180 html]# rpm -ql keepalived

    /etc/keepalived

    /etc/keepalived/keepalived.conf

    /etc/rc.d/init.d/keepalived

    /etc/sysconfig/keepalived

    /usr/bin/genhash

    /usr/sbin/keepalived

    /usr/share/doc/keepalived-1.2.7

    2、keepalived配置

    keepalived配置文件/etc/keepalived/keepalived.conf分為三個(gè)部分:

    global_defs: 全局配置

    vrrp_instance: vrouter的配置

    lvs: ipvs相關(guān)配置

    (1)查看/etc/keepalived/keepalived.conf

   

[root@BAIYU_180 keepalived]# cat keepalived.conf ! Configuration File for keepalivedglobal_defs {      #全局配置   notification_email {        #報(bào)警郵件發(fā)送給誰          acassen@firewall.loc     failover@firewall.loc     sysadmin@firewall.loc   }   notification_email_from Alexandre.Cassen@firewall.loc   #通知郵件的發(fā)件人郵箱   smtp_server 192.168.200.1     #郵件服務(wù)器地址   smtp_connect_timeout 30       #件服務(wù)器連接的超時(shí)時(shí)間   router_id LVS_DEVEL          #機(jī)器標(biāo)識(shí)}vrrp_instance VI_1 {      #vroute標(biāo)識(shí)    state MASTER          #當(dāng)前節(jié)點(diǎn)的狀態(tài) 主節(jié)點(diǎn)    interface eth0        #發(fā)送vip通告的接口    virtual_router_id 51  #虛擬路由的ID號(hào),是虛擬路由MAC的最后一位地址    priority 100           #此節(jié)點(diǎn)的優(yōu)先級(jí),主節(jié)點(diǎn)的優(yōu)先級(jí)需要比其他節(jié)點(diǎn)高    advert_int 1           #vip通告的時(shí)間間隔       authentication {       #認(rèn)證配置        auth_type PASS     #認(rèn)證機(jī)制,默認(rèn)是明文        auth_pass 1111     #隨機(jī)字符當(dāng)密碼    }    virtual_ipaddress {   #vip        192.168.100.41        192.168.200.17        192.168.200.18    }}

    ###########################################只要以上的配置,把下面的都注釋就可以實(shí)現(xiàn)

    簡單高可用(此時(shí)只能實(shí)現(xiàn)主機(jī)故障|網(wǎng)絡(luò)故障|keepalived進(jìn)程停止時(shí)vip轉(zhuǎn)移,或者通過腳本實(shí)現(xiàn)其它服務(wù)的切換)

   

virtual_server 192.168.200.100 443 {     #集群所使用的VIP和端口    delay_loop 6    lb_algo rr             #使用的負(fù)載均衡算法    lb_kind NAT            #類型    nat_mask 255.255.255.0    persistence_timeout 50  #持久連接時(shí)間    protocol TCP            #使用的協(xié)議    real_server 192.168.201.100 443 {      #節(jié)點(diǎn)服務(wù)器使用的IP及端口        weight 1        SSL_GET {                url {              path /              digest ff20ad2481f97b1754ef3e12ecd3a9cc            }            url {              path /mrtg/              digest 9b3a0c85a887a256d6939da88aabd8cd            }            connect_timeout 3            nb_get_retry 3            delay_before_retry 3        }    }}virtual_server 10.10.10.2 1358 {    delay_loop 6    lb_algo rr     lb_kind NAT    persistence_timeout 50    protocol TCP    sorry_server 192.168.200.200 1358    real_server 192.168.200.2 1358 {        weight 1        HTTP_GET {            url {               path /testurl/test.jsp              digest 640205b7b0fc66c1ea91c463fac6334d            }            url {               path /testurl2/test.jsp              digest 640205b7b0fc66c1ea91c463fac6334d            }            url {               path /testurl3/test.jsp              digest 640205b7b0fc66c1ea91c463fac6334d            }            connect_timeout 3            nb_get_retry 3            delay_before_retry 3        }    }    real_server 192.168.200.3 1358 {        weight 1        HTTP_GET {            url {               path /testurl/test.jsp              digest 640205b7b0fc66c1ea91c463fac6334c            }            url {               path /testurl2/test.jsp              digest 640205b7b0fc66c1ea91c463fac6334c            }            connect_timeout 3            nb_get_retry 3            delay_before_retry 3        }    }}virtual_server 10.10.10.3 1358 {    delay_loop 3    lb_algo rr     lb_kind NAT    nat_mask 255.255.255.0    persistence_timeout 50    protocol TCP    real_server 192.168.200.4 1358 {        weight 1        HTTP_GET {            url {               path /testurl/test.jsp              digest 640205b7b0fc66c1ea91c463fac6334d            }            url {               path /testurl2/test.jsp              digest 640205b7b0fc66c1ea91c463fac6334d            }            url {               path /testurl3/test.jsp              digest 640205b7b0fc66c1ea91c463fac6334d            }            connect_timeout 3            nb_get_retry 3            delay_before_retry 3        }    }    real_server 192.168.200.5 1358 {        weight 1        HTTP_GET {            url {               path /testurl/test.jsp              digest 640205b7b0fc66c1ea91c463fac6334d            }            url {               path /testurl2/test.jsp              digest 640205b7b0fc66c1ea91c463fac6334d            }            url {               path /testurl3/test.jsp              digest 640205b7b0fc66c1ea91c463fac6334d            }            connect_timeout 3            nb_get_retry 3            delay_before_retry 3        }    }}

    (2)配置文件中指令詳解

    vip的配置

   

virtual_ipaddress {               <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>                                                  廣播地址            設(shè)備        作用域                           別名               192.168.200.17/24 dev eth1               192.168.200.18/24 dev eth2 label eth2:1           }

    如果有其它資源可用于做為主備節(jié)點(diǎn)角色判斷的標(biāo)準(zhǔn),可以通過如下配置實(shí)現(xiàn):

   

vrrp_script. NAME {      #先定義一個(gè)腳本        }vrrp_instance NAME{        track_script. {    #再調(diào)用        }        }

    示例:

   

vrrp_script. chk_mt_down {               script. "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"      interval 1  #監(jiān)控間隔時(shí)間     weight -15  #當(dāng)健康檢查腳本失敗后,主機(jī)權(quán)重將會(huì)-15    fall 2 #失敗次數(shù)      rise 1 #成功數(shù)次  }vrrp_instance NAME{        track_script. {                chk_mt_down                }            }

    這個(gè)腳本實(shí)現(xiàn)了手動(dòng)將節(jié)點(diǎn)在MASTER和BACKUP之間切換而不用關(guān)閉節(jié)點(diǎn)|關(guān)閉節(jié)點(diǎn)的網(wǎng)絡(luò)|節(jié)點(diǎn)上的keepalived,

電腦資料

vrrp與keepalived詳解》(http://www.zwdianwu.cn)。

    四、雙主模式配置實(shí)例

    定義2個(gè)路由,互為主備

    適用于前端調(diào)度器(LB)的高可用,2個(gè)公網(wǎng)ip,在DNS做2條A記錄,還實(shí)現(xiàn)了一定程度上的負(fù)載均衡,任何一個(gè)調(diào)度器掛了也不影響客戶訪問,

    180節(jié)點(diǎn):

   

[root@BAIYU_180 keepalived]# cat keepalived.conf! Configuration File for keepalivedglobal_defs {   notification_email {       xxj@192.168.100.180   }   notification_email_from xiexiaojun   smtp_server 127.0.0.1   smtp_connect_timeout 30   router_id LVS_DEVEL}vrrp_script. chk_mt_down {script. "[ -f /etc/keepalived/down ] && exit 1 || exit 0"interval 1weight -15   }vrrp_instance VI_1 {       state MASTER    interface eth0    virtual_router_id 51    priority 100    advert_int 1    authentication {        auth_type PASS        auth_pass vi111    }    virtual_ipaddress {        192.168.100.41    }track_script. {chk_mt_down}}vrrp_instance VI_2 {    state BACKUP    interface eth0    virtual_router_id 52    priority 90    advert_int 1    authentication {        auth_type PASS        auth_pass vi222    }    virtual_ipaddress {        192.168.100.51    }track_script. {chk_mt_down}}

    179節(jié)點(diǎn):

   

[root@BAIYU_179 keepalived]# cat keepalived.conf! Configuration File for keepalivedglobal_defs {   notification_email {       xxj@192.168.100.180   }   notification_email_from xiexiaojun   smtp_server 127.0.0.1   smtp_connect_timeout 30   router_id LVS_DEVEL}vrrp_script. chk_mt_down {script. "[ -f /etc/keepalived/down ] && exit 1 || exit 0"interval 1weight -15}vrrp_instance VI_1 {    state BACKUP    interface eth0    virtual_router_id 51    priority 90    advert_int 1    authentication {        auth_type PASS        auth_pass vi111    }    virtual_ipaddress {        192.168.100.41    }track_script. {chk_mt_down}}vrrp_instance VI_2 {    state MASTER    interface eth0    virtual_router_id 52    priority 100    advert_int 1    authentication {        auth_type PASS        auth_pass vi222    }    virtual_ipaddress {        192.168.100.51    }track_script. {chk_mt_down}}

最新文章