Linux CentOS stream9网卡绑定

网卡绑定,也称作网卡捆绑。就是将两个或者更多的网卡绑定成一个虚拟网卡,看作一个单独的以太网接口设备,具有相同的ip地址,可以实现本地网卡的冗余,带宽扩容和负载均衡。通过这种网卡绑定技术能增加网络服务的可靠性,增加网络带宽,为用户提供不间断的网络服务。

与LVM和Raid技术一样,把多块物理网卡构建为一块逻辑网卡。

应用此技术,可以达到如下功能:提高网卡的吞吐量;增强网络的高可用;同时也能实现负载均衡。

从centeos7开始,推荐使用team技术,代替使用多年的bond技术。centeos7中两项技术兼容,但有稍微不同。后期推出的新版本,以team应用为主。

本文分别讨论CentOS stream9系统中两者的实现过程。

一、绑定模式

由物理网卡转换为逻辑网卡的绑定模式共7种:0-6模式。

mode0:平衡轮询策略。此模式提供负载平衡和容错能力。

mode1:主备模式,具有容错功能。特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。

mode2:XOR Hash负载分担(异或平衡策略),具有负载平衡和容错功能。特点:基于指定的传输HASH策略传输数据包。

mode3:所有包从所有的接口发出,广播策略。特点:在每个slave接口上传输每个数据包,此模式提供了容错能力。

mode4:(802.3ad) IEEE 802.3ad 动态链接聚合。

mode5:适配器传输负载均衡,并行发送,无法并行接收。

mode6:在mode5的基础上并行发送,并行接收数据包。

最常用的是0、1和6三种模式。常用的网卡绑定技术为bond技术,bond技术常用的网卡绑定模式有3种。

  • mode0:启用全部网卡,提高带宽,自动备援,需要网络设备端做链路聚合支持。
  • mode1:只启用一张网卡,自动备援。
  • mode6:启用全部网卡,提高带宽,自动备援,不需要网络设备端做链路聚合支持。

二、bond绑定

提前在VMware虚拟机上添加两块网卡(ens37、ens38)。

1.加载模块

CentOS Stream 9系统默认没有加载bonding模块,在使用之前,先要加载bonding模块。

lsmod命令 英文全拼:list modules

执行lsmod指令,会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,因此在编译核心时,务须把全部的功能都放入核心。也可以将这些功能编译成一个个单独的模块,待需要时再分别载入。

lsmod | grep bonding #查看bonding模块

modprobe命令

modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。

modprobe bonding #加载bonding模块

相关的两个命令

安装模块:modprobe -v bonding

卸载模块:modprobe -v -r bonding

2.设置开机启动项

a.编辑文件

将bonding模块的加载命令写入/etc/rc.d/rc.local文件,设置开机启动项。

vim /etc/rc.d/rc.local

...

touch /var/lock/subsys/local

modprobe bonding

编辑效果截图:

b.添加权限

为文件添加执行权限

chmod +x /etc/rc.d/rc.local

3.创建虚拟设备

采用bond技术绑定双网卡时,需要添加一个名称为bond0的虚拟设备,并创建bond0的网卡配置文件。

nmcli connection add type bond ifname bond0 con-name bond0 bond.options "mode=balance-rr"

其中,不设置连接名称(不指定con-name bond0),系统会自动命名为bond-bond0

模式设置时,可以指定数字,如"mode=0"

为虚拟设备bond0指定静态IP地址(m是修改命令modify,其中跟连接名bond-bond0):

nmcli c m bond-bond0 ipv4.address 192.168.100.120/24 ipv4.gateway 192.168.100.254 ipv4.method manual

设置后可以在相应目录中查看配置文件:

如修改bond0执行其他模式,可以如下设置:

如果对命令比较熟悉,可以组合为一步完成。

4.添加两个/多个从属设备

将网卡ens37和ens38添加为bond0的从属网卡。

nmcli connection add type bond-slave ifname ens37 master bond0

nmcli c a type bond-slave ifname ens38 master bond0

其中,可以为连接创建名称(con-name bond-1/2)。不指定时,系统会自动创建名称为bond-slave-ens3*,其对应配置文件也以此名称为准。

设置后可以在相应目录中查看配置文件:

5.启用

执行命令,启动连接:

执行nmcli命令

6.验证

创建xshell连接

应用ping命令验证网络的连通性:

7.查看

a.查看物理网卡配置文件

b.查看bond0状态

cat /proc/net/bonding/bond0

三、team绑定

提前在VMware虚拟机上添加两块网卡(ens39、ens40)。

1.查看模式

lsmod |grep team

2.添加虚拟设备

与应用bond技术类似,我们再用team添加一个虚拟设备team0:

nmcli c a type team ifname team0 con-name team0

3.设定IP地址

nmcli c m team0 config '{"runner":{"name":"activebackup"}}' ipv4.addresses 192.168.100.180/24 ipv4.method manual ipv4.gateway 192.168.100.254

在设定IP地址时,设置网关和team模式。

同添加虚拟设备bond一样,可以一步完成。

4.添加从属设备

nmcli c a type team-slave ifname ens39 master team0 team.config '{"prio":100}'

nmcli c a type team-slave ifname ens40 master team0 team.config '{"prio":99}'

在指定从属设备时,可以为两个网卡指定优先级:

team.config 或 team-port.config

数值大的优先级高,是优先启用的。

5.启动

可执行重加载命令,或执行up命令

nmcli c r

nmcli c up team0

6.查看

与bond技术查看bond0状态不同,查看team0状态应用命令:

teamdctl team0 state

7.验证

停用当前活动的ens39。

查看状态,ens40立即启用。

如不指定网卡的优先级,再启用ens39,活动的网卡仍然不变,是ens40。

我们前面指定了优先级,ens39优于ens40,当再次启用ens39时,将会切换当前活动网卡。

小结

1.两项绑定技术设置模式不同:bond用"mode=*",而team用JSON键值对。

2.可以通过修改(bond)option.config(team) team.config改变模式。

3.设置虚拟设备后,即使没有设置好从属设备,也可以ping通虚拟设备设置的IP地址,这和其全局特性有关。可以具体测试一下效果。

4.在设置虚拟设备的模式时,可以设置miimon=100,这是指多久时间要检查网路一次,单位是ms(毫秒), 假设其中有一条网路断线,会在0.1秒内自动备援这是从属设备扫描网络连接的时间间隔。

5.对此两项技术比较熟悉,可以直接编写配置文件代替命令设置。

相关推荐
吃肉不能购34 分钟前
Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪
运维·yolo·自动化
亚远景aspice35 分钟前
ISO 21434标准:汽车网络安全管理的利与弊
网络·web安全·汽车
学Linux的语莫38 分钟前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
qq_312920111 小时前
docker 部署 kvm 图形化管理工具 WebVirtMgr
运维·docker·容器
踏雪Vernon1 小时前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式
linux·docker·容器·harmonyos
Onlooker1291 小时前
云服务器部署WebSocket项目
服务器
Estar.Lee1 小时前
时间操作[计算时间差]免费API接口教程
android·网络·后端·网络协议·tcp/ip
学Linux的语莫1 小时前
搭建服务器VPN,Linux客户端连接WireGuard,Windows客户端连接WireGuard
linux·运维·服务器
legend_jz1 小时前
【Linux】线程控制
linux·服务器·开发语言·c++·笔记·学习·学习方法
Komorebi.py1 小时前
【Linux】-学习笔记04
linux·笔记·学习