高可用HA(High Availability)蚓曼,顧名思義就是在系統(tǒng)因為故障或者維護的情況下踢代,縮短影響的時間,或者甚至做到毫無影響戒劫。
常用的HA就是準備兩臺服務(wù)器半夷,一主一備,平時只有一臺對外服務(wù)迅细,另外一臺則作為熱備巫橄,在主服務(wù)器出現(xiàn)問題時,自動切換到備用服務(wù)器茵典。
那么如何檢測主服務(wù)器掛了湘换?檢測到主服務(wù)器掛了之后如何切換到備用服務(wù)器?
答案:心跳檢測统阿,即定時發(fā)送心跳包彩倚,如果長時間沒得到響應(yīng),就認為是發(fā)生故障扶平,則自動切換到另外一臺機器上面帆离。
那么以上的自動切換要怎么做到呢?
答案:通過虛擬IP
虛擬IP结澄,顧名思義就是一個未分配給真實主機的IP哥谷,也就是主機對外提供的處理真實IP還有一個虛擬IP,使用這兩個IP
要理解虛擬IP麻献,就必須要先了解以太網(wǎng)中IP和MAC地址的工作機制们妥。其實,IP地址只是一個邏輯地址勉吻,在以太網(wǎng)中MAC地址才是真正用來進行傳輸?shù)奈锢淼刂芳嗌簦颗_主機中都有一個ARP高級緩存,ARP緩存是用來存儲同一個網(wǎng)絡(luò)內(nèi)部的IP地址和MAC地址的對應(yīng)關(guān)系餐曼,以太網(wǎng)中的主機在向其他主機發(fā)送數(shù)據(jù)時压储,會先從這個緩存中查詢目標IP所對應(yīng)的MAC地址鲜漩,拿到目標主機的MAC之后,通過該MAC地址向目標主機發(fā)送數(shù)據(jù)集惋。目前ARP緩存手機由操作系統(tǒng)自動維護的孕似。
舉個例子,以下是我的機器上ARP緩存的內(nèi)容:
(192.168.1.28) at d2:00:ac:a0:98:05 [ether] on bond0
(192.168.1.25) at d2:00:ac:a0:98:05 [ether] on bond0
(192.168.1.19) at 00:ff:00:d4:4b:ac [ether] on bond0
以上信息中刮刑,192.168.1.25喉祭,192.168.1.19是兩臺真實的主機,而目前對外提供服務(wù)的是192.168.1.25雷绢,另外一臺主機192.168.1.19為熱備服務(wù)器泛烙。如果此時,192.168.1.25宕機了翘紊,那么系統(tǒng)將會通過心跳包檢測到192.168.1.25已經(jīng)發(fā)生故障蔽氨,此時,虛擬IP將會漂移到真實的主機192.168.1.19帆疟,那么此時ARP緩存如下:
(192.168.1.28) at 00:ff:00:d4:4b:ac [ether] on bond0
(192.168.1.25) at d2:00:ac:a0:98:05 [ether] on bond0
(192.168.1.19) at 00:ff:00:d4:4b:ac [ether] on bond0
神奇啊鹉究,當(dāng)192.168.1.25掛了之后,192.168.1.19會向以太網(wǎng)絡(luò)發(fā)送一個ARP數(shù)據(jù)包踪宠,通知所有主機192.168.1.28這個IP所對應(yīng)的MAC地址是00:ff:00:d4:4b:ac自赔,這樣,所以發(fā)送到192.168.1.28的數(shù)據(jù)都會備發(fā)送到MAC地址為00:ff:00:d4:4b:ac的主機柳琢,也就是192.168.1.19绍妨,這樣就實現(xiàn)了高可用。