Linux:使用綁定連接兩台伺服器以實現更快的文件傳輸
我的設置是兩台戴爾 R720 伺服器,它們分別通過 4 個千兆埠連接到 Cisco WS-C2960S-24TS-L 交換機,該交換機又通過 100MBit 連接到 Internet。
伺服器正在執行帶有 openvz (redhad) 核心的 Wheezy:
2.6.32-openvz-042stab081.3-amd64
我想要的是兩台伺服器之間更快的文件傳輸和一定程度的容錯。
我設法設置了綁定並嘗試了綁定模式
balance-rr
,802.3ad
並且balance-alb
. 就我能夠連接到伺服器而言,所有這些都有效。但是我沒有在它們之間的數據傳輸中得到任何加速。(刪除:我明白這
balance-rr
僅適用於 xover 佈線。)查看 ifconfig 的流量計數和我看到的各個介面:
802.3ad
:僅使用第一個介面的傳出流量。如果轉移到具有不同 MAC 地址的另一台主機,情況也是如此。balance-alb
:傳出流量“不知何故”在介面之間分佈不均,但傳入流量僅在一個介面上核心文件告訴我,該
balance-rr
模式需要:The balance-rr, balance-xor and broadcast modes generally require that the switch have the appropriate ports grouped together. The nomenclature for such a group differs between switches, it may be called an "etherchannel"
所以問題是:
- 什麼是適合我使用的模式以及如何設置它才能正常工作?
- 如果這通常是不可能的,那麼以某種方式進行設置將有助於伺服器/伺服器和伺服器/網際網路連接使用不同的介面。但這必須使用綁定而不是不同的內部/外部 IP 地址。(因為這反過來會使 openvz 設置變得不必要地困難)
提前致謝!
**更新:**在玩過交換機之後,我已經為處於“活動”模式的兩台伺服器設置了兩個乙太通道(這是正確的嗎?)。但是在 linux 端使用 802.3ad 作為綁定方法,我沒有看到行為/速度有任何變化。
**更新2:**對不起。似乎現在傳出流量使用不同的介面。可能取決於目的地的mac地址。這是我能做的最好的嗎?
**UPDATE3:**只是為了顯示我在說什麼:
root@warp2:/ssd/test# iperf -c 10.0.0.1 ------------------------------------------------------------ Client connecting to 10.0.0.1, TCP port 5001 TCP window size: 23.8 KByte (default) ------------------------------------------------------------ [ 3] local 10.0.0.2 port 55759 connected with 10.0.0.1 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 2.16 GBytes 1.85 Gbits/sec root@warp2:/ssd/test# iperf -c x.x.x.x ------------------------------------------------------------ Client connecting to warp1, TCP port 5001 TCP window size: 23.8 KByte (default) ------------------------------------------------------------ [ 3] local 80.190.169.17 port 54861 connected with x.x.x.x port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.10 GBytes 944 Mbits/sec
第一個測試是使用 balance-rr 的 2 個 nic,目前在兩個 vlan 中(每個 nic 對一個,用於模擬 x-link 電纜。)
第二個測試是使用 802.3ad 和 EtherChannel 的 2 個網卡。
在這兩個伺服器之間的流量交換期間,恐怕您無法在如此簡單的設置中使用您的綁定的多個連結。原因:此 Cisco 交換機基於 IP 和 MAC 執行負載平衡。甚至多個文件傳輸將映射到相同的物理路徑。
它可以使用直接交叉電纜。設置不應該像您害怕的那樣複雜。我相信這裡不需要切換(Veth)openvz 設置。我想,VENET 和簡單的靜態路由就足夠了。
網路設置可能如下所示:
10.10.0.0/24 - subnet for direct interconnect. 10.20.1.0/24 - range for VEs on Server1 10.20.2.0/24 - range for VEs on Server2 Server1: bond1: IP=10.10.0.1/24 VE1: IP=10.20.1.1/24 VE2: IP=10.20.1.2/24 ... route 10.20.2.0/24 -> 10.10.0.2 Server2: bond1: IP=10.10.0.2/24 VE1: IP=10.20.2.1/24 VE2: IP=10.20.2.2/24 ... route 10.20.1.0/24 -> 10.10.0.1
而且
iptables
,當然,允許所有這些員工而不是嘗試 nat/偽裝惡作劇。UPD:
通過容器遷移,最好使用 Veth 設置……確實好多了;)