VRRP 是 Virtual Router Redundancy Protocol 的簡稱,即 虛擬路由冗餘協議 。VRRP 最早被設計來解決網關的高可用問題:我們知道,電腦進行網路通訊時,需要網關來傳輸網路報文。 每台機器只能配置一個網關地址,這時網關的可靠性就非常重要了。 如果網關不幸故障了,... ...
簡介
VRRP 是 Virtual Router Redundancy Protocol 的簡稱,即 虛擬路由冗餘協議 。
原文地址:https://linux-network-programming.readthedocs.io
QQ交流群:Linux網路編程,群號:183196643
歡迎關註我們的公眾號:小菜學編程 (coding-fan)
VRRP 最早被設計來解決網關的高可用問題:
我們知道,電腦進行網路通訊時,需要網關來傳輸網路報文。 每台機器只能配置一個網關地址,這時網關的可靠性就非常重要了。 如果網關不幸故障了,那麼使用該網關的所有機器都將受影響——斷網了!
解決網關單點問題的思路非常直觀——部署一個備用網關,在主網關故障時切換過去。
然而,由於機器只能配置一個網關地址,因此每次切換網關都需要修改該配置。 這個解決方案沒能做到自動化,並不優雅。
這時, VRRP 應運而生!接下來,以一個簡單的例子介紹 VRRP 是如何工作的:
事情是這樣的。
這個網路部署了兩台 路由 進行互備,本網路內其他機器以這兩台路由為網關進行網路通訊。 兩台路由的 IP 地址分別是: 192.168.1.1 以及 192.168.1.2 。 但路由並不直接通過這些地址提供轉發服務,而是使用一個 虛擬地址 192.168.1.253 。 其他電腦,如 192.168.1.3 將網關地址配置為 192.168.1.253 。
通過 VRRP ,兩台路由互相進行 健康檢查 。 當兩台路由都是健康的情況下,只有主路由對外提供虛擬地址的 ARP 響應。 這時,發往虛擬地址 192.168.1.253 的流量都由主路由處理。
當主路由故障時,備用路由將檢測到。 這時,備用路由開始通過 ARP 協議對外通告:虛擬地址 192.168.1.253 對應的 MAC 地址是我, 被我接管了!
接下來,發往虛擬地址 192.168.1.253 的流量就開始由備用路由處理了。 這時,虛擬地址 192.168.1.253 看上去就像是 漂移 到備用路由上一樣。 換句話講,網關成功進行切換,而且無需修改其他機器的網關配置!
主路由恢復後,將通過類似的手段,重新拿迴流量的處理權。 這部分將不再贅述。
完整流程如下:
- 兩台路由互相進行健康檢查;
- 主路由對外響應虛擬地址的 ARP 請求,通告其 MAC 地址;
- 虛擬地址網路流量被主路由處理;
- 備用路由發現主路由故障,開始響應虛擬地址的 ARP 請求,通告其 MAC 地址;
- 虛擬地址網路流量被備用路由處理;
- 主路由恢復,重新響應 ARP 請求,奪迴流量;
- 備用路由發現主路由恢復,停止響應 ARP 請求,釋放流量處理權;
總結起來, VRRP 主要做兩件事情:
- 通過 ARP 響應 MAC 地址實現虛 IP 漂移;
- 通過健康檢查決定什麼時候進行虛 IP 漂移;
應用場景
本質上, VRRP 是用來實現高可用的,與網關無關。
我們可以將其應用於一些網路服務的高可用,如 Web 服務:
服務高可用方案有很多, VRRP 特別適用於以下場景:
- 服務對外只能呈現為單個 IP ;
- 同一時刻只允許一個實例對外服務;
此外, VRRP 也可用於實現負載均衡設施的高可用。 應用的高可用通過負載均衡設施解決,那麼負載均衡設施如何實現高可用呢? 答案是—— VRRP !
下麵是一個非常典型的例子:
局限性
由於 VRRP 依賴 ARP 實現 IP 漂移,因此相關機器必須在同個網路內, 不能跨網段 。