AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 555311
Accepted
Scheintod
Scheintod
Asked: 2013-11-16 10:48:50 +0800 CST2013-11-16 10:48:50 +0800 CST 2013-11-16 10:48:50 +0800 CST

Linux:使用绑定连接两台服务器以实现更快的文件传输

  • 772

我的设置是两台戴尔 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 个网卡。

linux
  • 3 3 个回答
  • 4987 Views

3 个回答

  • Voted
  1. MDMarra
    2013-11-19T08:45:08+08:002013-11-19T08:45:08+08:00

    使用链路聚合(etherchannel)不会加速单个文件传输。不同的连接可以在同一个以太通道中使用不同的接口来增加同时传输的最大吞吐量,但是单个传输将只能使用单个接口,这就是您所描述的行为。

    • 2
  2. Best Answer
    Veniamin
    2013-11-20T11:25:14+08:002013-11-20T11:25:14+08:00

    在这两个服务器之间的流量交换期间,恐怕您无法在如此简单的设置中使用您的绑定的多个链接。原因:此 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 设置……确实好多了;)

    • 1
  3. STW
    2014-07-31T19:24:16+08:002014-07-31T19:24:16+08:00

    我一直在尝试类似的设置,并认为我了解解决方案。就我而言,我有两台服务器,每台都有双千兆网卡,通过 3com 3824 第 2 层交换机连接。

    在尝试了各种选项后,我发现我需要为服务器之间的每个 1:1 NIC 创建一个 VLAN(例如,一个包含 server1:eth0 和 server2:eth0 的交换机端口的 VLAN,另一个用于 server1:eth1 和 server2:eth1 的 VLAN )。这需要一些额外的配置和路由,但它导致了我预期的近 2 倍的吞吐量增益。

    到目前为止,我还没有完全消化细节;但是,由于 802.11ad 对聚合链路中的所有 NIC 使用相同的 MAC,我认为交换机倾向于通过单个端口为目标 MAC 发送流量,而不是将负载分散到聚合链路中的所有端口。通过将每条链路隔离到其自己的 VLAN 中,交换机将以与发送数据相同的方式转发数据——如果发送方在两个端口之间平衡传输,则交换机将通过两个 VLAN 将数据转发到两个接收端口。

    在我的脑海中,唯一的权衡是允许网络上的非聚合主机访问这些服务器的额外配置。我仍然需要进行冗余测试——如果一台服务器上的 eth0 和另一台服务器上的 eth1 都失败,他们将失去通信。但是我认为这不太可能发生——它应该通过与其他主机相同的路径并穿过 VLAN(另外,因为我每台服务器只有两个 NIC,丢失任何一个 NIC 都会破坏设置的目的,并且它变得没有实际意义观点)。

    带着一粒盐来看待这一切。我已经修改了很多选项和设置,并且我相信您的交换机也支持第 3 层,但我相当有信心将接口配对到隔离的 VLAN 是利用所有可用吞吐量的门票。

    • 1

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve