Networking
鏈路燈亮時的 Bond0 故障轉移:高可用性網路
配置:
- 兩台交換機,每台都有單獨的網際網路路由
- Centos 伺服器將 eth0 和 eth1 綁定為bond0 上的主動備份,eth0 在交換機上,eth1 在另一個上
- /etc/modprobe.conf 如此配置,對於bond0:
alias bond0 bonding
options bond0 mode=1 primary=eth0 miimon=100
- eth0 有時插入主交換機,有時插入輔助交換機。
設想:
- 二級交換機記憶體故障
- 鏈路燈一直亮著,但交換機不再處理流量
因此,因為我們使用了 miimon,它只是獲取連結狀態,所以當切換失敗時,我們的伺服器都沒有從它們的綁定中禁用該連結。這導致網路中斷,並且在 eth0 在該輔助交換機中的伺服器上,它們變得完全不可用。具有諷刺意味的是,這比有人剛剛通過並拉出所有電纜更糟糕,因為它們沒有故障轉移。
我一直在測試 arp_interval 作為替代方案,但據我了解,arp_interval 有兩個限制:
- arp_ip_target 只取一個 ip,意思是如果那個 IP 地址掛了,bond0 會誤認為連結應該掛了,然後把它掛了。我使用網關作為 IP 地址,但如果網關出現故障,最好仍然有內部到交換機的流量繼續。arp_ip_target 也不會那樣做;它只會關閉所有介面,甚至到最後。
- arp_interval 取決於一定數量的網路流量(?),一個非常安靜的連結可能會被錯誤地關閉。
有什麼辦法可以繞過這些 arp_interval 限制?可以更好地配置 miimon 嗎?有沒有更好的方法來完成 HA 網路?我們一直在考慮通過每個伺服器上的守護程序手動處理故障轉移,而不是使用 arp_interval(即我們自己監控連結並使用 ifenslave 來啟動和關閉它們)。我們已經不是為了性能而進行中繼了。可靠性確實是我們的首要任務。
你確定你徹底測試過嗎?
據此:_
arp_ip_target 指定當 arp_interval > 0 時用作 ARP 監控對等方的 IP 地址。多個 IP 地址必須用逗號分隔。
我在幾台伺服器上設置了 mode=1
$$ although with single ip provided $$它執行得很好,即使沒有任何流量。故障轉移在有和沒有流量的情況下進行了多次測試。