Linux

Linux:使用綁定連接兩台伺服器以實現更快的文件傳輸

  • July 31, 2014

我的設置是兩台戴爾 R720 伺服器,它們分別通過 4 個千兆埠連接到 Cisco WS-C2960S-24TS-L 交換機,該交換機又通過 100MBit 連接到 Internet。

伺服器正在執行帶有 openvz (redhad) 核心的 Wheezy: 2.6.32-openvz-042stab081.3-amd64

我想要的是兩台伺服器之間更快的文件傳輸和一定程度的容錯。

我設法設置了綁定並嘗試了綁定模式balance-rr802.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 設置……確實好多了;)

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