ubuntu-多网卡聚合-bond技术教程-配置interfaces

目录

1、Bond的工作模式

2、配置步骤

3、删除bond

4、总结

5、发现的问题


注意:以下配置步骤,只测试了ubuntu20.04有效,其他版本没试过。

经查阅资料,建议ubuntu20.04以前的版本使用本文章方法,含ubuntu20.04之后的版本,采用配置netplan下.yaml文件的方式进行网卡聚合,配置方法见如下文章:

(168条消息) ubuntu网络管理和双网卡绑定bond以及删除bond完全体_ubuntu 删除bond_道阻且长行则将至!的博客-CSDN博客https://blog.csdn.net/Perfect886/article/details/129885877

1、Bond的工作模式


Linux bonding驱动能把多张网卡绑定为一个逻辑网卡,用于网络负载均衡及网络冗余。

bonding一共有7种工作模式(mode):

1)、mode=0,(balance-rr)(轮询均衡模式)
传输数据包顺序是依次传输,直到最后一个传输完毕,此模式提供负载平衡和容错能力,服务器对外只有一个MAC地址,其物理网卡是没有MAC地址的,因此需要交换机做链路聚合,否则不知道要将数据包发送给哪个网卡.

2)、mode=1,(active-backup)(主备模式)
只有一个主设备处于活动状态。一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。此模式提供了容错能力。不需要交换机特别配置,配置access端口就可以了。

3)、mode=2,(balance-xor)(平衡策略)
特点:基于指定的传输HASH策略传输数据包。此模式提供负载平衡和容错能力。

4)、mode=3,(broadcast) (广播策略)
特点:在每个网卡上传输每个数据包,广播包太多,一般不使用此模式。将所有数据包传输给所有设备。此模式提供了容错能力。

5)、mode=4,(802.3ad) IEEE 802.3ad Dynamic link aggregation. IEEE 802.3ad 动态链接聚合
创建共享相同的速度和双工设置的聚合组。此模式提供了容错能力。每个设备需要基于驱动的重新获取速度和全双工支持;如果使用交换机,交换机也需启用 802.3ad 模式。

6)、mode=5,(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个网卡上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的网卡出故障了,另一个网卡接管失败的网卡的MAC地址。交换机上可见多个网卡的MAC,因此不需要交换机做链路聚合配置。

7)、mode=6,(balance-alb) Adaptive load balancing: (适配器适应性负载均衡)
特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receiveload balance, rlb),而且不需要任何switch(交换机)的支持。交换机上也是可见多个网卡的MAC,不需要做链路聚合配置。

    以下部分是mode=6实现原理,了解一下:

    1.bond接收负载均衡是通过ARP协议实现的。bonding驱动截获本机发送的ARP应答,并把源MAC地址改写为bond中某个网卡的MAC地址,从而使得交换机上学习到的ARP是服务器想要分配流量的MAC地址,向服务器发送的流量则会发送到相对应的MAC地址。

    2.bond发送负载均衡也是通过ARP协议实现的。当服务器发起ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达时,bonding驱动把它的MAC地址提取出来,并伪造一个ARP应答给bond中的某个网卡,以此实现从指定的网卡发出数据包。

   3.当有网卡出现故障或ARP过期时,bond都会重新计算,将流量重新分配到各个网卡。

2、配置步骤


以下步骤为配置mode=6的双网卡绑定步骤,其他模式的方法一样;

2.1、安装ifenslave软件
fenslave为一种粘合和分离式的软件,可以将数据包有效的分配到bonding驱动

sudo apt install ifenslave

2.2、/etc/modules文件
在/etc/modules文件中加入以下配置

bonding mode=6 miimon=100

mode=6 表示采用模式6;
miimon是用来进行链路监测的。比如miimon=100,表示系统每100ms监测一次链路连接状态,如果有一条线路不通就切换另一条线路。

2.3、修改/etc/network/interfaces文件配置
首先需要确定网卡接口的名称,可以通过ifconfig命令查看,当前是网卡接口分别是ens33和ens34;在/etc/network/interfaces文件增加如下配置

# 双网卡配置
auto ens33
iface ens33 inet manual
bond-master bond0

auto ens34
iface ens34 inet manual
bond-master bond0

auto bond0
iface bond0 inet static
address 192.168.20.10
netmask 255.255.255.0
gateway 192.168.20.2
dns-nameservers 192.168.20.1 119.29.29.29
bond-slaves ens33 ens34
bond-lacp-rate 1
bond-mode 6
bond-miimon 100

2.4、加载binding模块

#  载入模块
$ sudo modprobe bonding
# 查看模块,如果模块已经加载,显示出来
$ sudo lsmod|grep bonding
bonding               163840  0

2.5、查看状态
查看网络配置

$ ifconfig
bond0     Link encap:以太网  硬件地址 00:0c:29:34:7a:4a  
          inet 地址:192.168.20.10  广播:192.168.20.255  掩码:255.255.255.0
          inet6 地址: fe80::20c:29ff:fe34:7a4a/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  跃点数:1
          接收数据包:964 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:4205 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:75022 (75.0 KB)  发送字节:300032 (300.0 KB)

