CentOS 7配置Bonding网卡绑定

正文共:1666 字 16 图,预估阅读时间:2 分钟

在网络中,日常为了提高可靠性,一般会配置链路聚合(Link Aggregation) ,同样的,在服务器上也有**网卡绑定(bonding)**的技术,将两个或多个物理网卡通过bonding技术绑定在一起,从而创建一个虚拟的、逻辑上的网络接口,实现网络接口的聚合。

做了网卡绑定之后,就可以提高网络冗余,实现高可用,如果其中一个网卡发生故障,服务能够无缝切换到其他正常工作的网卡上,确保网络连接不间断;结合不同的工作模式,还可以实现负载分担或增加网络带宽的效果,优化资源利用的同时,提高网络容量。

那Linux服务器该如何配置**网卡绑定(Bonding)**呢?我们以CentOS 7.9.2009来演示一下。

首先为服务器配置2个以上的网卡,比如就用图中的ens224和ens256来进行演示。

然后我们使用以下命令在系统中加载bonding模块。

nginx 复制代码
modprobe bonding

可以看到,配置之后,系统中出现了一个bond0网卡,说明bonding模块加载成功。

如果想使配置一直生效,则需要在Linux系统中创建一个配置文件,使系统在启动时自动加载bonding模块。

javascript 复制代码
echo "bonding" > /etc/modules-load.d/bonding.conf

在正式开始配置之前,我们先简单测试一下网络性能。

以142为服务端、141为客户端,使用iperf2进行测试,最大瞬时带宽为29.2 Gbps,综合带宽为27.6 Gbps。

将服务端和客户端对调一下。

同样使用iperf2进行测试,测得最大瞬时带宽为28.9 Gbps,综合带宽为28.4 Gbps,相差不大。

因为我们现在的操作基本都是通过直接编辑网络脚本进行静态配置**(** CentOS7多网卡配置(最小化安装)),为避免影响,我们将NetworkManager服务关闭并禁用。

properties 复制代码
systemctl stop NetworkManager
systemctl disable NetworkManager

然后我们进入到网卡配置文件路径/etc/sysconfig/network-scripts/目录下,可以看到,现在只有ens192和ens224的配置文件,其中ens224的配置文件也是我们手工创建的。

对应的,我们现在还缺少网卡ens256和bond0的配置文件。现在,我们首先修改ens224的配置文件,相比于正常的配置,我们需要移除IP地址相关配置,并添加网卡绑定的配置。

其中,MASTER=bond0表示该物理网卡是作为bonding主设备(bond0)的一个从属接口,将被加入到聚合网络接口bond0中,并按照bonding设定的模式参与工作;SLAVE=yes与前一配置相对应,表示该网卡是一个从属设备,作为一个slave加入到一个bonding组中,在系统启动时会自动将此网卡与对应的master(bond0)进行绑定。

然后我们将ens224的配置文件复制一份并做简单调整,即可得到ens256的配置文件。

现在,网卡ens224和ens256都已经被配置为bond0聚合接口的一部分,然后我们就可以配置bond0聚合接口了。在Linux bonding驱动中,主要通过TYPE=Bonding来指定接口为聚合接口,通过BONDING_OPTS来指定网卡绑定的工作模式,共有7种不同的工作模式,通过指定mode参数的值来进行确定。

1、mode=0:轮询均衡策略(Round Robin Policy,balance-rr),通过轮询的方式将数据包均匀分配到所有slave接口上,提供负载均衡但不保证连续的数据包会走同一条链路。

2、mode=1:主备模式(active-backup),只有一张网卡处于活动状态,另一张作为备份。当活动网卡出现故障时,备份网卡立即接管网络连接。

3、mode=2:XOR哈希策略(balance-xor),根据源MAC地址和目标MAC地址的XOR运算结果进行哈希,然后选择相应的接口发送数据包,可以实现负载均衡。

