虛擬IP地址(VIP) 是一個(gè)不與特定計(jì)算機(jī)或一個(gè)計(jì)算機(jī)中的網(wǎng)絡(luò)接口卡(NIC)相連的IP地址。數(shù)據(jù)包被發(fā)送到這個(gè)VIP地址,但是所有的數(shù)據(jù)還是經(jīng)過(guò)真實(shí)的網(wǎng)絡(luò)接口。VIPs大部分用于連接冗余;一個(gè)VIP地址也可能在一臺(tái)計(jì)算機(jī)或NIC發(fā)生故障時(shí)可用,交由另一個(gè)可選計(jì)算機(jī)或NIC響應(yīng)連接。虛擬IP地址的例子如:一個(gè)Loopback(無(wú)電路IP地址)作為不與在主機(jī)或路由器中任何一個(gè)特定接口(或電路)相關(guān)的IP地址。
IP技術(shù)的一種,增強(qiáng)網(wǎng)絡(luò)管理,發(fā)揮出VLAN的優(yōu)勢(shì),改變了網(wǎng)絡(luò)結(jié)構(gòu),合理分配網(wǎng)絡(luò)資源,均衡網(wǎng)絡(luò)負(fù)載,有效降低網(wǎng)上廣播信息,方便對(duì)用戶的分組管理。
通常情況下,兩臺(tái)服務(wù)器都具有一塊以上的網(wǎng)卡,每塊網(wǎng)卡都應(yīng)該有一個(gè)IP地址,同時(shí),還應(yīng)該有一個(gè)漂移IP地址,該地址為工作IP地址。因此,最簡(jiǎn)單的主從方式下,雙機(jī)系統(tǒng)要占用3個(gè)網(wǎng)絡(luò)地址。
在分配IP地址時(shí),要分清工作IP地址和主機(jī)自由地址。如在主從方式、單網(wǎng)卡的情況下,主機(jī)一地址為200.10.10.1,主機(jī)二的地址為200.10.10.2,工作地址為200.10.10.3,正常情況下,工作主機(jī)的自由地址是被工作地址取代的(若主機(jī)一在工作,主機(jī)一得地址由200.10.10.1變?yōu)?00.10.10.3)。在發(fā)生主機(jī)切換的情況下,主機(jī)一的地址恢復(fù)為200.10.10.1,而主機(jī)二的地址會(huì)由200.10.10.2變?yōu)?00.10.10.3,這就是地址漂移。
高可用性HA(High Availability)指的是通過(guò)盡量縮短因日常維護(hù)操作(計(jì)劃)和突發(fā)的系統(tǒng)崩潰(非計(jì)劃)所導(dǎo)致的停機(jī)時(shí)間,以提高系統(tǒng)和應(yīng)用的可用性。HA系統(tǒng)是目前企業(yè)防止核心計(jì)算機(jī)系統(tǒng)因故障停機(jī)的最有效手段。
實(shí)現(xiàn)HA的方式,一般采用兩臺(tái)機(jī)器同時(shí)完成一項(xiàng)功能,比如數(shù)據(jù)庫(kù)服務(wù)器,平常只有一臺(tái)機(jī)器對(duì)外提供服務(wù),另一臺(tái)機(jī)器作為熱備,當(dāng)這臺(tái)機(jī)器出現(xiàn)故障時(shí),自動(dòng)動(dòng)態(tài)切換到另一臺(tái)熱備的機(jī)器。
怎么實(shí)現(xiàn)故障檢測(cè)的?
心跳,采用定時(shí)發(fā)送一個(gè)數(shù)據(jù)包,如果機(jī)器多長(zhǎng)時(shí)間沒(méi)響應(yīng),就認(rèn)為是發(fā)生故障,自動(dòng)切換到熱備的機(jī)器上去。
怎么實(shí)現(xiàn)自動(dòng)切換?
虛擬IP。何為虛擬IP,就是一個(gè)未分配給真實(shí)主機(jī)的IP,也就是說(shuō)對(duì)外提供數(shù)據(jù)庫(kù)服務(wù)器的主機(jī)除了有一個(gè)真實(shí)IP外還有一個(gè)虛擬IP,使用這兩個(gè)IP中的 任意一個(gè)都可以連接到這臺(tái)主機(jī),所有項(xiàng)目中數(shù)據(jù)庫(kù)鏈接一項(xiàng)配置的都是這個(gè)虛IP,當(dāng)服務(wù)器發(fā)生故障無(wú)法對(duì)外提供服務(wù)時(shí),動(dòng)態(tài)將這個(gè)虛IP切換到備用主機(jī)。
開(kāi)始我也不明白這是怎么實(shí)現(xiàn)的,以為是軟件動(dòng)態(tài)改IP地址,其實(shí)不是這樣,其實(shí)現(xiàn)原理主要是靠TCP/IP的ARP協(xié)議。因?yàn)閕p地址只是一個(gè)邏輯 地址,在以太網(wǎng)中MAC地址才是真正用來(lái)進(jìn)行數(shù)據(jù)傳輸?shù)奈锢淼刂罚颗_(tái)主機(jī)中都有一個(gè)ARP高速緩存,存儲(chǔ)同一個(gè)網(wǎng)絡(luò)內(nèi)的IP地址與MAC地址的對(duì)應(yīng)關(guān) 系,以太網(wǎng)中的主機(jī)發(fā)送數(shù)據(jù)時(shí)會(huì)先從這個(gè)緩存中查詢目標(biāo)IP對(duì)應(yīng)的MAC地址,會(huì)向這個(gè)MAC地址發(fā)送數(shù)據(jù)。操作系統(tǒng)會(huì)自動(dòng)維護(hù)這個(gè)緩存。這就是整個(gè)實(shí)現(xiàn) 的關(guān)鍵。
下邊就是我電腦上的arp緩存的內(nèi)容。
(192.168.1.219) at 00:21:5A:DB:68:E8 [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
192.168.1.217、192.168.1.218是兩臺(tái)真實(shí)的電腦,
192.168.1.217為對(duì)外提供數(shù)據(jù)庫(kù)服務(wù)的主機(jī)。
192.168.1.218為熱備的機(jī)器。
192.168.1.219為虛IP。
大家注意紅字部分,219、217的MAC地址是相同的。
再看看那217宕機(jī)后的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
這就是奧妙所在。當(dāng)218 發(fā)現(xiàn)217宕機(jī)后會(huì)向網(wǎng)絡(luò)發(fā)送一個(gè)ARP數(shù)據(jù)包,告訴所有主機(jī)192.168.1.219這個(gè)IP對(duì)應(yīng)的MAC地址是00:21:5A:DB:7F:C2,這樣所有發(fā)送到219的數(shù)據(jù)包都會(huì)發(fā)送到mac地址為00:21:5A:DB:7F:C2的機(jī)器,也就是218的機(jī)器。