一、Bond网卡
1.1 Bond网卡概述
Bond网卡是指使用 Linux 系统中的 Bonding 技术创建的虚拟网络接口。
Bonding 技术允许将多个物理网卡(也称为接口或端口)绑定在一起,形成一个虚拟的网络接口,以增加网络带宽、提高网络容错性和负载均衡能力。
在 Linux 中,可以使用工具如 ifenslave
、ifconfig
、ip
等来配置和管理 Bonding 接口。
1.2 Linux网卡的绑定模式
-
mode=0 :
load-balancing
负载均衡方式,两个网卡都工作,最简单常用 -
mode=1 :冗余模式,只有主工作,从监听,主挂了,从才工作
-
mode=2 :平衡策略,既能提供负载均衡,也有容错能力,冗余的升级版
-
mode=3 :网卡的广播策略,极少用
-
mode=4 :动态链聚合(连接交换即)
-
mode=5 :也是负载均衡模式,但是需要额外插件:ethtool支持每个slave的速率(定制模式,很少见)
-
mode=6 :适配器的负载均衡,也很少用
二、配置简单Bond网卡
要求:新增一个网络适配器到虚拟机,配置网卡,使虚拟机的两个网卡实现Bond网卡。
共用IP地址:20.0.0.30
实现:
-
新增网卡后,
ifconfig
查看新增网卡的设备名为ens36
-
对两个网卡的配置文件进行修改:
ens33
ens36
ens33
:bashvim /etc/sysconfig/network-scripts/ifcfg-ens33 #配置文件内容如下 TYPE=Ethernet DEVICE=ens33 #当前设备名 ONBOOT=yes BOOTPROTO=none #不设置IP地址 MASTER=bond0 #主设备为bond0 SLAVE=yes #从属于bond0 USERCTL=no #禁止普通用户启用/禁止设备
ens36
bashvim /etc/sysconfig/network-scripts/ifcfg-ens36 #配置文件内容如下 TYPE=Ethernet DEVICE=ens36 #当前设备名 ONBOOT=yes BOOTPROTO=none #不设置IP地址 MASTER=bond0 #主设备为bond0 SLAVE=yes #从属于bond0 USERCTL=no #禁止普通用户启用/禁止设备
-
创建并编辑虚拟网卡bond0
BASHvim /etc/sysconfig/network-scripts/ifcfg-bond0 #配置文件内容如下 TYPE=Ethernet DEVICE=bond0 #虚拟网卡设备bond0 ONBOOT=yes BOOTPROTO=static #静态IP地址 IPADDR=20.0.0.30 NETMASK=255.255.255.0 GATEWAY=20.0.0.2 DNS1=218.2.135.1 BONDING_OPTS="miimon=100 mode=0 fail_over_mac=1"
最后一行的解释:绑定的模式和选项
BONDING_OPTS="miimon=100 mode=0 fail_over_mac=1"
-
miimon=100 :检查所有从设备的连接状态,100表示100ms,即每隔100ms检查从设备网卡的连接状态
-
mode=0 :绑定网卡的mode=0
-
fail_over_mac=1 :表示在故障切换时,备用接口会获取主接口的MAC地址,减少切换过程中可能出现的故障。如果计算机连接交换机,交换机不需要重新学习MAC地址。ens33,ens36都知道对方的MAC地址。
刷新bond配置,重启网卡
bash
modprobe bonding #刷新bond配置
systemctl restart network
ifconfig
查看网卡信息
可以看到:ens33
和ens36
都没有IP地址,它们共用bond0
的IP地址。
测试连通性、查看数据流向。
tcpdump -i ens33
tcpdump -i ens36
可以看到两个网卡都有数据,实现简单的负载均衡。
tcpdump
:Linux自带的抓包工具
-i
:接设备名,抓取指定设备的数据包流量
也可以ifdown 关掉一个网卡,网络依然可以联通。