4、mode=3:广播模式(broadcast),所有的流量都会同时通过所有slave接口发送,主要用于某些需要复制数据流的特殊应用环境。

5、mode=4:IEEE 802.3ad协议(802.3ad,Link Aggregation Control Protocol,LACP),根据LACP协议与交换机协商形成聚合链路,支持动态链路聚合,通常用于带宽增加并提供高可用性。

6、mode=5:传输层感知负载均衡(Transmit Load Balancing,balance-tlb),不需要任何特定配置的交换机,但只能在从服务器向客户端单向发送数据时进行负载均衡。

7、mode=6:带接收负载均衡的传输层感知负载均衡(Adaptive Load Balancing,balance-alb),这是TLB模式的一个增强版,在TLB的基础上增加了基于ARP响应的接收负载均衡功能。

所以,我们在和交换机对接时,一般需要配置为mode=4,而我们现在是主机之间的互联,则可以使用mode=0进行轮询负载。新建一份bond0的配置文件ifcfg-bond0,写入以下内容:

ini 复制代码
TYPE="Bonding"
BOOTPROTO="none"
DEFROUTE="no"
IPV4_FAILURE_FATAL="no"
NAME="bond0"
DEVICE="bond0"
ONBOOT="yes"
BONDING_OPTS="mode=0 miimon=100"
IPADDR="11.1.1.141"
PREFIX="24"

BONDING_OPTS中还有一项配置,miimon是链路监测间隔,miimon=100表示每100毫秒检查一次链路状态。

最后,重启网络服务来使变更生效。

nginx 复制代码
systemctl restart network

同理,我们完成142主机的配置。

测试一下业务联通性。

小测一下转发性能。

应该是虚拟化的原因,转发性能不升反降,从27.6 Gbps降到了24.3 Gbps。将服务端和客户端对调一下。

结果为23.4 Gbps,差别不大。

然后我们打1分钟,中间断开其中一条链路,看看业务会不会断。

因为虚拟化的原因,我先断开的141的ens224接口,此时142感知不到状态变化,所以传输接近中断;在断开142的ens224接口之后,此时流量负载到ens256接口,传输恢复,所以链路备份还是有效果的。

结论,虚拟化环境可以配置bonding接口绑定,可以展示链路备份的效果,但是无法体现传输性能的提升。

长按二维码

关注我们吧


<>

PVE8.0-2安装使用快速指导
<> <>

借PVE8.0的Debian 12系统配置一下NFS服务器
<> <>

不想用了PVE了怎么办?那就迁移到VMware呗!
<> <>

准备搞OpenStack了,先装一台最新的Ubuntu 23.10
<> <>

如何在Ubuntu 23.10部署KVM并创建虚拟机?
<> <>

Ubuntu部署OpenStack踩坑指南:还要看系统版本?
<> <>

在线文档频繁故障不稳定,其实可以自己搭一个Etherpad在线文档
<> <>

如何手工获取并更新ESXi中macOS的VMware Tools版本
<> <>

如何在最新版的HCL 5.10.0中导入NFV镜像?
<> <>

手撸一个自动搭建openVPN服务器的SHELL脚本
<> <>

ESXi的超线程状态为"已禁用",是谁动了我的服务器?
<> <>

添加E1000网卡进行测试,只有VMXNET3性能的四分之一
<> <>

TensorFlow识别GPU难道就这么难吗?还是我的GPU有问题?
<> <>

同一个问题,Gemini、ChatGPT、Copilot、通义千问和文心一言会怎么答?
<>

相关推荐
且从容.42 分钟前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道1 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
讯捷蓝达3 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
大白玉米4 小时前
MoxPlayer 弹幕播放器源码智能解析线路管理系统自研内核
php
且从容.4 小时前
ubuntu安装flink
linux·ubuntu·flink
数字新视界5 小时前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
爱和冰阔落6 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨6 小时前
WSL2的安装与使用
linux·wsl
微小的鱼6 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng6 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器