Think Deep,Work Lean

linux的bonding技术

Posted on By zack

bonding技术

参考1 参考2 参考3 bonding(绑定)是一种linux系统下的网卡绑定技术,可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐量、实现网络冗余、负载等功能,有很多优势

bonding的七种工作模式:

bonding技术提供了七种工作模式,在使用的时候需要指定一种,每种有各自的优缺点.

模式 说明
balance-rr (mode=0) 默认, 有高可用 (容错) 和负载均衡的功能, 需要交换机的配置,每块网卡轮询发包 (流量分发比较均衡).
active-backup (mode=1) 只有高可用 (容错) 功能, 不需要交换机配置, 这种模式只有一块网卡工作, 对外只有一个mac地址。缺点是端口利用率比较低
balance-xor (mode=2) 不常用
broadcast (mode=3) 不常用
802.3ad (mode=4) IEEE 802.3ad 动态链路聚合,需要交换机配置,没用过
balance-tlb (mode=5) 不常用
balance-alb (mode=6) 有高可用 ( 容错 )和负载均衡的功能,不需要交换机配置 (流量分发到每个接口不是特别均衡)

具体的网上有很多资料,了解每种模式的特点根据自己的选择就行, 一般会用到0、1、4、6这几种模式。

环境

centos7
两张网卡,Vmare虚机请关机后,添加一张物理网卡
检查是否已安装bonding内核模块

modprobe --first-time bonding
modinfo bonding

关闭NetworkManager服务

systemctl stop NetworkManager.service && systemctl disable NetworkManager.service

创建频道绑定接口

/etc/sysconfig/network-scripts/ 目录中创建名为 ifcfg-bondN 的文件,使用接口号码替换 N,比如 0

可根据要绑定接口类型的配置文件编写该文件的内容,比如以太网接口。最主要的区别是 DEVICE 指令是 bondN(使用接口号码替换 N)和 TYPE=Bond。此外还设置 BONDING_MASTER=yes。

ifcfg-bond0 接口配置文件示例

#vi /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0  
IPADDR=192.168.56.13         #根据实际需要,填写需要绑定的ip地址掩码网关  
NETMASK=255.255.255.0
GATEWAY=192.168.56.2
ONBOOT=yes  
BOOTPROTO=none  
USERCTL=no  
BONDING_OPTS="mode=1 primary=eth0 updelay=1000 fail_over_mac=1  miimon=100"  #设置网卡的运行模式,此处配置的是mode=1   miimon是用来进行链路监测的。比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;模式1为主备模式。

#vi /etc/sysconfig/network-scripts/ifcfg-eth0  
DEVICE=eth0  
BOOTPROTO=none  
ONBOOT=yes  
MASTER=bond0  #很重要的配置,指定物理网卡eth0的Master是bond0  
SLAVE=yes     #指定自己是master的slave角色,受bond0控制

#vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1  
BOOTPROTO=none  
ONBOOT=yes  
MASTER=bond0 #很重要的配置,指定物理网卡eth0的Master是bond0  
SLAVE=yes    #指定自己是master的slave角色,受bond0控制

加载模块,让系统支持bonding

#vim /etc/modprobe.conf 增加一行如下配置:
alias bond0 bonding

测试

systemctl restart network
ip addr
cat /proc/net/bonding/bond0