一、用bond方式
(1)bond幾種主要模式介紹
第一種模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡掄循環(huán)策略)
特點:傳輸數(shù)據(jù)包順序是依次傳輸(即:第1個包走eth0,下一個包就走eth1….一直循環(huán)下去,直到最后一個傳輸完畢),此模式提供負載平衡和容錯能力;但是我們知道如果一個連接或者會話的數(shù)據(jù)包從不同的接口發(fā)出的話,中途再經(jīng)過不同的鏈路,在客戶端很有可能會出現(xiàn)數(shù)據(jù)包無序到達的問題,而無序到達的數(shù)據(jù)包需要重新要求被發(fā)送,這樣網(wǎng)絡的吞吐量就會下降
第二種模式:mod=1,即: (active-backup) Active-backup policy(主-備份策略)
特點:只有一個設(shè)備處于活動狀態(tài),當一個宕掉另一個馬上由備份轉(zhuǎn)換為主設(shè)備。mac地址是外部可見得,從外面看來,bond的MAC地址是唯一的,以避免switch(交換機)發(fā)生混亂。此模式只提供了容錯能力;由此可見此算法的優(yōu)點是可以提供高網(wǎng)絡連接的可用性,但是它的資源利用率較低,只有一個接口處于工作狀態(tài),在有 N 個網(wǎng)絡接口的情況下,資源利用率為1/N
第三種模式:mod=2,即:(balance-xor) XOR policy(平衡策略)
特點:基于指定的傳輸HASH策略傳輸數(shù)據(jù)包。缺省的策略是:(源MAC地址 XOR 目標MAC地址) % slave數(shù)量。其他的傳輸策略可以通過xmit_hash_policy選項指定,此模式提供負載平衡和容錯能力
第四種模式:mod=3,即:broadcast(廣播策略)
特點:在每個slave接口上傳輸每個數(shù)據(jù)包,此模式提供了容錯能力
第五種模式:mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 動態(tài)鏈接聚合)
特點:創(chuàng)建一個聚合組,它們共享同樣的速率和雙工設(shè)定。根據(jù)802.3ad規(guī)范將多個slave工作在同一個激活的聚合體下。
外出流量的slave選舉是基于傳輸hash策略,該策略可以通過xmit_hash_policy選項從缺省的XOR策略改變到其他策略。需要注意的 是,并不是所有的傳輸策略都是802.3ad適應的,尤其考慮到在802.3ad標準43.2.4章節(jié)提及的包亂序問題。不同的實現(xiàn)可能會有不同的適應 性。
必要條件:
條件1:ethtool支持獲取每個slave的速率和雙工設(shè)定
條件2:switch(交換機)支持IEEE 802.3ad Dynamic link aggregation
條件3:大多數(shù)switch(交換機)需要經(jīng)過特定配置才能支持802.3ad模式
第六種模式:mod=5,即:(balance-tlb) Adaptive transmit load balancing(適配器傳輸負載均衡)
特點:不需要任何特別的switch(交換機)支持的通道bonding。在每個slave上根據(jù)當前的負載(根據(jù)速度計算)分配外出流量。如果正在接受數(shù)據(jù)的slave出故障了,另一個slave接管失敗的slave的MAC地址。
該模式的必要條件:ethtool支持獲取每個slave的速率。
第七種模式:mod=6,即:(balance-alb) Adaptive load balancing(適配器適應性負載均衡)
特點:該模式包含了balance-tlb模式,同時加上針對IPV4流量的接收負載均衡(receive load balance, rlb),而且不需要任何switch(交換機)的支持。接收負載均衡是通過ARP協(xié)商實現(xiàn)的。bonding驅(qū)動截獲本機發(fā)送的ARP應答,并把源硬件地址改寫為bond中某個slave的唯一硬件地址,從而使得不同的對端使用不同的硬件地址進行通信。
二、配置bond
(1)實驗環(huán)境
物理網(wǎng)口:eth0,eth1
綁定后虛擬口:bond0
IP地址:192.168.128.13
網(wǎng)關(guān):192.168.128.2
掩碼:255.255.255.0
DNS:202.96.128.166
(2)查看并加載bound
[root@localhost ~]# modprobe –first-time bonding
[root@localhost ~]# lsmod|grep bonding
bonding 132885 0
加載成功后,可以查看到bond0 端口
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:94:b5:29 brd ff:ff:ff:ff:ff:ff
inet 192.168.128.13/24 brd 192.168.128.255 scope global eth0
inet6 fe80::20c:29ff:fe94:b529/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:0c:29:94:b5:33 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
link/ether 66:51:2f:37:a2:31 brd ff:ff:ff:ff:ff:ff
(3)配置虛擬端口bound0
在/etc/sysconfig/network-scripts/目錄下,創(chuàng)建ifcfg-bond0文件
vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.128.13
NETMASK=255.255.255.0
GATEWAY=192.168.128.2
DNS1=202.96.128.166
(4)配置物理網(wǎng)卡eth0,eth1
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
(5)修改modprobe相關(guān)設(shè)定文件
vim /etc/modprobe.d/bonding.conf
alias bond0 binding
options bond0 miimon=100 mode=0 //模式0,miimon是用來進行鏈路監(jiān)測的,后面指定的是檢查的間隔時間,單位是ms
(6)重啟并測試
[root@localhost network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
link/ether 00:0c:29:94:b5:29 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
link/ether 00:0c:29:94:b5:29 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:0c:29:94:b5:29 brd ff:ff:ff:ff:ff:ff
inet 192.168.128.13/24 brd 192.168.128.255 scope global bond0
inet6 fe80::20c:29ff:fe94:b529/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
查看bonud工作狀況:
[root@localhost bonding]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 200
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:94:b5:29
Slave queue ID: 0
Slave Interface: eth1
MII Status: down
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:94:b5:33
Slave queue ID: 0