Hyper-V
故障轉移群集內的靜態 MAC 地址導致 MAC 衝突
我在 Microsoft 故障轉移群集中有 13 個 Hyper-V 節點。我們大約 50% 的客人是 Linux,並且最適合使用靜態 MAC 地址。我們的 Windows 來賓以任何一種方式工作,但為了簡單起見,我們也將它們設置為靜態 mac 地址。
我們的程序是:配置VM,在安裝作業系統之前,打開VM,關閉它,將網路適配器更改為靜態,保留自動生成的mac地址。
問題是:
- 在 Node1 上創建來賓。它在 Node1 的 MAC 範圍內獲得一個 MAC。
- 將訪客移至 Node2。沒問題。
- 在 Node1 上創建新來賓。它在 Node1 的範圍內獲得一個 MAC。我確信故障轉移集群足夠聰明,可以檢查是否與任何來賓沒有衝突,但它只是從那個節點的範圍內隨機選擇一個,該節點上的任何來賓都沒有使用,而不是集群中的其他地方.
- 我很沮喪地發現這實際上造成了 MAC 衝突,它偶然發現了已經分配給已遷移到不同節點的來賓的相同地址。
短期解決方案很簡單,我們只需執行 PowerShell 命令來外部參照整個集群的 MAC 地址,但這裡的長期解決方案是什麼?我們是否應該檢查池中所有虛擬機的每個自動生成的 MAC 地址?如果我們為每個 Hyper-V 節點提供相同的池,它會檢查整個集群,還是會有更多的衝突?SCVMM 會在這裡幫助我們,還是讓事情變得更糟?
解決方案是將 SCVMM 與 hyper-V 集群一起使用。MS 不打算在沒有它的情況下使整個集群的 MAC 地址生成保持一致。