Linux的链路聚合通常有bond和team两种技术,这两种技术的主要区别有以下几点:
1. centos支持的版本不同。Bond作为一种老技术,几乎所有版本都支持,team是一种新技术,centos7及以后版本才支持。
2. 绑定的网卡数量不同。Bond最多支持2个网卡绑定,team最多支持8个网卡绑定。
下面详细介绍这两种技术
一.Bond技术
1.1 Bond简介
Bond是Linux内核提供的一种网络驱动,它可以将多个网络接口聚合为一个逻辑接口,从而提高网络带宽、实现负载均衡和故障转移。Bond支持以下七种模式:
最常用的几种模式:
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支持的工作模式,如图:
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状态:
查看物理网卡配置文件的内容: