Ubuntu 伺服器上的負載平衡 ISP
我有一台安裝了 Ubuntu 11.10 伺服器的戴爾伺服器。伺服器有 3 個乙太網卡 eth0、eth1 和 eth2。
我有兩個 ISP 說 ISP1、ISP2
eth0 有一個公共 IP(由 ISP1 提供 - 我們需要從我們的 LAN 外部訪問此服務) eth1 通過 192.168.XX 子網連接到 LAN(通過交換機) eth2 使用 172.16 獲得一個動態 IP(通過 ISP2 提供的 DHCP) .xx 子網
我想對兩個網際網路連接進行負載平衡(同時使其具有容錯性)。我在網上找到了以下腳本來幫助我的事業:
#!/bin/bash -v #IPs of device connected to the internet IP1=119.my.pub.ip #Public IP provided by ISP1 #dynamically alloted IP provided by ISP2 IP2=`ifconfig | awk -F: '/172.16./ {print $2}' | awk '{ORS=" "; print $1}' | awk '{print $2}'` #Your Gateways (type route in terminal it should be in the same line as default) P1=119.my.pu.gat #gateway provided by ISP1 P2=172.16.1.1 #gateway provided by ISP2 #Your Subnets P0_NET=192.168.0.0/16 #local network subnet, P1_NET=119.82.90.0/28 # Part of your gateway P2_NET=172.16.1.0/24 #Part of your gateway # NICs your internet interfaces IF1=eth0 IF2=eth2 IF0=eth1 ip route add $P1_NET dev $IF1 src $IP1 table T1 ip route add default via $P1 table T1 ip route add $P2_NET dev $IF2 src $IP2 table T2 ip route add default via $P2 table T2 ip route add $P1_NET dev $IF1 src $IP1 ip route add $P2_NET dev $IF2 src $IP2 ip rule add from $IP1 table T1 ip rule add from $IP2 table T2 ip route add $P0_NET dev $IF0 table T1 ip route add $P2_NET dev $IF2 table T1 ip route add 127.0.0.0/8 dev lo table T1 ip route add $P0_NET dev $IF0 table T2 ip route add $P1_NET dev $IF1 table T2 ip route add 127.0.0.0/8 dev lo table T2 ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1
我不完全理解腳本。因此,如果上述程式碼不起作用,將機器恢復到原始配置的最佳方法是什麼?在執行此腳本之前需要備份哪些文件?
我相信您找到的腳本是通過跟踪/合併來自Linux Advanced Routing & Traffic Control HOWTO的各種資訊創建的。特別是關於負載平衡獨立 ISP 鏈路的部分。我建議您閱讀該頁面以幫助了解該腳本在做什麼。請記住,How To 引用了舊核心,儘管我認為原則不會發生太大變化,並且
ip
命令可能仍然有效。每次機器啟動以設置路由等時都需要執行該腳本,因此您不需要備份文件(它不會觸及任何文件)。重新啟動機器後,規則將被遺忘,將使用機器的預設網路設置。
如果您不想重新啟動,則取決於發行版,您可能能夠重新啟動網路,即在 Red Hat 上
service network restart
應該為您清除路由並再次添加預設路由(這是基於我對網路腳本)。我相信 Ubuntu 會有一個類似的系統(我已經有一段時間沒有使用它了,他們現在使用的是我不知道的 Upstart)。否則,您必須使用該命令手動刪除該腳本創建的規則(或編寫執行此操作的腳本)ip
。