来源:http://www.shyw.net/read-yx-tid-215064-1-1.html
http://www.mike.org.cn/articles/ubuntu-nic-balancing/
什么是bonding
Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余。
将多块网卡虚拟成为一块网卡,使其具有相同的IP地址,来实现提升主机的网络吞吐量或者是提高可用性,这种技术被称作bonding。这项技术其实在sun和cisco中已经存在,分别称为Trunking和etherchannel技术,在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 linkaggregation. IEEE 802.3ad 动态链接聚合:创建共享相同的速度和双工设置的聚合组。此模式提供了容错能力。每个设备需要基于驱动的重新获取速度和全双工支持;如果使用交换机,交换机也需启用 802.3ad 模式。
5:(balance-tlb) Adaptivetransmit load balancing(适配器传输负载均衡):通道绑定不需要专用的交换机支持。发出的流量根据当前负载分给每一个设备。由当前设备处理接收,如果接受的设备传不通就用另一个设备接管当前设备正在处理的mac地址。
6:(balance-alb) Adaptive loadbalancing: (适配器负载均衡):包括mode5,由 ARP 协商完成接收的负载。bonding驱动程序截获 ARP 在本地系统发送出的请求,用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。
Step1 安装软件
ifenslave一种粘合和分离式的软件,可以将数据包有效的分配到bonding驱动
1 | apt-getinstall ifenslave |
Step2 修改配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 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 down ifenslave bond0 -d eth0 eth1 bond-mode 0 bond-miimon 100 #配置bond的IP 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 |
这个时候会新建一个bond0虚拟设备,使用自己设置的IP地址,这个时候eth0和eth1工作模式变成了混杂模式,什么数据都收。但数据过来之后由ifenslave的底层驱动来作负载均衡,决定哪些数据规组里面的哪个成员(eth0,eth1)处理。
Step3 加载bonding模块
1 2 | vi/etc/modules bonding |
Step4
重启计算机,如果成功,bond0、eth0、eth1的MAC地址均会变成原来eth0的MAC。