1. 程式人生 > >資料庫高可用場景下,VIP(虛擬IP)的作用

資料庫高可用場景下,VIP(虛擬IP)的作用

高可用性HA(High Availability)指的是通過儘量縮短因日常維護操作(計劃)和突發的系統崩潰(非計劃)所導致的停機時間,以提高系統和應用的可用性。HA系統是目前企業防止核心計算機系統因故障停機的最有效手段。
實現HA的方式,一般採用兩臺機器同時完成一項功能,比如資料庫伺服器,平常只有一臺機器對外提供服務,另一臺機器作為熱備,當這臺機器出現故障時,自動動態切換到另一臺熱備的機器。

怎麼實現故障檢測的那?
心跳,採用定時傳送一個數據包,如果機器多長時間沒響應,就認為是發生故障,自動切換到熱備的機器上去。
怎麼實現自動切換那?
虛IP。何為虛IP那,就是一個未分配給真實主機的IP,也就是說對外提供資料庫伺服器的主機除了有一個真實IP外還有一個虛IP,使用這兩個IP中的 任意一個都可以連線到這臺主機,所有專案中資料庫連結一項配置的都是這個虛IP,當伺服器發生故障無法對外提供服務時,動態將這個虛IP切換到備用主機。


開始我也不明白這是怎麼實現的,以為是軟體動態改IP地址,其實不是這樣,其實現原理主要是靠TCP/IPARP協議。因為ip地址只是一個邏輯 地址,在乙太網中MAC地址才是真正用來進行資料傳輸的實體地址,每臺主機中都有一個ARP快取記憶體,儲存同一個網路內的IP地址與MAC地址的對應關 系,乙太網中的主機發送資料時會先從這個快取中查詢目標IP對應的MAC地址,會向這個MAC地址傳送資料。作業系統會自動維護這個快取。這就是整個實現 的關鍵。
下邊就是我電腦上的arp快取的內容。

(192.168.1.219) at 00:21:5A:DB:68:E8 [ether] on bond0
(192.168.1.217) at 00:21:5A:DB:68:E
8 [ether] on bond0
(192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond0

192.168.1.217、192.168.1.218是兩臺真實的電腦
192.168.1.217為對外提供資料庫服務的主機。
192.168.1.218為熱備的機器。
192.168.1.217為虛IP。
大家注意紅字部分,219、217的MAC地址是相同的。
再看看那217宕機後的arp快取

(192.168.1.219) at 00:21:5A:DB:7F:C2 [ether] on bond0
(192.168.1.217) at 00:21:5A:DB:68:E8 [ether] on bond0

(192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond0

這就是奧妙所在。
當218 發現217宕機後會向網路傳送一個ARP資料包,告訴所有主機192.168.1.219這個IP對應的MAC地址是00:21:5A:DB:7F:C2 ,這樣所有傳送到219的資料包都會發送到mac地址為00:21:5A:DB:7F:C2的機器