邱立祥

——— 一个刚刚起步的 Linuxer

Cononico

2018年5月4日

Linux基础 网络相关>

linux下网卡bonding配置

章节

  1. bonding技术
  2. centos7配置bonding
  3. centos6配置bonding

一、bonding技术

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

bonding技术是linux系统内核层面实现的,它是一个内核模块(驱动)。使用它需要系统有这个模块, 我们可以modinfo命令查看下这个模块的信息, 一般来说都支持.

bonding的七种工作模式: 

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

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

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

 

二、Centos7配置bonding

环境:

服务器上两张物理网卡em1和em2, 通过绑定成一个逻辑网卡bond0,bonding模式选择mode6

注: ip地址配置在bond0上, 物理网卡不需要配置ip地址.

1、关闭和停止NetworkManager服务

ps: 一定要关闭,不关会对做bonding有干扰

2、加载bonding模块

没有提示说明加载成功, 如果出现  modprobe: ERROR: could not insert ‘bonding’: Module already in kernel  说明已经加载了这个模块, 就不用管了

也可以使用lsmod | grep bonding查看模块是否被加载

3、创建基于bond0接口的配置文件

修改成如下,根据实际情况:

上面的 BONDING_OPTS=”mode=6 miimon=100″  表示这里配置的工作模式是mode6(adaptive load balancing), miimon表示监视网络链接的频度 (毫秒), 我们设置的是100毫秒, 根据你的需求也可以指定mode成其它的负载模式。

4、修改em1接口的配置文件

修改成如下:

5、修改em2接口的配置文件

修改成如下:

6、测试

重启网络服务

查看bond0的接口状态信息  ( 如果报错说明没做成功,很有可能是bond0接口没起来)

通过ifconfig命令查看下网络的接口信息

测试网络高可用, 我们拔掉其中一根网线进行测试, 结论是:

  • 在本次mode=6模式下丢包1个, 恢复网络时( 网络插回去 ) 丢包在5-6个左右,说明高可用功能正常但恢复的时候丢包会比较多
  • 测试mode=1模式下丢包1个,恢复网络时( 网线插回去 ) 基本上没有丢包,说明高可用功能和恢复的时候都正常
  • mode6这种负载模式除了故障恢复的时候有丢包之外其它都挺好的,如果能够忽略这点的话可以这种模式;而mode1故障的切换和恢复都很快,基本没丢包和延时。但端口利用率比较低,因为这种主备的模式只有一张网卡在工作.

三、Centos6配置bonding

Centos6配置bonding和上面的Cetons7做bonding基本一样,只是配置有些不同.

1、关闭和停止NetworkManager服务

ps: 如果有装的话关闭它,如果报错说明没有装这个,那就不用管

2、加载bonding模块

3、创建基于bond0接口的配置文件

修改如下 (根据你的需要):

4、加载bond0接口到内核

修改成如下:

5、编辑em1、em2的接口文件

修改成如下:

修改成如下:

6、加载模块、重启网络与测试

查看bondo接口的状态


通过ifconfig命令查看下接口的状态,你会发现mode=1模式下所有的mac地址都是一致的,说明对外逻辑就是一个mac地址

进行高可用测试,拔掉其中的一条网线看丢包和延时情况, 然后在插回网线(模拟故障恢复),再看丢包和延时的情况.

一些参考:

http://www.tuicool.com/articles/b6ZVNr

http://www.cnblogs.com/dkblog/p/3613407.html  (bound的七种模式)

来一发吐槽