Ubuntu

Ubuntu 伺服器上的負載平衡 ISP

  • May 24, 2012

我有一台安裝了 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

引用自:https://serverfault.com/questions/392183