注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

linux 下多网卡聚合的原理与实施(实施工具:ifenslave)  

2013-08-10 01:35:40|  分类: 应用负载均衡 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。其实这项技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding。

bonding技术的最早应用是在集群--beowulf上,为了提高集群节点间的数据传输而设计的。

bonding 的原理,什么是bonding需要从网卡的混杂(promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧:

比如说tcpdump,就是运行在这个模式下。

bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相同(以编号小网卡为准),可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理。

linux 下多网卡聚合的原理与实施(实施工具:ifenslave) - lzdzhy-itoedr - itoedr的it学苑
 


####接下来是创建步骤:


  #sudo vim /etc/network/interfaces (这是ubuntu linux系统下的配置方式)

注:若有多卡网卡绑定,则如#开头,类似添加eth2,eth3...


 #ifenslave 是一款linux下的网卡负载均衡工具


  up ifenslave bond0 eth0 eth1
  down ifenslave -d bond0 eth0 the1


   //新建bond0虚拟设备,使用我们设置的IP,此时eth0,eth1的工作模式变成了混杂模式,什么数据都收(混杂模式)


#sudo vi /etc/modules // 加载模块列表



什么是bonding
  Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余。
   
  bonding的工作模式

   bonding一共有7种工作模式
   0:(balance-rr) Round-robin policy: (平衡轮询策略):传输数据包顺序是依次传输,直到最后一个传输完毕, 此模式提供负载平衡和容错能力。
 1:(active-backup) Active-backup policy:(活动备份策略):只有一个设备处于活动状态。 一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。 此模式提供了容错能力。
2:(balance-xor) XOR policy:(平衡策略):传输根据[(源MAC地址xor目标MAC地址)mod 设备数量]的布尔值选择传输设备。 此模式提供负载平衡和容错能力。
3:(broadcast) Broadcast policy:(广播策略):将所有数据包传输给所有设备。 此模式提供了容错能力。
 4:(802.3ad) IEEE 802.3ad Dynamic link aggregation. IEEE 802.3ad 动态链接聚合:创建共享相同的速度和双工设置的聚合组。此模式提供了容错能力。每个设备需要基于驱动的重新获取速度和全双工支持;如果使用交换机,交换机也需启用 802.3ad 模式。
 5:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡):通道绑定不需要专用的交换机支持。发出的流量根据当前负载分给每一个设备。由当前设备处理接收,如果接受的设备传不通就用另一个设备接管当前设备正在处理的mac地址。
 6:(balance-alb) Adaptive load balancing: (适配器负载均衡):包括mode5,由 ARP 协商完成接收的负载。bonding驱动程序截获 ARP 在本地系统发送出的请求,用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。



bonding miimon=100 mode=1
                注:miimon=100 mode=1 为可选参数,  miimon是毫秒数,用来进行监测链路稳定的。miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路。


mode的值表示工作模式说明
  mode=0 (也可以写成mode=round-robin)表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。

mode=1也可以写成mode=active-backup)表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份. 

其它模式如上。



  3.#sudo modprobe bonding //加载bondig模块

    或:

vi /etc/modules  #实现永久性自动载入模块

bonding


4.#sudo /etc/init.d/networking restart //重启网卡
最终效果:

linux 下多网卡聚合的原理与实施(实施工具:ifenslave) - lzdzhy-itoedr - itoedr的it学苑
 

********************************

ubuntu下的配置实例:

vi /etc/network/interfaces 

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).  

# The loopback network interface auto lo iface lo inet loopback 

#注释掉原来的eth0,eth1配置

# The primary network interface

#auto eth0

#iface eth0 inet dhcp  #也可以是其它情况


#auto eth1

#iface eth1 inet dhcp  #也可以是其它情况


  #这里配置模式为轮询策略,模式代号是0,轮询间隔100ms(毫秒)。

up ifenslave bond0 eth0 eth1 #使用ifenslave建立bound0设备口,同时将eth0与eth1都绑成自己的设备负载端口

down ifenslave bond0 -d eth0 eth1  #

bond-mode 0  #也可选别的模式

bond-miimon 100  


#配置bond的IP   #这里语法与网桥的自动加载有相似之处(brctl ??)

auto bond0    #

iface bond0 inet static  #静态地址

address 192.168.0.201

netmask 255.255.255.0

gateway 192.168.0.1


#配置bond的虚拟IP(非必须)

auto bond0:1

iface bond0:1 inet static

address 192.168.1.201

netmask 255.255.255.0

gateway 192.168.1.1

  ================================

加载bonding模块

vi /etc/modules

bonding

================================

重启计算机或重启网卡

1)shutdown -r now

2)sudo /etc/init.d/networking restart  //重启网卡 (service networking restart)


================================

如果成功,bond0、eth0、eth1的MAC地址均会变成原来eth0的MAC(eth0 此外最小ID)

  评论这张
 
阅读(240)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017