CentOS 7配置Bonding网卡绑定

d0dc9b23194b06e7a1d2d41861698d2a.gif

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

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

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

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

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

CentOS 7配置Bonding网卡绑定_第1张图片

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

modprobe bonding

CentOS 7配置Bonding网卡绑定_第2张图片

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

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

echo "bonding" > /etc/modules-load.d/bonding.conf

d6ffceabf7b0f668e21c163ff427a8f3.png

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

CentOS 7配置Bonding网卡绑定_第3张图片

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

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

CentOS 7配置Bonding网卡绑定_第4张图片

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

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

systemctl stop NetworkManager
systemctl disable NetworkManager

CentOS 7配置Bonding网卡绑定_第5张图片

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

CentOS 7配置Bonding网卡绑定_第6张图片

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

CentOS 7配置Bonding网卡绑定_第7张图片

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

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

CentOS 7配置Bonding网卡绑定_第8张图片

现在,网卡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,写入以下内容:

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"

CentOS 7配置Bonding网卡绑定_第9张图片

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

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

systemctl restart network

CentOS 7配置Bonding网卡绑定_第10张图片

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

CentOS 7配置Bonding网卡绑定_第11张图片

测试一下业务联通性。

CentOS 7配置Bonding网卡绑定_第12张图片

小测一下转发性能。

CentOS 7配置Bonding网卡绑定_第13张图片

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

CentOS 7配置Bonding网卡绑定_第14张图片

结果为23.4 Gbps,差别不大。

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

CentOS 7配置Bonding网卡绑定_第15张图片

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

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

78a652fd88543f88fc8659840fca5b64.gif

长按二维码
关注我们吧

CentOS 7配置Bonding网卡绑定_第16张图片

5c348ac00e0bb5ef65d46de697091d5f.png

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、通义千问和文心一言会怎么答?

你可能感兴趣的:(centos,php,linux,运维,服务器)