一、bond的工作原理
所谓的bond就是将两块或两块以上网卡绑定同一个IP地址对外提供服务,从而实现负载均衡高可用。当然,直接给两块网卡设置同一IP地址 是不可能的。通过bonding,虚拟一块网卡对外提供连接, 物理网卡的被修改为相同的MAC地址。
二、bond工作模式分类
1)Mode 0 (balance-rr) 轮转(Round-robin)策略:从头到尾顺序的在每一个slave 接口上面发送数据包。本模式提供负载均衡和容错的能力
2)Mode 1 (active-backup) 活动-备份(主备)策略:在绑定中,只有一个slave被激活。 当且仅当活动的slave接口失败时才会激活其他slave。为了 避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见
3)Mode 3 (broadcast) 广播策略:在所有的slave接口上传送所有的报文。本模式提供 无容错能力。
三、实现步骤
1、为每个设备生成独立的接口配置文件,关闭NetworkManager服务。
chkconfig --level 3 NetworkManager off
2、添加网卡,配置静态联网(bond0)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<code>[root@centos6 network-scripts]</code><code># cat ifcfg-bond0</code>
<code>DEVICE=bond0</code>
<code>IPADDR=10.1.249.34</code>
<code>PRFIX=16</code>
<code>GATEWAY=10.1.249.254</code>
<code>DNS1=8.8.8.8</code>
<code>BONDING_OPTS=</code><code>"miimon=101 mode=0"</code> <code>#如果mode=0则为轮转模式,为1则为主备模式,为3则为广播策略</code>
<code>[root@centos6 network-scripts]</code><code># cat ifcfg-eth0</code>
<code>DEVICE=eth0</code>
<code>SLAVE=</code><code>yes</code>
<code>MASTER=bond0</code>
<code>[root@centos6 network-scripts]</code><code># cat ifcfg-eth1</code>
<code>DEVICE=eth1</code>
<code>[root@centos6 network-scripts]</code><code>#</code>
3、随意断开一网卡测试,并查看结果
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<code>[root@centos6 network-scripts]</code><code># !cat</code>
<code>cat</code> <code>/proc/net/bonding/bond0</code>
<code>Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)</code>
<code>Bonding Mode: fault-tolerance (active-backup)</code>
<code>Primary Slave: None</code>
<code>Currently Active Slave: eth0</code>
<code>MII Status: up</code>
<code>MII Polling Interval (ms): 102</code>
<code>Up Delay (ms): 0</code>
<code>Down Delay (ms): 0</code>
<code>Slave Interface: eth0</code>
<code>Speed: 1000 Mbps</code>
<code>Duplex: full</code>
<code>Link Failure Count: 0</code>
<code>Permanent HW addr: 00:0c:29:7c:55:8d</code>
<code>Slave queue ID: 0</code>
<code>Slave Interface: eth1</code>
<code>Permanent HW addr: 00:0c:29:7c:55:97</code>
<code>[root@centos6 ~]</code><code># cat /proc/net/bonding/bond0</code>
<code>Bonding Mode: load balancing (round-robin)</code>
<code>MII Polling Interval (ms): 100</code>
<code>Link Failure Count: 3</code>
<code>MII Status: down</code>
<code>Speed: Unknown</code>
<code>Duplex: Unknown</code>
<code>Bonding Mode: fault-tolerance (broadcast)</code>
<code>MII Polling Interval (ms): 101</code>
<code>Link Failure Count: 2</code>
<code>Link Failure Count: 1</code>
<code>[root@centos6 ~]</code><code>#</code>
<code>[root@centos6 network-scripts]</code><code># ifconfig</code>
<code>bond0 Link encap:Ethernet HWaddr 00:0C:29:7C:55:8D </code><code>#三的MAC地址信息是一样的,代表绑定为一块网卡</code>
<code> </code><code>inet addr:10.1.249.34 Bcast:10.255.255.255 Mask:255.0.0.0</code>
<code> </code><code>inet6 addr: fe80::20c:29ff:fe7c:558d</code><code>/64</code> <code>Scope:Link</code>
<code> </code><code>UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1</code>
<code> </code><code>RX packets:62258 errors:0 dropped:0 overruns:0 frame:0</code>
<code> </code><code>TX packets:7493 errors:0 dropped:0 overruns:0 carrier:0</code>
<code> </code><code>collisions:0 txqueuelen:0</code>
<code> </code><code>RX bytes:5599522 (5.3 MiB) TX bytes:716163 (699.3 KiB)</code>
<code>eth0 Link encap:Ethernet HWaddr 00:0C:29:7C:55:8D </code><code>#三的MAC地址信息是一样的,代表绑定为一块网卡</code>
<code> </code><code>UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1</code>
<code> </code><code>RX packets:32698 errors:0 dropped:0 overruns:0 frame:0</code>
<code> </code><code>TX packets:4300 errors:0 dropped:0 overruns:0 carrier:0</code>
<code> </code><code>collisions:0 txqueuelen:1000</code>
<code> </code><code>RX bytes:2915521 (2.7 MiB) TX bytes:393343 (384.1 KiB)</code>
<code>eth1 Link encap:Ethernet HWaddr 00:0C:29:7C:55:8D </code><code>#三的MAC地址信息是一样的,代表绑定为一块网卡</code>
<code> </code><code>RX packets:33832 errors:0 dropped:0 overruns:0 frame:0</code>
<code> </code><code>TX packets:3359 errors:0 dropped:0 overruns:0 carrier:0</code>
<code> </code><code>RX bytes:3059478 (2.9 MiB) TX bytes:339826 (331.8 KiB)</code>
<code>lo Link encap:Local Loopback</code>
<code> </code><code>inet addr:127.0.0.1 Mask:255.0.0.0</code>
<code> </code><code>inet6 addr: ::1</code><code>/128</code> <code>Scope:Host</code>
<code> </code><code>UP LOOPBACK RUNNING MTU:65536 Metric:1</code>
<code> </code><code>RX packets:425 errors:0 dropped:0 overruns:0 frame:0</code>
<code> </code><code>TX packets:425 errors:0 dropped:0 overruns:0 carrier:0</code>
<code> </code><code>RX bytes:42694 (41.6 KiB) TX bytes:42694 (41.6 KiB)</code>
截图演示:
1、关闭NetworkManager服务
<a href="http://s1.51cto.com/wyfs02/M02/86/C3/wKioL1fJjBTAPCF0AAAa-WuYsO4622.png" target="_blank"></a>
2、准备所有配置文件
3、重启网络服务
<a href="http://s4.51cto.com/wyfs02/M01/86/C3/wKiom1fJjbnBHirJAAAg6m8gc7s840.png" target="_blank"></a>
4、断开一网卡在物理机上ping本ip地址,测试主备功能
<a href="http://s5.51cto.com/wyfs02/M02/86/C3/wKioL1fJkMfiPbdCAADRtup6ssA496.png" target="_blank"></a>
结论:
同理可使用不同的bond工作模式进行测试,结果为,当处于mode0时为轮转模式有容错能力可坏一块网卡,当处于mode1时为主备模式有容错能力可坏一块网卡,当处于mode3时为广播策略模式,亲测,只要工作的网卡不坏则正常工作,当开始不是工作的网卡切换为工作网卡时则不能工作。
本文转自chengong1013 51CTO博客,原文链接:http://blog.51cto.com/purify/1845804,如需转载请自行联系原作者