网卡绑定,也称作网卡捆绑。就是将两个或者更多的网卡绑定成一个虚拟网卡,看作一个单独的以太网接口设备,具有相同的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种。
提前在VMware虚拟机上添加两块网卡(ens37、ens38)。
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
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
采用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执行其他模式,可以如下设置:
如果对命令比较熟悉,可以组合为一步完成。
将网卡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*,其对应配置文件也以此名称为准。
设置后可以在相应目录中查看配置文件:
执行命令,启动连接:
执行nmcli命令
创建xshell连接
应用ping命令验证网络的连通性:
a.查看物理网卡配置文件
b.查看bond0状态
cat /proc/net/bonding/bond0
提前在VMware虚拟机上添加两块网卡(ens39、ens40)。
lsmod |grep team
与应用bond技术类似,我们再用team添加一个虚拟设备team0:
nmcli c a type team ifname team0 con-name team0
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一样,可以一步完成。
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
数值大的优先级高,是优先启用的。
可执行重加载命令,或执行up命令
nmcli c r
nmcli c up team0
与bond技术查看bond0状态不同,查看team0状态应用命令:
teamdctl team0 state
停用当前活动的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.对此两项技术比较熟悉,可以直接编写配置文件代替命令设置。