Linux的链路聚合通常有bond和team两种技术,这两种技术的主要区别有以下几点:

1.    centos支持的版本不同。Bond作为一种老技术,几乎所有版本都支持,team是一种新技术,centos7及以后版本才支持。

2.    绑定的网卡数量不同。Bond最多支持2个网卡绑定,team最多支持8个网卡绑定。

下面详细介绍这两种技术

一.Bond技术

1.1 Bond简介

Bond是Linux内核提供的一种网络驱动,它可以将多个网络接口聚合为一个逻辑接口,从而提高网络带宽、实现负载均衡和故障转移。Bond支持以下七种模式:

模式编号

模式名称

描述

交换机要求

常用性

0

Balance-RR(轮询模式)

数据包依次发送到所有网络接口上,实现负载均衡

静态链路聚合

常用

1

Active-Backup(主备模式)

只有一个接口处于活动状态,其他作为备份,活动接口故障时自动切换。

不需要

常用

2

Balance-XOR

(平衡异或模式)

根据源MAC地址和目的MAC地址的异或值来选择发送数据的接口。

静态链路聚合 ,同时需要设置对应的balance

不常用

3

Broadcast

(广播模式)

所有接口都发送相同的数据包,适用于广播或多播场景。

静态链路聚合

不常用

4

802.3ad

(LACP模式)

遵循LACP协议,通过LACP协商实现链路聚合。

需要配置lacp动态链路聚合

常用

5

Balance-TLB(自适应传输负载均衡模式)

根据每个接口的负载情况动态调整数据包发送。

不需要

不常用

6

Balance-ALB(自适应负载均衡模式)

Bond5模式的扩展,同时实现发送和接收的负载均衡

不需要

不常用

最常用的几种模式:

Active-Backup(主备模式):因其简单和可靠性,通常用于需要高可用性的场景。

Balance-RR(轮询模式):因其简单实现负载均衡,适用于需要提高带宽的场景。

802.3ad(LACP模式):在需要遵循标准协议且交换机支持LACP的环境中广泛使用。

1.2 bond配置

1.2.1.前提条件

加载bonding模块,命令为:

lsmod       列出所有当前已经加载到内核中的模块

lsmod | grep bonding    查看模块bonding是否已加载到内核中

modinfo bonding     查看模块的详细信息,不会显示模块是否已加载

modprobe bonding        加载模块

为了确保bonding模块在系统启动时自动加载,可以将其添加到/etc/modules-load.d/modules.conf文件中,默认情况下,centos7种没有该文件,需要管理员手动创建,文件名自定义,后缀名必须是.conf,文件中列出想要开机自动加载的内核模块名称,每个模块占一行。

1.2.2配置文件方式

1.2.2.1.配置bond0

创建或编辑以下网络接口配置文件:

/etc/sysconfig/network-scripts/ifcfg-bond0 名称bond0为约定俗成,文件内容为:

DEVICE=bond0        # bond网卡名称,此项为必须,此处为何值,ifconfig命令看到的虚拟网卡名称 就为何值

TYPE=Bond                      # bond网卡的类型

BOOTPROTO=none        # IP地址是否是自动获取,none也用static或者dhcp

IPV6INIT=yes                   # 是否启用IPv6支持

NAME=bond0                 # 网卡描述,取值一般和DEVICE相同

BONDING_MASTER=yes      # 标识接口是否作为bonding(绑定)的主接口

BOND_MODE=active-backup  # 选择合适的Bond模式,如active-backup(主备模式)

MIIMON=100  # 链路监控时间间隔,单位为毫秒

IPADDR=192.168.1.100  # 设置IP地址

NETMASK=255.255.255.0  # 设置子网掩码

GATEWAY=192.168.1.1  # 设置网关

PREFIX=24 # 或者使用PREFIX表示子网掩码

BONDING_OPTS="mode=0 miimon=100"

# mode=0: 这是指定bonding模式为0,miimon为驱动监视链路状态的频率,bonding驱动每100毫秒检查一次所有绑定的物理网络接口的状态,如配置了此选项,则BOND_MODE MIIMON字段不需要配置。

1.2.2.2.编辑物理网卡配置文件:

修改物理网卡的配置文件,将它们设置为bond0的从属接口。以eth0网卡为例:/etc/sysconfig/network-scripts/ifcfg-eth0,文件内容为:

DEVICE=eth0

BOOTPROTO=none

ONBOOT=yes                         # 开机自动启动

MASTER=bond0                     # 必选项,bond0名称要和上一步配置的虚拟网卡相同

SLAVE=yes                              # 必选项,将物理网卡设为从属接口

# 不需要设置IP地址、子网掩码、网关等配置,这些将由bond0统一管理

1.2.2.3.重启网络服务并验证配置

systemctl restart network          # 重启网络服务

cat /proc/net/bonding/bond0  # 查看bond0的详细信息

1.2.3配置举例

a.加载启动模块

b.查看网卡信息,将ens35 ens36做链路聚合bond0

c.编辑bond0配置文件

d.编辑物理网卡ens35,ens36的配置文件

e.重启网络并查看网卡信息

1.2.4命令行配置方式

使用nmcli命令来配置bond,该命令属于rpm包NetworkManager。

创建bond0链路聚合口:

nmcli connection add type bond ifname bond0 mode 0

nmcli connection add type bond-slave ifname ens35 master bond0

nmcli connection add type bond-slave ifname ens36 master bond0

注意事项:

配置完nmcli命令后,会自动生效,不需要重启网络服务,同时也会自动生成bond0和物理网卡的配置文件,如需更改其它网络参数,可在配置文件中修改,然后重启网络服务。示例如下:

查看自动生成的网卡配置文件:

二.team技术

2.1 team常用工作模式:

通过man teamd.conf命令查看team支持的工作模式,如图:

标识

名称

描述

对端交换机

activebackup

主备模式

一主一备

不需要

roundrobin

轮询模式

类似bond轮询

静态聚合

broadcast

广播模式

类似bond广播

静态聚合

loadbalance

负载均衡模式

类似bond负载均衡

静态聚合

lacp

LACP

支持LACP协议

LACP聚合

2.2命令行配置team

创建team0聚合网卡:

nmcli connection add ifname team0 con-name team0 type team config '{"runner": {"name": "loadbalance"}}'

添加物理网卡到team0中:

nmcli connection add ifname ens35 con-name team0-1 type team-slave autoconnect yes master team0

nmcli connection add ifname ens36 con-name team0-2 type team-slave autoconnect yes master team0

注意事项:

配置完成后,不需要重启网络服务,直接生效

会自动生成team0和物理网卡的配置文件,如需修改其它参数,请修改相应配置文件

配置team前,需要加载team模块,centos7默认已加载

2.3查看team的状态

nmcli connection show

ip addr show

teamdctl team0 state

2.4配置案例

自动生成的配置文件:

查看文件ifcfg-team0的文件内容:

查看网络连接:

查看team0状态:

查看物理网卡配置文件的内容: