在现代服务器运维中,网络的稳定性和吞吐量是保障业务连续性的关键因素,单张网卡工作模式虽然简单,但存在单点故障的风险,一旦网卡或链路出现问题,整个服务器的网络连接便会中断,为了解决这一问题,网络汇聚技术应运而生,它通过将多块物理网卡虚拟成一块逻辑网卡,不仅实现了网络冗余,提高了可靠性,还能通过负载均衡策略增加网络带宽,显著提升网络性能,在CentOS系统中,实现双网卡汇聚是一项常见且重要的操作,本文将详细介绍其原理、配置方法与验证步骤。

什么是网络汇聚?
网络汇聚,也常被称为网卡绑定,是将两个或多个物理网络接口组合起来,作为一个逻辑网络接口来使用的技术,对于操作系统和上层应用而言,它们只看到一个网络接口,但底层数据流却是由多块物理网卡共同处理,这种架构带来了两大核心优势:
- 高可用性(冗余):当汇聚组中的某一块物理网卡或其所连接的网线发生故障时,网络流量会自动切换到其他正常的网卡上,整个过程对应用透明,从而避免了单点故障导致的服务中断。
- 负载均衡(增加带宽):根据所选择的汇聚模式,网络流量可以被分发到不同的物理网卡上,实现了负载均衡,理论上可以接近所有物理网卡带宽的总和,提高了数据传输效率。
主流的绑定模式
Linux内核支持多种网卡绑定模式,每种模式都有其特定的应用场景和优缺点,选择合适的模式是实现预期效果的前提,下表列出了几种最常用的绑定模式:
| 模式名称 | 模式ID | 描述 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|---|
| balance-rr | 0 | 轮询模式,数据包按顺序依次从每个网卡发出。 | 充分利用所有带宽,负载均衡效果最好。 | 需要交换机支持端口聚合,且数据包可能乱序到达。 | 需要极高吞吐量且能容忍数据包乱序的环境。 |
| active-backup | 1 | 主备模式,只有一个网卡处于活动状态,其他作为备份。 | 配置简单,无需交换机特殊配置,兼容性最好。 | 无法增加带宽,只有一块网卡在工作。 | 对冗余性要求高,但对带宽无额外需求的场景。 |
| 3ad | 4 | 动态链接聚合模式,遵循IEEE 802.3ad (LACP)标准。 | 动态创建聚合链路,能实现负载均衡和冗余。 | 需要交换机明确支持LACP协议。 | 与支持LACP的交换机对接,实现智能化的链路聚合。 |
| balance-alb | 6 | 自适应负载均衡模式,结合了ARP协商和接收负载均衡。 | 无需交换机特殊配置,能实现流量的接收和发送负载均衡。 | 负载均衡算法相对复杂,对CPU有轻微额外开销。 | 无法更改交换机配置,但又希望实现负载均衡的环境。 |
使用nmcli配置双网卡汇聚
在CentOS 7及以后的版本中,推荐使用nmcli(NetworkManager Command-Line Interface)工具进行网络配置,它比传统的编辑ifcfg文件的方式更加直观、可靠且不易出错,以下以3ad(LACP)模式为例,演示配置过程。
配置前的准备工作
- 确认网卡名称:使用
nmcli device status或ip addr命令查看系统中可用的物理网卡名称,ens33和ens34。 - 确保物理网卡状态:确保这两块网卡当前未被NetworkManager管理,或已删除其原有连接配置。
- 交换机配置:若使用
3ad模式,需要在连接服务器的交换机上进行相应的LACP配置,将对应的两个端口设置为一个聚合组(Trunk或Port-Channel)。
配置步骤
创建Bond接口
我们创建一个名为bond0的逻辑接口,并指定其绑定模式为3ad。
sudo nmcli connection add type bond con-name bond-bond0 ifname bond0 mode 802.3ad
type bond: 指定连接类型为bond。con-name bond-bond0: 为这个连接配置文件命名,通常以bond-开头。ifname bond0: 指定逻辑接口的名称为bond0。mode 802.3ad: 指定绑定模式为LACP。
为Bond接口配置IP地址
为这个新建的bond0接口配置静态IP地址、子网掩码、网关和DNS。
sudo nmcli connection modify bond-bond0 ipv4.addresses 192.168.1.100/24 sudo nmcli connection modify bond-bond0 ipv4.gateway 192.168.1.1 sudo nmcli connection modify bond-bond0 ipv4.dns "8.8.8.8,8.8.4.4" sudo nmcli connection modify bond-bond0 ipv4.method manual
ipv4.method manual: 将IPv4的配置方法设置为手动(静态IP)。
将物理网卡加入Bond组

