版权声明:本文为博主原创文章,转载请注明出处。
最近在部署项目时遇到了一小问题,需要在两台服务器之间建立一条高速链路进行数据传输,但是这两台机器并没有万兆网卡。
不过,这两台服务器各有4个千兆网卡,如果对其进行聚合,或许可以在不添置硬件的情况下得到翻倍的传输速率?
抱着这样的想法,展开了本次调研。
桥接可以简单理解成,使多张网卡处于同一VLAN;在网段相同的情况下,接入同一VLAN的设备可以相互通信。
/etc/sysconfig/network-scripts/ifcfg-virbr0
,并设定对应IP。
1 2 3 4 5 6 7 | DEVICE="virbr0" BOOTPROTO="static" IPADDR="192.168.100.201" NETMASK="255.255.255.0" ONBOOT="yes" TYPE="Bridge" NM_CONTROLLED="no" |
ifcfg-xxx
,例如这里是修改ifcfg-em2
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=em2 UUID=8ef001df-9b86-418f-bb26-cae983a39a93 DEVICE=em2 ONBOOT=yes # 添加/修改以下内容 BOOTPROTO=none BRIDGE=virbr0 NM_CONTROLLED=no |
1 | systemctl restart network |
桥接可以使一台设备模拟成一台交换机,但如果尝试将同一台设备用多根网线接入到这台交换机,便会出现类似环路的情况,导致网络无法正常通信。
桥接方案并不能解决大带宽需求的问题,但是将服务器作为交换机使用也算一个比较实用的解决方案。(比如,需要在多台万兆设备间进行通信,又不想添置万兆交换机的情况下,可以节约一笔开支
在尝试了桥接无法达到预期的效果后,继续调研发现了网卡汇聚的方法。
/etc/sysconfig/network-scripts/ifcfg-bond0
,并设定对应IP。
1 2 3 4 5 6 7 8 9 10 | DEVICE=bond0 NAME=bond0 BOOTPROTO=none ONBOOT=yes TYPE=Bond BONDING_MASTER=yes BONDING_OPTS="mode=0 miimon=100" IPADDR=192.168.100.201 PREFIX=24 GATEWAY=192.168.100.100 |
ifcfg-xxx
,例如这里是修改ifcfg-em2
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=em2 UUID=8ef001df-9b86-418f-bb26-cae983a39a93 DEVICE=em2 ONBOOT=yes # 添加/修改以下内容 BOOTPROTO=none USERCTL=no MASTER=bond0 SLAVE=yes |
1 | systemctl restart network |
汇聚可以同时利用多张网卡进行通讯,在数据传输时会不断进行轮换(mode=0);但当其中一条链路断开时,吞吐量会严重下降,甚至达不到单张网卡的满载速率。
与桥接不同,汇聚只能接入单台设备,并需要两端设备完成同样的配置,否则无法正常通信。
完成配置后,两台设备间突破了千兆的传输速率,但是并没有得到带宽翻倍的效果,或许是存在CPU瓶颈?(没时间深挖背后的原因了,有空再调研一下
无论是聚合两张网卡,还是三张网卡,数据传输时最终都仅得到 170+MB/s(比千兆多一点),即使协商速率是 2000Mb/s,实际应用达不到满载速率的话,其实意义不大。
上一篇:11-js事件基础