ens33     Link encap:以太网  硬件地址 00:0c:29:34:7a:4a  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  跃点数:1
          接收数据包:2740 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:3416 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:3899473 (3.8 MB)  发送字节:278409 (278.4 KB)

ens34     Link encap:以太网  硬件地址 00:0c:29:34:7a:54  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  跃点数:1
          接收数据包:1369 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:2125 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:106846 (106.8 KB)  发送字节:139061 (139.0 KB)

查看binding状态

$ cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: ens33
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:34:7a:4a
Slave queue ID: 0

Slave Interface: ens34
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:34:7a:54
Slave queue ID: 0

2.6、验证测试
物理上关闭一个网卡(拔网线)

# 关闭前,速率是2000Mb/s
$ ethtool bond0
Settings for bond0:
    Supported ports: [ ]
    Supported link modes:   Not reported
    Supported pause frame use: No
    Supports auto-negotiation: No
    Advertised link modes:  Not reported
    Advertised pause frame use: No
    Advertised auto-negotiation: No
    Speed: 2000Mb/s
    Duplex: Full
    Port: Other
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: off
Cannot get wake-on-lan settings: Operation not permitted
    Link detected: yes

# 关闭后,速率速率变成1000Mb/s
$ ethtool bond0
Settings for bond0:
    Supported ports: [ ]
    Supported link modes:   Not reported
    Supported pause frame use: No
    Supports auto-negotiation: No
    Advertised link modes:  Not reported
    Advertised pause frame use: No
    Advertised auto-negotiation: No
    Speed: 1000Mb/s
    Duplex: Full
    Port: Other
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: off
Cannot get wake-on-lan settings: Operation not permitted
    Link detected: yes

注意:不可以使用ifdown 关闭网卡,会导致网络中断

3、删除bond

先注释modules和interfaces中添加的内容

1.sudo ifconfig bond0 down(如果是远程连接配置,这一步会断掉远程)

2.sudo rmmod bonding

重启后检查是否删除成功:

3.ifconfig bond0

出现:bond0:error fetching interface information device not found 说明已经找不到bond0,删除成功。

删除之后,恢复以前的IP状态,不用重新设置,自动恢复网络。

4、总结

Linux bonding一共有7种工作模式(mode),如果是想要加大网卡的吞吐量,通常会使用mode=6的模式,如果是注重网络的稳定,通常会使用mode=1的模式

5、发现的问题

如果你做网卡绑定的机器使用VNC server远程工具,设置完网卡绑定,重启后,VNC server会失效,需要重新使用激活码激活license,这点需要注意,远程会断掉。

6、参考文章

Ubuntu 配置双网卡绑定,实现负载均衡(示例代码):
https://www.136.la/nginx/show-64129.html

Linux多网卡bond模式VS交换机链路聚合:

https://blog.csdn.net/weixin_33750452/article/details/93414169

linux多网卡绑定聚合-bond技术:

https://blog.51cto.com/u_10642812/2284372

  • 5
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Linux网卡绑定与交换机链路聚合是一种将多个物理网卡绑定为一个逻辑接口的技术,在高负载环境下提高网络带宽和可靠性。以下是关于如何配置Linux网卡绑定和交换机链路聚合的指导: 1. Linux网卡绑定配置: a. 确保服务器上安装了所需的驱动程序和工具,如bonding模块和ifenslave b. 在/etc/modules文件中添加bonding模块:modprobe bonding c. 创建一个新的网络接口,如bond0:编辑/etc/network/interfaces文件,并添加以下行: auto bond0 iface bond0 inet static address 192.168.xxx.xxx netmask 255.255.255.0 gateway 192.168.xxx.xxx slaves eth0 eth1 bond-mode 4 bond-miimon 100 bond-downdelay 200 bond-updelay 200 bond-lacp-rate 1 bond-xmit-hash-policy layer2+3 bond-primary eth0 d. 保存文件并重启网络服务:service networking restart 2. 交换机链路聚合配置: a. 登录交换机的管理界面 b. 创建一个新的聚合组:选择一个可用的组号,并指定组的工作模式为链路聚合(LACP或者Static) c. 添加相应的物理接口到聚合组中:将服务器上用于多网卡绑定的物理接口添加到交换机的聚合组中 d. 配置组的其他参数:根据需求,可以配置链路聚合组的一些其他参数,如备用接口、链路优先级等 e. 保存并应用配置,确保交换机和服务器的配置一致 配置完成后,多个物理网卡将作为一个逻辑接口(bond0)运行,向外提供网络连接。交换机链路聚合将这些物理链路合并成一个逻辑链路,提供更高的带宽和可靠性。需要注意的是,配置过程中需要确保服务器和交换机的配置参数一致,否则可能会导致链路无法正常工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道阻且长行则将至!

谢谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值