一、网卡bonding简介
网卡绑定就是把多张物理网卡通过软件虚拟成一个虚拟的网卡,配置完毕后,所有的物理网卡的ip和mac将会变成相同的。多网卡同时工作可以提高网络速度,还可以实现网卡的负载均衡、冗余。
而从系统层面出发,实现多张物理网卡绑定到一个虚拟网卡的功能,在windows server下是用nic,而在linux下是使用bonding。
以下对linux环境下的bonding进行说明,含bond0 、bond1
二、bonding模式简介
bonding模式总共有7种(0-6),它们分别有以下这些特性:
mode 1、5、6不需要交换机设置
mode 0、2、3、4需要交换机设置
缺省情况下(即默认)使用mode 0
这里详细介绍一下bond 0和bond 1:
1 round-robin(mode=0)
轮转策略,轮流在每一个slave网卡上发送数据包,提供负载均衡和容错能力(对比bond 1,优点:网速更快,每张网卡都能用到)。
2 active-backup(mode=1)
主备策略,只有一个slave被激活,只有当active的slave的接口down时,才会激活其它slave接口。主备模式下发生一次故障切换,在新激活的slave接口上会发送一个或者多个gratuitous ARP。主salve接口上以及配置在接口上的所有VLAN接口都会发送gratuitous ARP,需要在这些接口上配置了至少一个IP地址。VLAN接口上发送的的gratuitous ARP将会附上适当的VLAN id。本模式提供容错能力(对比bond 0,优点:单张网卡同时运行,实现主备,即A网卡down,B网卡启用,A网卡up正常使用,B网卡闲置。缺点:网速更慢)。
三、bond1具体配置方法
1、进入网卡配置文件目录
cd /etc/sysconfig/network-scripts
2、对2个物理网卡的网口分别进行配置(p3p1 和 p3p2):
vim ifcfg-p3p1
# ifcfg-p3p1
TYPE=Ethernet
DEVICE=p3p1
ONBOOT=yes
BOOTPROTO=none # 关键!禁止DHCP
SLAVE=yes
MASTER=bond0
vim ifcfg-p3p2
# ifcfg-p3p2
TYPE=Ethernet
DEVICE=p3p2
ONBOOT=yes
BOOTPROTO=none # 关键!禁止DHCP
SLAVE=yes
MASTER=bond0
需注意的内容:
必须添加 BOOTPROTO=none:避免从属网卡单独获取IP地址,防止冲突。
删除 NAME 字段(非必须,但建议保留):某些版本中 NAME 可能与 DEVICE 冲突。
3、对bond0虚拟网卡进行配置
vim ifcfg-bond0
# ifcfg-bond0
TYPE=Bond # 修改为 Bond
NAME=bond0
DEVICE=bond0
BONDING_MASTER=yes # 关键!声明主接口
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.76.255.1
NETMASK=255.255.255.0
GATEWAY=10.76.255.254
BONDING_OPTS="mode=1 miimon=100"
需注意的内容:
修改 TYPE=Bond:明确指定为绑定接口类型(非必须但更规范)。
添加 BONDING_MASTER=yes:明确声明此接口为绑定主接口(部分系统需要)。
用vim新建配置文件。vim ifcfg-bond0。物理网卡的配置文件是原来存在的,虚拟bond 0网卡的配置文件是自己新建的。
4、重启网络服务
# 设置完成后,重启网络服务来使用bond0生效
/etc/init.d/network restart # bond模块会自动加载
5、查询ip和网关
ip a #查询ip
ip route #查询网关
ping 10.76.255.254 # 测试网关
6、验证手段
因为是用的bond1,实现了双网卡的网络绑定冗余,所以可以拔掉一根网线验证网络绑定是否成功:按照bond1的主备理论,任意拔掉一根网线,都不会断网(单张网卡同时运行,实现主备,即A网卡down,B网卡启用,A网卡up正常使用,B网卡闲置。)。
实操验证手段:拔A插A(网口上的网线),再拔B插B(网口上的网线),对网关的ping 10.76.255.254 的ping都不会中断。