1. 程式人生 > >VRRP協議與keepalived基本原理實例演示

VRRP協議與keepalived基本原理實例演示

int ip地址 sta ipvs ffffff centos6.4 搶占模式 進行 conn

VRRP是什麽?
VRRP(Virtual Router Redundancy Protocol,虛擬路由器冗余協議)是一種容錯協議,保證當主機的下一條路由器出現故障時,由另一臺路由器來代替出現故障的路由器進行工作,從而保持網絡通信的連續性和可靠性。
VRRP相關術語:
1.虛擬路由器:由一個Master路由器和一個或多個Backup路由器組成。所有的Master和Backup組成一個組,這個主就是虛擬路由器。
2.VRID:虛擬路由器的標識。同一虛擬路由器內的路由器有著相同的VRID。
3.Master:虛擬路由器中正在工作的路由器
4.Backup:備用路由器。
5.虛擬IP地址:路由器組(虛擬路由器)的IP地址。
6.優先級:用來確定Master和Backup。
7.搶占模式與非搶占模式:Master會以組播方式不斷的向虛擬路由器組內發送自己的心跳報文,一旦Backup在設定時間內沒有收到心跳信息的次數超過了設定次數,則會將Master的所有權轉移到優先級最高的Backup,則就是搶占模式。

keepalived就是利用VRRP協議實現的一種可保障集群高可用的工具。通過主機之間的優先等級以及心跳檢測來及時切換準備主機的工作狀態,以提高集群的高可用性。
keepalived的核心組件:
1.VRRP stack
2.ipvs wrapper
3.checkers
為什麽使用keepalived一定要確認網卡支持並開啟組播功能?

如VRRP中所述,Master需要通過組播功能定時向Backup發送心跳信息,報告自己的運作是否正常,組播通信方式是一種很節省資源的通信方式。

1.安裝keeplived

從centos6.4開始,keepalived就集成在yum的base倉中了(keepalived的應用重要可見一斑),所以直接yum安裝即可。
[root@localhost ~]# yum install -y keepalived

2.keepalived簡單配置實現兩臺主機實現高可用模型

準備兩臺虛擬機

n1:192.168.11.11
n2:192.168.11.22

將n1下做配置/etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email { #通知郵件配置,將keepalived的狀態信息發送到指定郵箱
      root@localhost #這裏配置通知的郵箱地址,為方便演示這裏就配置為本機
   }
   notification_email_from keepalived@localhost #配置發郵件的地址,這裏也配置為本機
   smtp_server 127.0.0.1
   smtp_connect_timeout 30 #郵件服務超時時間
   router_id n1 #當前標識當前主機
     vrrp_mcast_group4 224.1.101.18 #配置組播地址,集群中通常不會使用默認的組播地址
}

vrrp_instance VI_1 { #當前節點所屬的虛擬路由的名稱
    state MASTER #當前節點的狀態,有Master和Backup兩種狀態
    interface ens33 #定義vrrp地址綁定在哪個接口
    virtual_router_id 51 #虛擬路由器的標識,同一虛擬路由器組中的ID要相同
    priority 100  #優先級設置
    advert_int 1 #每隔多久以組播形式向外通告一次,默認是1秒
    authentication {
        auth_type PASS #認證開啟
        auth_pass 1111 #認證密碼
    }
    virtual_ipaddress { #配置虛擬路由ip,即漂移地址
        192.168.11.99/24 dev ens33 label ens33:0 #漂移地址為192.168.11.99,配置在ens33網卡上並指定接口0
    }
}

配置完成後將此配置復制到n1並修改route_id和priority
[root@localhost ~]# scp /etc/keepalived/keepalived.conf root@n1:/etc/keepalived/
確定網卡開啟了multicast功能
[root@localhost ~]# ifconfig
出現MULTICAST就說明已開啟
技術分享圖片

開啟keepalived

現在n2上開啟(n2優先級比n1低),並查看狀態

[root@localhost ~]# systemctl start keepalived
[root@localhost ~]# systemctl status keepalived
技術分享圖片
查看n2網卡配置
[root@localhost ~]# ifconfig
技術分享圖片
可看出n2進入了MASTER狀態

再開啟n1,優先級高於n2,並查看狀態

[root@localhost ~]# systemctl start keepalived
[root@localhost ~]# systemctl status keepalived
技術分享圖片
現在再查看n2
技術分享圖片
n1啟動後漂移地址(虛擬IP)就漂移至n1了
n2網卡中的漂移地址(配置在ens33:0上)也被刪除了,並漂移至n1上(同樣配置在ens33:0)了。

利用抓包工具tcpdump可以更直觀的看到虛擬地址漂移的過程

安裝tcpdump
[root@localhost ~]# yum install -y tcpdump
現在的狀態是n1,n2的keepalived都開啟了,n1的優先級大於n2。
在n1和n2上使用命令
[root@localhost ~]# tcpdump -i ens33 -nn host 224.1.101.11
技術分享圖片

註意:因為n1為master狀態,所以n1會不停的(配置是每隔1秒)發送組播通告,並且這個通告在同一局域網的所有主機都能接收到,但只有配置了keepalived的主機才會起作用。

停掉n1的keepalived服務
[root@localhost ~]# systemctl stop keepalived
查看n2的抓包信息
[root@localhost ~]# tcpdump -i ens33 -nn host 224.1.101.11
技術分享圖片

這就比較完整的展示了兩個節點間在4層上使用keepalived做高可用的最基本的原理過程了。但這沒有涉及到應用層的高可用,keepalived還能實現具體服務的高可用。

VRRP協議與keepalived基本原理實例演示