单线网络提心吊胆,怕断网? 在网络中,日常为了提高可靠性,一般会配置链路聚合(Link Aggregation)(网络之路29:三层链路聚合)。
同样的,在服务器上也有网卡绑定(bonding)的技术,将两个或多个物理网卡通过bonding技术绑定在一起,从而创建一个虚拟的、逻辑上的网络接口,实现网络接口的聚合。
做了网卡绑定之后,就可以提高网络冗余,实现高可用,如果其中一个网卡发生故障,服务能够无缝切换到其他正常工作的网卡上,确保网络连接不间断;结合不同的工作模式,还可以实现负载分担或增加网络带宽的效果,优化资源利用的同时,提高网络容量。是时候给你的服务器网卡上双保险了!
之前,我们用CentOS 7.9服务器该演示了如何配置网卡绑定(CentOS 7配置Bonding网卡绑定),也用Windows Server服务器演示了如何配置NIC组合(Windows Server配置网卡绑定:NIC组合)。
今天,给大家带来一个Ubuntu服务器配置网卡绑定的简单案例。实验设备我们选择了两台Ubuntu 22.04.3 LTS服务器,内核版本为6.5.0-44-generic。
两台设备通过两对网卡互联:ens7接ens7,ens8接ens8。
在之前的文章中,我们介绍了网卡绑定一共有7种不同的工作模式,需要通过指定mode参数的值来进行确定。
1、mode=0:轮询均衡策略(Round Robin Policy,balance-rr),通过轮询的方式将数据包均匀分配到所有slave接口上,提供负载均衡但不保证连续的数据包会走同一条链路。
2、mode=1:主备模式(active-backup),只有一张网卡处于活动状态,另一张作为备份。当活动网卡出现故障时,备份网卡立即接管网络连接。
3、mode=2:XOR哈希策略(balance-xor),根据源MAC地址和目标MAC地址的XOR运算结果进行哈希,然后选择相应的接口发送数据包,可以实现负载均衡。
4、mode=3:广播模式(broadcast),所有的流量都会同时通过所有slave接口发送,主要用于某些需要复制数据流的特殊应用环境。
5、mode=4:IEEE 802.3ad协议(802.3ad,Link Aggregation Control Protocol,LACP),根据LACP协议与交换机协商形成聚合链路,支持动态链路聚合,通常用于带宽增加并提供高可用性。
6、mode=5:传输层感知负载均衡(Transmit Load Balancing,balance-tlb),不需要任何特定配置的交换机,但只能在从服务器向客户端单向发送数据时进行负载均衡。
7、mode=6:带接收负载均衡的传输层感知负载均衡(Adaptive Load Balancing,balance-alb),这是TLB模式的一个增强版,在TLB的基础上增加了基于ARP响应的接收负载均衡功能。
一般情况下,我们在配置服务器和交换机对接时,需要配置为mode=4;当配置服务器主机之间的互联时,则可以使用mode=0进行轮询负载。所以,我们本次就使用Netplan配置一下balance-rr(Round-Robin)模式的网卡聚合(用Ubuntu的时候,你是不是被127.0.0.53困扰好久了?来看看怎么修改DNS配置)。
首先,在两台服务器上创建Netplan配置文件/etc/netplan/99-bond.yaml。需要注意,若系统默认使用NetworkManager,需指定renderer: NetworkManager 或留空以继承默认设置。切勿强制指定renderer: networkd,除非确认systemd-networkd服务已启用,否则会导致管理网络IP地址变化,连接断开。
服务器171的配置文件如下:
nano /etc/netplan/99-bond.yaml
network:
version: 2
renderer: NetworkManager
bonds:
bond0:
dhcp4: no
addresses:
– 172.16.1.171/24
interfaces:
– ens7
– ens8
parameters:
mode: balance-rr
mii-monitor-interval: 100
ethernets:
ens7:
dhcp4: no
optional: true
ens8:
dhcp4: no
optional: true
服务器172的配置文件如下:
network:
version: 2
renderer: NetworkManager
bonds:
bond0:
dhcp4: no
addresses:
– 172.16.1.172/24
interfaces:
– ens7
– ens8
parameters:
mode: balance-rr
mii-monitor-interval: 100
ethernets:
ens7:
dhcp4: no
optional: true
ens8:
dhcp4: no
optional: true
在两台服务器上执行以下命令,应用配置:
chmod 600 /etc/netplan/99-bond.yaml
netplan apply
除了上面通过ip add查看网卡状态之外,我们还可以查看/proc/net/bonding/bond0确认Bond接口的模式及从接口状态:
cat /proc/net/bonding/bond0
测试两台服务器bond网卡的连通性。
接下来,我们开始打流,并在打流过程中,断掉ens7的互联线路。
从打流的带宽来看,在断开线路时,带宽只是有点波动,并没有出现中断的情况。
此外,由于是虚拟化平台的原因,底层线路删除之后接口状态并没有发生变化,不过从带宽速率还是能看到一些抖动存在的。
通过这次亲自动手,我们再次验证了网卡绑定技术的实用价值。对于内网关键流量、服务器互联等场景,花费少量时间配置Bonding,就能为网络稳定性加上一道坚实的安全锁。
你的服务器是否也有重要的单线网络需要加固?不妨动手试试吧!欢迎在评论区分享你的配置经验!
铁军哥
高级网络规划设计师(副高级),原中国电信高级技术规划工程师,天翼云认证高级解决方案架构师、高级运维工程师,H3C认证网络工程师。 退役军人。「网络安全&云计算&人工智能」关注我,用技术武装自己!
1385篇原创内容
公众号
推荐阅读
无需公网IPv4!手把手教你配置基于IPv6的WireGuard安全隧道
WireGuard配置太麻烦?我的Web管理系统通过HUB/SPOKE组网+SSH代管,效率提升100倍!
我们的WireGuard管理系统支持手机电脑了!全平台终端配置,支持扫码连接,一键搞定
腾讯云隐藏福利:如何通过一键操作白嫖CPU升级?性能飙升
还在为AI API费用发愁?我找到了免费使用Gemini 3和Claude 4.5的方法
警惕!OpenClaw隐藏的致命Bug:网络超时误报上下文溢出,可导致系统陷入死循环
每月40元实现异地组网!用家用路由器+L2TP协议,在腾讯云上搭建企业级VPN枢纽
你的VPN客户端还在共用IP?最新的OpenVPN管理系统已支持每客户端独立公网IP!
成本省下99.7%!用40元的腾讯云服务器自建IPsecVPN,成功对接企业级飞塔防火墙
超越SR-MPLS!SRv6实测:基于纯IPv6数据面承载IPv4 VPN业务,体验协议简化之美
超越BE!实战演示SR-MPLS TE显式路径规划,为VPN业务提供可靠性能保障
2048卡昇腾910C集群算力集群交付工程手册
2048卡昇腾910C集群存储集群交付工程手册
声明:来自铁军哥,仅代表创作者观点。链接:https://eyangzhen.com/6108.html