什么是VIP?什么是IP漂移?


IP地址和MAC地址


在 TCP/IP 的架構下,所有想上網的電腦,不論是用何種方式連上網路,都必須要有一個唯一的 IP-address。事實上IP地址是主機硬件地址的一種抽象,簡單的說,MAC地址是物理地址,IP地址是邏輯地址。

- -
MAC地址 物理地址
IP地址 邏輯地址

什么是虛擬IP

虛擬IP地址(VIP) 是一個不與特定計算機或一個計算機中的網絡接口卡(NIC)相連的IP地址。數據包被發送到這個VIP地址,但是所有的數據還是經過真實的網絡接口。VIPs大部分用於連接冗余;一個VIP地址也可能在一台計算機或NIC發生故障時可用,交由另一個可選計算機或NIC響應連接。虛擬IP地址的例子如:一個Loopback(無電路IP地址)作為不與在主機或路由器中任何一個特定接口(或電路)相關的IP地址。

虛擬IP就是一個未分配給真實主機的IP,也就是說對外提供服務器的主機除了有一個真實IP外還有一個虛IP,使用這兩個IP中的任意一個都可以連接到這台主機。

  • MAC地址 00:21:5A:DB:68:E8
    - 真實IP 192.168.1.217
    - 虛擬IP 192.168.1.219

虛擬IP可以用來做什么?可以解決什么問題?


一般可以用來做HA(High Availability),比如數據庫服務器的URL可以使用一個虛擬IP,當主服務器發生故障無法對外提供服務時,動態將這個虛IP切換到備用服務器。即實現服務器熱備,故障自動切換。


1、客戶端訪問數據庫虛擬IP
2、通過ARP緩存,找到對應的MAC地址
3、訪問真實服務器


1、真實服務器A宕機
2、真實服務器B沒有收到真實服務器A的心跳包
3、真實服務器B將虛擬IP綁定到自己的MAC地址,並發送這個ARP包給路由器
4、路由器接收到后更新ARP緩存
5、接着有請求虛擬IP的請求過來,都會被轉發到真實服務器B

什么是ARP協議

地址解析協議(英語:Address Resolution Protocol,縮寫:ARP)是一個通過解析網絡層地址來找尋數據鏈路層地址的網絡傳輸協議,它在IPv4中極其重要。

ARP是通過網絡地址來定位MAC地址

以太網協議中規定,同一局域網中的一台主機要和另一台主機進行直接通信,必須要知道目標主機的MAC地址。而在TCP/IP協議中,網絡層和傳輸層只關心目標主機的IP地址。這就導致在以太網中使用IP協議時,數據鏈路層的以太網協議接到上層IP協議提供的數據中,只包含目的主機的IP地址。於是需要一種方法,根據目的主機的IP地址,獲得其MAC地址。這就是ARP協議要做的事情。所謂地址解析(address resolution)就是主機在發送幀前將目標IP地址轉換成目標MAC地址的過程。


另外,當發送主機和目的主機不在同一個局域網中時,即便知道對方的MAC地址,兩者也不能直接通信,必須經過路由轉發才可以。所以此時,發送主機通過ARP協議獲得的將不是目的主機的真實MAC地址,而是一台可以通往局域網外的路由器的MAC地址。於是此后發送主機發往目的主機的所有幀,都將發往該路由器,通過它向外發送。這種情況稱為委托ARP或ARP代理(ARP Proxy)
點對點鏈路中不使用ARP,實際上在點對點網絡中也不使用MAC地址,因為在此類網絡中分別已經獲取了對端的IP地址。


在每台安裝有TCP/IP協議的電腦或路由器里都有一個ARP緩存表,表里的IP地址與MAC地址是一對應的。

主機名稱 IP地址 MAC地址
A 192.168.38.10 00-AA-00-62-D2-02
B 192.168.38.11 00-BB-00-62-C2-02
C 192.168.38.12 00-CC-00-62-C2-02
D 192.168.38.13 00-DD-00-62-C2-02
E 192.168.38.14 00-EE-00-62-C2-02
... ... ...

ARP協議工作原理

以主機A(192.168.38.10)向主機B(192.168.38.11)發送數據為例。


1.當發送數據時,主機A會在自己的ARP緩存表中尋找是否有目標IP地址。如果找到就知道目標MAC地址為(00-BB-00-62-C2-02),直接把目標MAC地址寫入里面發送就可。


2.如果在ARP緩存表中沒有找到相對應的IP地址,主機A就會在網絡上發送一個廣播(ARP request),目標MAC地址是“FF.FF.FF.FF.FF.FF”,這表示向同一網段內的所有主機發出這樣的詢問:“192.168.38.11的MAC地址是什么?”


3.網絡上其他主機並不響應ARP詢問,只有主機B接收到這個幀時,才向主機A做出這樣的回應(ARP response):“192.168.38.11的MAC地址是00-BB-00-62-C2-02”,此回應以單播方式。這樣,主機A就知道主機B的MAC地址,它就可以向主機B發送信息。同時它還更新自己的ARP高速緩存(ARP cache),下次再向主機B發送信息時,直接從ARP緩存表里查找就可。


ARP緩存表采用老化機制,在一段時間內如果表中的某一行沒有使用,就會被刪除,這樣可減少緩存表的長度,加快查詢速度。

虛擬IP原理


虛擬IP的實現主要是靠 TCP/IP 的 ARP 協議。


因為IP地址只是一個邏輯地址,在以太網中 MAC 地址才是真正用來進行數據傳輸的物理地址。


以太網中的主機發送數據時會先從本地ARP緩存中查詢目標 IP 對應的 MAC 地址,會向這個 MAC 地址發送數據。


操作系統或路由器會自動維護這個緩存。

在Linux下可以使用arp命令操作ARP高速緩存。


比如下面這個 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: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 是兩台真實的電腦,192.168.1.217 為對外提供數據庫服務的主機,192.168.1.218 為熱備的機器,192.168.1.219 為虛IP,注意219、217的 MAC 地址是相同的。


當主服務器217一段時間沒有發送HeartBeat數據包給備份服務器218,備份服務器218規定時間內沒有收到217的HeartBeat數據包。(啰嗦一下)


這時備份服務器218 認為217 宕機。備份服務器218后會向網絡發送一個 ARP 數據包,讓路由器修改路由表,告訴所有主機 192.168.1.219 這個IP對應的MAC地址是 00:21:5A:DB:7F:C2,這樣所有發送到 219 的數據包都會發送到 MAC 地址為 00:21:5A:DB:7F:C2 的機器,也就是 218 的機器。

配置和刪除虛擬IP


假如主機有一個網卡 eth1,其對應一個IP為 192.168.1.217,現對其設置一個虛擬IP 192.168.1.219:

ifconfig eth1:1 192.168.1.219 netmask 255.255.255.0


刪除該虛擬IP:

ip addr del 192.168.1.219 dev eth1


不過在網絡運維中,更常見的是使用 keepalived 配置虛擬ip(vip)實現雙機熱備以及自動切換主備

如何查看本地操作系統上的ARP緩存

MacOS

arp -nla

image.png


Linux

arp -nv


Windows

arp -a

總結

虛擬IP是未分配給真實主機的IP,是IP的一種。
結合ARP協議、心跳檢測機制、廣播ARP數據包,修改ARP緩存中IP和MAC地址的對應關系,實現IP漂移,服務器自動切換

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM