Linux
關於 MAC 和高可用性故障轉移的新手問題
我正在閱讀有關高可用性的內容,但我無法理解以下內容:故障轉移時,主 IP 會遷移到備份伺服器,但 MAC 地址也必須如此。
具體來說,我讀到每台機器都有一個唯一的地址 MAC,機器中的所有介面都可以使用它。我不明白這部分。MAC不屬於網卡嗎?這句話中的介面是什麼意思?
同樣在故障轉移時,客戶端必須更新其 IP/MAC 映射並找到 3 種方法,其中一種是使用自定義 MAC 並將其與公共 IP 一起從主 MAC 移動到備份。這怎麼可能?高可用性軟體(例如 Pacemaker)會這樣做嗎?如何?
這本書是正確的,但是它遺漏了一些部分。
- MAC 地址並不像您想像的那樣固定,大多數高端 NIC 都能夠將 MAC 地址更改為特定的地址。在 NIC 的 BIOS 或驅動程序本身中。
- 為“虛擬”系統預留了特定的 MAC 地址範圍(請參閱我可以安全地為我的虛擬機使用哪些 MAC 地址範圍?)
- 集群軟體可以使用這些預留範圍中的 MAC 地址來提供集群 IP 服務。
- linux 網路堆棧能夠創建具有特定 MAC 地址的虛擬 NIC。
集群軟體基於虛擬 MAC 地址創建服務的過程非常簡單。當服務啟動時,它會提供一個免費的 Arp 數據包,說明可以在虛擬 MAC 地址上找到特定的 IP 地址。發生故障轉移時,“關閉”節點會刪除其本地 IP/MAC 綁定,新節點開始偵聽該虛擬 MAC 地址和 IP 組合。不吵不鬧。
集群軟體使用的另一種方法是完全不用虛擬 MAC,完全依賴免費 ARP。此類系統的啟動/故障轉移順序如下所示:
- 集群軟體將 IP 綁定到節點 A。
- 節點 A G-ARP“192.168.244.60 位於 02-00-ab-cd-ef-01”
- 子網上的所有設備都會更新它們的 ARP 表。
- 時間流逝。
- 節點 A 崩潰。
- 集群軟體將 IP 綁定到節點 B。
- 節點 B G-ARP“192.168.244.60 位於 02-00-ab-cd-41-ba”
- 子網上的所有設備都會更新它們的 ARP 表。
根據我的經驗,第二種方法純 G-ARP 是當今大多數 linux 集群使用的方法。但是,這兩種方法都有效並且已被使用。G-ARP 方法的好處是您不必為分配虛擬 MAC 地址而煩惱。純虛擬 MAC 方法的好處是它不依賴於在給定子網上工作的 G-ARP。