VRRP協議的工作機制介紹,Keepalived內部架構及其實現原理解析

 

目錄

前言

Keepalived 內部架構及其實現原理解析

一、VRRP 緣起

二、關於 VRRP

三、VRRP Master-Backup

四、VRRP 工作機制

五、關於 Keepalived

六、Keepalived的三個核心模塊

七、Keepalived 多進程模式

八、Keepalived 控制單元

九、Keepalived 對 IPVS 的封裝


前言

Keepalived 是由 VRRP 實現的,因此博主在介紹 Keepalived 之前,首先,瞭解一下 VRRP 的原理,所以,本篇博客的第一部分將介紹:VRRP 的原理及其架構淺解析;第二部分主要介紹 Keepalived 的內部架構及其實現原理。

Keepalived 內部架構及其實現原理解析

一、VRRP 緣起

在現實的網絡環境中(比如Internet),兩臺需要通信的主機(end-host)大多數情況下並沒有直接的物理連接。對於這樣的情況,它們之間的路由怎麼選擇?主機如何選定到達目的主機的下一跳路由,這是個問題。通常的解決辦法有兩種:

1、在主機上使用動態路由協議(比如:RIP、OSPF、IS-IS、IGRP、EIGRP、BGP等);

2、在主機上配置靜態路由很

很明顯,在主機上配置動態路由協議是非常不切實際的,因爲管理維護成本以及是否支持等諸多問題。那麼配置靜路由就變得十分的流行,實際上,配置靜態路由的這種方式我們至今一直在用。但是路由器(或者說默認網,Default Gateway)卻經常成爲單點,就算配置了多個靜志路由,卻因爲必須重啓網絡才能生效而變得不實用。

 

二、關於 VRRP

VRRP 協議(Virtual Router Redundancy Protocol,虛擬路由冗餘協議)的目的:爲了解決靜路單點故障的問題。

VRRP 通過一種競選協議來動態的將路由任務交給 LAN 中虛擬路由器中的某臺 VRRP 路由器。

兩個關鍵的名詞:VRRP 路由器VRRP 虛擬路由器

VRRP 路由器:VRRP 路由器就是一臺路由器,只不過上面運行了 VRRPD 這樣的程序來實現 VRRP 協議,VRRP 路由器是現實的物理的路由器,一臺 VRRP 路由器可以位於多個虛擬路由器。

VRRP 虛擬路由器:所謂虛擬,就是說並不是實際存在的,而是一個邏輯的路由器並不是物理的路由器。虛擬路由器通常由多臺VRRP 路由器通過某種方式組成,就好比這些物理的路由器都丟到一個池(pool)裏面去,整個pool對外看起來就象是一臺路由器,但其內部有多臺物理路由器。虛擬路由器的標識稱爲 VRID

 

三、VRRP Master-Backup

在一個 VRRP 虛擬路由器中,有多臺物理的 VRRP 路由器,但是幾臺物理的機器並不同時工作,而是由一臺稱爲 Master 的路由器負責路由工作,其他的都是 Backup,Master 並非一成不變,VRRP 協議會讓所有 VRRP 路由器參與競選,最終獲勝的就是 Master,Master有一些特權,比如擁有虛擬路由器的IP地址,我們的主機就是用這個IP地址作爲靜態路由的,擁有特權的 Master 路由器將負責轉發發送給網關地址的包和響應 ARP(根據IP地址獲取物理地址的一個TCP/IP協議,Address Resolution Protocol)請求。

 

四、VRRP 工作機制

VRRP 通過競選協議來實現虛擬路由器的功能,所有的協議報文都是通過IP多播(multicast)包(多播地址224.0.0.18)形式發送的。主要由虛擬路由器由 VRID(範圍0-255)和一組IP地址組成,對外表現爲一個衆所周知的 MAC 地址(00-00-5E-00-01-{VRID})。所以,在一個虛擬路由器中,不管誰是 Master,對外都是相同的 MAC 和 IP(稱之爲VIP)。客戶端主機並不需要因爲Master 的改變而修改自己的路由配置,對客戶端來說,像這種主從的切換是透明的。

在一個虛擬路由器中,只有作爲 Master 的 VRRP 路由器會一直髮送 VRRP 廣播的包(VRRP Advertisement message),Backup 不會搶佔 Master,除非 Backup 的優先級(priority)設值更高,當 Master 不可用時(Backup收不到廣播的包),多臺 Backup 中優先級最高的這臺路由器會搶佔爲 Master,這種搶佔是非常快速的(<1秒),以保證服務的連續性。出於安全性考慮,VRRP 廣播包使用了加密協議進行加密。

 

五、關於 Keepalived

Keepalived 是集羣管理中保證集羣高可用的一個服務軟件,用來防止單點故障。Keepalived 的作用是檢測 web 服務器的狀態,如果有一臺 web 服務器死機,或工作出現故障,Keepalived 將檢測到,並將有故障的 web 服務器從系統中剔除,當 web 服務器工作正常後 Keepalived 自動將 web 服務器加入到服務器羣中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復因爲故障導致服務器宕機的 web 服務器。

Keepalived 是以 VRRP 協議(Virtual Router Redundancy Protocol,虛擬路由冗餘協議)爲實現基礎的。虛擬路由冗餘協議,可以認爲是實現路由器高可用的協議,即將 N 臺提供相同功能的路由器組成一個路由器組,(原理同上)這個組裏面有一個 Master 和多個 Backup,Master 上面有一個對外提供服務的 VIP(Virtual IP Address,虛擬IP地址),該路由器所在局域網內其他機器的默認路由爲該 VIP,Master 會發組播,當 Backup 收不到 VRRP 包時就認爲 Master 宕掉了,這時就需要根據 VRRP 的優先級來選舉一個 Backup 充當 Master。這樣的話就可以保證路由器的高可用了。

 

六、Keepalived的三個核心模塊

Keepalived 是一個高度模塊化的設計的軟件,Keepalived 三個核心模塊分別爲core、check和VRRP(當然還有:libipfwc、libipvs-2.4、libipvs-2.6)

  • core Keepalived的核心,負責主進程的啓動、維護以及全局配置文件的加載和解析;
  • check Keepalived的Healthchecker,負責健康檢查,包括常見的各種檢查方式,以及對應的配置的解析,其中包括了LVS的配置解析;
  • VRRP Keepalived中實現VRRP協議的;

 

七、Keepalived 多進程模式

Keepalived 採用了多進程的設計模式,每個進程負責不同的功能。

 

八、Keepalived 控制單元

在 Keepalived 中,所謂的控制單元,就是對配置文件的編譯和解析,Keepalived 的配置文件解析和其它不同的是,它並不是一次解析所有的配置,而是用到某個模塊的時候才解析相應的配置,每個模塊中的 xxx_parser.c 就是負責解析配置文件的。

 

九、Keepalived 對 IPVS 的封裝

Keepalived 裏面所有對 LVS(Linux Virtual Server,Linux 虛擬服務器)的相關操作並不是直接使用 ipvsadm 這樣的客戶端程序,而是直接使用 IPVS 提供的函數進行操作,而這些操作都存在與 check/ipwrapper.c 中。


 

 

 

下一篇文章:《 Nginx+Keepalived搭建高可用Web服務器詳細教程 》

參考文檔:

Keepalived 官網:【https://www.keepalived.org/


 好了,關於 VRRP協議的工作機制介紹,Keepalived內部架構及其實現原理解析 就寫到這兒了,如果還有什麼疑問或遇到什麼問題歡迎掃碼提問,也可以給我留言哦,我會一一詳細的解答的。 
歇後語:“ 共同學習,共同進步 ”,也希望大家多多關注CSND的IT社區。


作       者: 華    仔
聯繫作者: [email protected]
來        源: CSDN (Chinese Software Developer Network)
原        文: https://blog.csdn.net/Hello_World_QWP/article/details/104224876
版權聲明: 本文爲博主原創文章,請在轉載時務必註明博文出處!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章