1.虛擬IP在 TCP/IP 的架構(gòu)下,所有想上網(wǎng)的電腦,不論是用何種方式連上網(wǎng)路,都必須要有一個唯一的 IP-address。事實上IP地址是主機硬件地址的一種抽象,簡單的說,MAC地址是物理地址,IP地址是邏輯地址。 虛擬IP,就是一個未分配給真實主機的IP,也就是說對外提供服務(wù)器的主機除了有一個真實IP外還有一個虛IP,使用這兩個IP中的任意一個都可以連接到這臺主機。 虛擬IP一般用作達(dá)到HA(High Availability)的目的,比如讓所有項目中數(shù)據(jù)庫鏈接一項配置的都是這個虛IP,當(dāng)主服務(wù)器發(fā)生故障無法對外提供服務(wù)時,動態(tài)將這個虛IP切換到備用服務(wù)器。 2.虛擬IP原理ARP是地址解析協(xié)議,它的作用很簡單,將一個IP地址轉(zhuǎn)換為MAC地址,然后給傳輸層使用。 每臺主機中都有一個ARP高速緩存,存儲同一個網(wǎng)絡(luò)內(nèi)的IP地址與MAC地址的對應(yīng)關(guān) 系,以太網(wǎng)中的主機發(fā)送數(shù)據(jù)時會先從這個緩存中查詢目標(biāo)IP對應(yīng)的MAC地址,會向這個MAC地址發(fā)送數(shù)據(jù)。操作系統(tǒng)會自動維護這個緩存。 在Linux下可以使用arp命令操作ARP高速緩存。 比如存在物理機A(IP是192.168.192.54 )和物理機器B(IP是192.168.192.40),A作為對外服務(wù)的主服務(wù)器(比如數(shù)據(jù)庫主庫),B作為備份機器,兩臺服務(wù)器之間的通信是通過Heartbeat,即主服務(wù)器會定時的給備份服務(wù)器發(fā)送數(shù)據(jù)包,告知主服務(wù)器服務(wù)正常,當(dāng)備份服務(wù)器在規(guī)定時間內(nèi)沒有收到主服務(wù)器的Heartbeat,就會認(rèn)為主服務(wù)器宕機,則備份服務(wù)器就會升級為主服務(wù)器。假設(shè)物理機A的ARP緩存如下:
另外物理機器B(IP是192.168.192.40)的ARP緩存如下:
當(dāng)機器B通過BeatHeart得知機器A對外服務(wù)質(zhì)量低于預(yù)期的時候(比如發(fā)生故障,服務(wù)無響應(yīng)),會將自己的ARP緩存發(fā)送出去,讓路由器修改路由表,告知虛擬地址應(yīng)該指向我(物理機器B,192.168.192.40),這時候,外界再次訪問虛擬IP的時候,機器B會變成主服務(wù)器,而A降級為備份服務(wù)器。這就完成了主從機器的自動切換,這一切對外界是透明的。 3.IP漂移上面的VIP自動切換的過程就稱之為IP漂移。 我們可以通過Keepalived來實現(xiàn)這個過程。 Keepalived是一個基于VRRP協(xié)議(Virtual Router Redundancy Protocol,即虛擬路由冗余協(xié)議)來實現(xiàn)的LVS(負(fù)載均衡器)服務(wù)高可用方案,可以利用其來避免單點故障。一個LVS服務(wù)會有2臺服務(wù)器運行Keepalived,一臺為主服務(wù)器(MASTER),一臺為備份服務(wù)器(BACKUP),但是對外表現(xiàn)為一個虛擬IP,主服務(wù)器會發(fā)送特定的消息給備份服務(wù)器,當(dāng)備份服務(wù)器收不到這個消息的時候,即主服務(wù)器宕機的時候, 備份服務(wù)器就會接管虛擬IP,繼續(xù)提供服務(wù),從而保證了高可用性。 |
|