当前位置:首页>Linux>Linux系统如何做聚合链路Bond,这么简单就不要问领导了!

Linux系统如何做聚合链路Bond,这么简单就不要问领导了!

  • 2026-10-30 02:21:02
Linux系统如何做聚合链路Bond,这么简单就不要问领导了!

1. 什么是Bond聚合链路?

Bonding 是 Linux 提供的一种网络聚合技术,可以将多块物理网卡绑定成一个逻辑网卡(称为 Bond 接口)

Bond接口有以下几个作用:

  • 高可用性:实现故障切换,某个网卡故障后,流量会自动切换到其他正常网卡。
  • 负载均衡:将流量分散到多个物理网卡中,增加网络吞吐量。
  • 提高带宽:通过多个链路并行传输,提高总带宽。

2. Bond的工作模式

Bonding 的行为由其工作模式(mode)决定

2.1 各个模式说明

模式编号
模式名称
工作机制
特点及适用场景
mode=0
轮询负载均衡
数据包轮流通过每个接口发送,需要交换机支持,可能导致数据包乱序。
适用于高带宽但对交换机要求较高的场景。
mode=1
主备模式
主接口处理所有流量,故障时切换到备接口,无需交换机支持。
适用于高可用性需求的场景,如关键业务服务器
mode=2
XOR 模式
基于 MAC 地址或 IP 地址的散列算法分配流量,需交换机支持 IEEE 802.3ad 标准。
适用于需稳定分配流量的大型网络环境。
mode=3
广播模式
数据包广播到所有接口,实现高容错。
适用于需要所有路径冗余的特殊场景,如广播网络。
mode=4
动态链路聚合(802.3ad/LACP)
基于 IEEE 802.3ad 标准,需交换机支持 LACP 协议,提供动态链路聚合和负载均衡。
适用于数据中心或高性能网络需求场景。
mode=5
发送负载均衡
根据负载动态调整传输方向,无需交换机支持,但接收流量固定使用主接口。
适用于对性能和兼容性均有要求但交换机不支持聚合的环境。
mode=6
发送/接收负载均衡
在 mode=5 基础上增加接收流量的负载均衡,需交换机支持 ARP 协议。
适用于无需复杂交换机配置、对负载均衡有要求的场景。

2.2 模式选择指南

  • 高可用性:选择 mode=1(主备模式)。
  • 高性能与负载均衡:选择 mode=4和mode=0
  • 无需交换机支持的负载均衡:选择 mode=6
  • 特殊广播需求:选择 mode=3。

【温馨提示】

  • mode 1、5、6不需要交换机设置
  • mode 0、2、3、4需要交换机设置

3. Bond配置实例

下面以配置bond0为例,其他模式差不多的。

3.1 创建bond虚拟接口配置文件

创建bond0配置文件模式为mode=0

vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 TYPE=BondBONDING_MASTER=yesBOOTPROTO=staticIPADDR=10.0.0.25NETMASK=255.255.255.0GATEWAY=10.0.0.2ONBOOT=yesBONDING_OPTS="mode=0 miimon=100 updelay=200 downdelay=200"

3.2 修改物理接口配置

将 ens33 和 ens37 绑定到 bond0:

编辑网卡1:/etc/sysconfig/network-scripts/ifcfg-ens33:

TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="none"IPV4_FAILURE_FATAL="no"IPV6INIT="no"NAME="ens33"DEVICE="ens33"ONBOOT="yes"SLAVE=yesMASTER=bond0

编辑网卡2:/etc/sysconfig/network-scripts/ifcfg-eth1:

TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="none"IPV4_FAILURE_FATAL="no"IPV6INIT="no"NAME="ens37"DEVICE="ens37"ONBOOT="yes"SLAVE=yesMASTER=bond0

3.3 重启网络服务

systemctl restart network

3.4  验证bond配置

查看 Bonding 状态:

# 查看bond模式cat /sys/class/net/bond1/bonding/mode# 查看bond状态信息cat /proc/net/bonding/bond0

可以看到已经完成了聚合。

4. Bond参数详解

4.1 常用参数

  • miimon:链路监控间隔(单位:ms)。例如,miimon=100 表示每 100ms 检查链路状态。
  • updelay 和 downdelay:链路启用或禁用的延迟时间(单位:ms)。
  • primary:在 mode=1 下指定主接口。
  • arp_interval:设置 ARP 检测间隔(单位:ms)。
  • arp_ip_target:指定用于 ARP 检测的目标 IP 地址。

4.2 参数优化建议

  • 链路检测间隔:miimon 值设置过低可能导致系统负载增加,建议设置为 100-200ms。
  • 主备切换延迟:通过设置 updelay 和 downdelay,避免频繁切换。

5. 调试与管理

5.1 查看 Bonding 状态

通过以下命令查看 Bonding 配置和链路状态:

cat /proc/net/bonding/bond0

5.2 调试常见问题

Bonding 接口无法启动

  • 检查 bonding 模块是否加载:lsmod | grep bonding。
  • 检查配置文件的语法是否正确。

主备切换失败

  • 确保链路检测(miimon 或 ARP)配置正确。
  • 检查物理接口状态:ip link show dev ethX。
  • 负载均衡不生效
  • 在 mode=4 下,确保交换机配置了 LACP。

6 自动化配置脚本

以下是一个自动化脚本,用于一键配置 Bonding 接口:

#!/bin/bashBOND_NAME="bond0"MODE="1"IPADDR="192.168.1.100"NETMASK="255.255.255.0"GATEWAY="192.168.1.1"SLAVES=("eth0""eth1")# 加载 bonding 模块modprobe bonding# 创建 Bond 接口nmcli connection add type bond ifname $BOND_NAME con-name $BOND_NAME mode $MODEnmcli connection modify $BOND_NAME ipv4.addresses "$IPADDR/$NETMASK"nmcli connection modify $BOND_NAME ipv4.gateway $GATEWAYnmcli connection modify $BOND_NAME ipv4.method manual# 绑定物理接口for SLAVE in"${SLAVES[@]}"; do    nmcli connection add type bond-slave ifname $SLAVE master $BOND_NAMEdone# 启动接口nmcli connection up $BOND_NAMEecho"Bonding configuration completed."

如果使用上面的脚本之前需要在测试环境操作。测试通过再上生产环境操作。

如果有错漏,敬请斧正!如果觉得有用,帮忙点点赞和关注一下!

END

关注我,后台回复【666】获取海量Linux运维资料包,资料持续更新!

如果需要提供技术支持或添加交流群,加V:lige_linux

往期推荐

1

二进制方式部署Kubernetes高可用集群(3master,无坑超详细)

_

2

部署一套企业级Kubernetes高可用用集群(3master,1.33版)

3

万字长文:K8S命令详解汇总【自用珍藏版】

4

领导让我部署一套Kubernetes集群,我咔咔咔给他搞定(1.32无坑版)

_

5

交流群2.0|拒绝闲聊,只聊实战与成长,运维同行欢迎来撩

_

6

Linux的150个常用命令汇总,运维大神不一定全部掌握!

_

最新文章

随机文章