天天看點

雙網卡綁定之負載均衡高可用(bond)

一、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,如需轉載請自行聯系原作者

繼續閱讀