网卡聚合bond

一、简介

网卡绑定(NIC bonding)或称为网卡聚合,是一种将多个物理网络接口组合成一个逻辑接口的技术,以实现冗余、增加带宽或负载均衡。当使用绑定模式时,通常会创建一个虚拟的网络接口,例如bond0,这个接口代表了绑定在一起的所有物理网卡。 实现原理: 网卡绑定是通过内核模块bonding来实现的。当两个或更多个物理网络接口被绑定到一起时,它们将共同作为一个单一的网络接口出现,这个接口可以是bond0bond1等等,具体取决于系统的配置。

二、配置模块

1.配置系统加载bond模块

bash 复制代码
#检查系统是否加载
lsmod | grep bonding
bash 复制代码
#如果没有输出,说明bonding模块尚未加载。你可以手动加载
sudo modprobe bonding
bash 复制代码
#设置开机自动加载bonding模块
echo "bonding" | sudo tee -a /etc/modules-load.d/bonding.conf

2.创建绑定接口

使用ifup命令或通过修改/etc/sysconfig/network-scripts/ifcfg-bond0文件来创建绑定接口

bash 复制代码
vim /etc/sysconfig/network-scripts/ifcfg-bond0
bash 复制代码
DEVICE=bond0
NAME=bond0
TYPE=Bond
ONBOOT=yes
BOOTPROTO=static
IPADDR=<IP address>
PREFIX=<CIDR prefix>
#其中`BONDING_OPTS`指定了绑定模式和监控间隔
BONDING_OPTS="mode=<mode> miimon=<interval>"

3.配置物理网卡

将物理网卡关联到绑定接口。物理网卡的配置文件(如ifcfg-eth0)应该指向bond0,并将其设置为SLAVE类型

bash 复制代码
vim /etc/sysconfig/network-scripts/ifcfg-eth0
bash 复制代码
DEVICE="eth0"
BOOTPROTO="none"
NAME="eth0"
ONBOOT="yes"
TYPE="Ethernet"
MASTER="bond0"
SLAVE="yes"

三、绑定模式详解

(1)Balance-RR (mode 0):轮询模式,数据包会被轮流发送到每个网卡。

  • 描述:在这种模式下,数据包会轮流发送到每个网卡。这意味着第一个数据包会通过第一个网卡发送,第二个数据包通过第二个网卡发送,依此类推。

  • 示例:在一个Web服务器集群中,为了平均分配网络流量,管理员可能会选择这种模式,以确保每个网卡都能均匀地处理网络请求。

(2)Active-Backup (mode 1):活动备份模式,只有一个网卡处于活跃状态,另一个作为备份。当主网卡故障时,备份网卡会接管流量。

  • 描述:此模式下,只有一个网卡处于活跃状态,负责所有网络通信。其他网卡作为备用,在主网卡发生故障时自动接管。

  • 示例:在关键的数据库服务器上,为了保证高可用性,管理员会选择此模式,这样如果主网卡失效,备用网卡可以立即接替工作,避免服务中断。

(3)Balance-XOR (mode 2):异或平衡模式,使用L2 MAC地址和传输的散列值决定哪个网卡发送数据包。

  • 描述:该模式使用L2 MAC地址和传输的散列值来决定哪个网卡发送数据包。这有助于在多路径环境中实现负载均衡。

  • 示例:在大型数据中心中,管理员可能使用这种模式来平衡多台服务器之间的网络负载,确保网络流量根据MAC地址和传输散列均匀分布。

(4)Broadcast (mode 3):广播模式,所有网卡都接收所有数据包,主要用于特殊应用。

  • 描述:在这种模式下,所有网卡都会接收到所有数据包。虽然不是用于负载均衡,但在某些需要所有网卡同时接收数据的特殊应用中很有用。

  • 示例:在需要监听所有网络通信的安全审计系统中,可能会启用广播模式,以便捕获所有进出的数据包进行分析。