将物理网卡ens33和ens34作为从属设备添加到bond0主接口中。
# 添加第一块网卡 sudo nmcli connection add type ethernet slave-type bond ifname ens33 master bond-bond0 # 添加第二块网卡 sudo nmcli connection add type ethernet slave-type bond ifname ens34 master bond-bond0
slave-type bond: 表明这是一个bond的从属连接。master bond-bond0: 指定其主连接为之前创建的bond-bond0。
激活并验证配置
所有配置完成后,激活新的连接配置。
sudo nmcli connection up bond-bond0
激活后,系统会自动启动从属的物理网卡连接,可以通过以下命令进行验证:
查看Bond接口状态:
ip addr show bond0
该命令应能显示
bond0接口以及你为其配置的IP地址。查看Bonding详细信息(最重要):
cat /proc/net/bonding/bond0
这个文件提供了Bond接口最核心的运行状态信息,一个成功的配置输出会类似如下:

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer2 (0) MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 802.3ad info LACP active: on LACP rate: fast Min links: 0 Aggregator selection policy (ad_select): stable System priority: 65535 System MAC address: 00:0c:29:xx:xx:xx Active Aggregator Info: Aggregator ID: 1 Number of ports: 2 Actor Key: 17 Partner Key: 1 Partner Mac Address: 00:23:04:yy:yy:yy Slave Interface: ens33 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:xx:xx:xx 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:zz:zz:zz Slave queue ID: 0从输出中可以清晰地看到Bond模式、LACP状态以及两块从属网卡的状态(
MII Status: up)。
为了测试冗余性,可以尝试拔掉其中一根网线,稍等片刻后再次查看/proc/net/bonding/bond0,会发现对应网卡的状态变为down,但网络连接依然保持,因为流量已全部切换到另一块网卡上。
相关问答FAQs
问题1:我应该选择哪种绑定模式?如果我的交换机不支持LACP怎么办?
解答: 选择哪种模式取决于你的具体需求和网络环境。
- 如果追求极致的带宽和负载均衡,且你的交换机支持端口聚合,
balance-rr(mode 0) 是一个不错的选择,但要注意数据包乱序的可能性。 - 如果你的交换机支持LACP协议,强烈推荐使用
3ad(mode 4),这是最标准和智能的模式,它能与交换机动态协商,实现真正的链路聚合和冗余,是生产环境中最常用的模式。 - 如果你的交换机不支持任何聚合协议,或者你无法配置交换机,但又希望实现负载均衡,
balance-alb(mode 6) 是最佳选择,它不需要交换机的任何配合,就能在发送和接收两个方向上实现负载均衡。 - 如果你的唯一目标是高可用性(冗余),对带宽没有额外要求,且希望配置最简单、兼容性最好,
active-backup(mode 1) 是最稳妥的选择,它只需要在服务器端配置,对交换机没有任何要求。
问题2:配置完成后,如何快速判断哪块网卡正在承担主要的数据传输任务?
解答: 判断哪块网卡是“主要”的,取决于你使用的绑定模式。
- 对于
模式,这个概念最明确,你可以通过查看 /proc/net/bonding/bond0文件,找到Currently Active Slave字段,它后面显示的网卡名称就是当前正在活动的主网卡。cat /proc/net/bonding/bond0 | grep "Currently Active Slave"
- 对于
或 等负载均衡模式,通常没有“主要”网卡的概念,因为流量是被分发到所有活动链路上的,你可以使用网络监控工具如 iftop或nload分别监控两块物理网卡(如ens33和ens34)的实时流量,如果看到两块网卡都有数据流量,说明负载均衡正在工作,如果其中一块流量为零,可能表示它处于备用状态或存在链路问题,同样,/proc/net/bonding/bond0文件会显示所有从属网卡的状态,帮助你判断它们是否都正常参与了聚合。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复