(5)802.3ad (mode 4):基于IEEE标准的动态链路聚合,支持LACP协议。

  • 描述:此模式遵循IEEE 802.3ad标准,支持LACP(Link Aggregation Control Protocol)。它能自动检测并聚合网络链路,提高带宽和冗余。

  • 示例:在高性能计算集群中,管理员可能使用此模式来聚合多条链路,以实现更高的带宽和容错能力。

(6)Balance-TLB (mode 5):自适应传输负载平衡,适合于非交换网络环境。

  • 描述:这种模式适用于非交换网络环境,它能够根据当前网络负载动态调整数据包的分配。

  • 示例:在没有交换机的简单网络拓扑中,管理员可能会使用此模式,以优化不同网卡之间的负载。

(7)Balance-ALB (mode 6):自适应负载平衡,结合了5号模式和IPv4流量的负载平衡。

  • 描述:该模式结合了TLB模式和IPv4流量的负载平衡,能够智能地根据网络状况和流量类型进行负载分配。

  • 示例:在企业级服务器中,为了最大化网络效率和带宽利用,管理员可能会启用这种模式,它能够根据IPv4流量特性智能地平衡网络负载。

四、监控维护

bash 复制代码
#查看bond0的当前状态和统计信息
cat /proc/net/bonding/bond0

五、示例

bash 复制代码
cat ifcfg-bond0
bash 复制代码
DEVICE=bond0
BOOTPROTO=static
TYPE="Ethernet"
IPADDR=10.88.71.130
NETMASK=255.255.255.192
ONBOOT=yes
USERCTL=no
PEERDNS=no
BONDING_OPTS="miimon=100 mode=4 xmit_hash_policy=layer3+4"
bash 复制代码
cat ifcfg-eth0
bash 复制代码
DEVICE=eth0
TYPE="Ethernet"
HWADDR=E8:78:EE:38:19:36
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
PEERDNS=no
RX_MAX=`ethtool -g "$DEVICE" | grep 'Pre-set' -A1 | awk '/RX/{print $2}'`
RX_CURRENT=`ethtool -g "$DEVICE" | grep "Current" -A1 | awk '/RX/{print $2}'`
[[ "$RX_CURRENT" -lt "$RX_MAX" ]] && ethtool -G "$DEVICE" rx "$RX_MAX"
bash 复制代码
cat ifcfg-eth1
bash 复制代码
DEVICE=eth1
TYPE="Ethernet"
HWADDR=E8:78:EE:38:19:38
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
PEERDNS=no
RX_MAX=`ethtool -g "$DEVICE" | grep 'Pre-set' -A1 | awk '/RX/{print $2}'`
RX_CURRENT=`ethtool -g "$DEVICE" | grep "Current" -A1 | awk '/RX/{print $2}'`
[[ "$RX_CURRENT" -lt "$RX_MAX" ]] && ethtool -G "$DEVICE" rx "$RX_MAX"
相关推荐
Tipriest_17 分钟前
Linux Flathub软件管理方法 使用指南
linux·flathub
pirateeee19 分钟前
在Linux中创建LVGL应用
linux
Wezzer20 分钟前
企业级部署 (基于tomcat与nginx)
linux·运维·服务器
Teamhelper_AR31 分钟前
AR智能巡检:制造业运维效率提升的关键
运维·ar
是瑶瑶子啦43 分钟前
【AlphaFold3】网络架构篇(5)|Template embedding & Pairformer stack
网络·embedding
Johny_Zhao1 小时前
centos8安装部署spug自动化运维管理平台
linux·信息安全·云计算·shell·yum源·系统运维·centos8·spug
看星星的小王子1 小时前
Linux基础(三)——Bash基础
linux·运维·bash
sheepwjl1 小时前
《嵌入式C语言笔记(十七):进制转换、结构体与位运算精要》
linux·c语言·开发语言·笔记·算法
optimistic_chen1 小时前
【Java EE初阶 --- 网络原理】网络层---IP协议,数据链路层---以太网协议
网络·笔记·网络协议·tcp/ip·java-ee·文件io
枷锁—sha2 小时前
【BUUCTF系列】[HCTF 2018]WarmUp1
android·网络·web安全·网络安全