您好,登錄后才能下訂單哦!
下文給大家帶來通過bonding技術應該如何實現網絡負載均衡及冗余,希望能夠給大家在實際運用中帶來一定的幫助,負載均衡涉及的東西比較多,理論也不多,網上有很多書籍,今天我們就用億速云在行業內累計的經驗來做一個解答。
第二種模式:mod=1,即: (active-backup) Active-backup policy(主-備份策略) 特點:只有一個設備處于活動狀態,當 一個宕掉另一個馬上由備份轉換為主設備。mac地址是外部可見得,從外面看來,bond的MAC地址是唯一的,以避免switch(交換機)發生混亂。此模式只提供了容錯能力;由此可見此算法的優點是可以提供高網絡連接的可用性,但是它的資源利用率較低,只有一個接口處于工作狀態,在有 N 個網絡接口的情況下,資源利用率為1/N
第三種模式:mod=2,即:(balance-xor) XOR policy(平衡策略)
特點:基于指定的傳輸HASH策略傳輸數據包。缺省的策略是:(源MAC地址 XOR 目標MAC地址) % slave數量。其他的傳輸策略可以通過xmit_hash_policy選項指定,此模式提供負載平衡和容錯能力
第四種模式:mod=3,即:broadcast(廣播策略)
特點:在每個slave接口上傳輸每個數據包,此模式提供了容錯能力
第五種模式:mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 動態鏈接聚合)
特點:創建一個聚合組,它們共享同樣的速率和雙工設定。根據802.3ad規范將多個slave工作在同一個激活的聚合體下。
外 出流量的slave選舉是基于傳輸hash策略,該策略可以通過xmit_hash_policy選項從缺省的XOR策略改變到其他策略。需要注意的是, 并不是所有的傳輸策略都是802.3ad適應的,尤其考慮到在802.3ad標準43.2.4章節提及的包亂序問題。不同的實現可能會有不同的適應性。 必要條件:
條件1:ethtool支持獲取每個slave的速率和雙工設定
條件2:switch(交換機)支持IEEE 802.3ad Dynamic link aggregation
條件3:大多數switch(交換機)需要經過特定配置才能支持802.3ad模式
第六種模式:mod=5,即:(balance-tlb) Adaptive transmit load balancing(適配器傳輸負載均衡)
特點:不需要任何特別的switch(交換機)支持的通道bonding。在每個slave上根據當前的負載(根據速度計算)分配外出流量。如果正在接受數據的slave出故障了,另一個slave接管失敗的slave的MAC地址。 該模式的必要條件:ethtool支持獲取每個slave的速率
第七種模式:mod=6,即:(balance-alb) Adaptive load balancing(適配器適應性負載均衡)
特點:該模式包含了balance-tlb模式,同時加上針對IPV4流量的接收負載均衡(receive load balance, rlb),而且不需要任何switch(交換機)的支持。接收負載均衡是通過ARP協商實現的。bonding驅動截獲本機發送的ARP應答,并把源硬件地址改寫為bond中某個slave的唯一硬件地址,從而使得不同的對端使用不同的硬件地址進行通信。
來 自云服務器端的接收流量也會被均衡。當本機發送ARP請求時,bonding驅動把對端的IP信息從ARP包中復制并保存下來。當ARP應答從對端到達 時,
bonding驅動把它的硬件地址提取出來,并發起一個ARP應答給bond中的某個slave。使用ARP協商進行負載均衡的一個問題是:每次廣播 ARP請求時都會使用bond的硬件地址,因此對端學習到這個硬件地址后,接收流量將會全部劉翔當前的slave。這個問題通過給所有的對端發送更新 (ARP應答)來解決,應答中包含他們獨一無二的硬件地址,從而導致流量重新分布。當新的slave加入到bond中時,或者某個未激活的slave重新 激活時,接收流量也要重新分布。接收的負載被順序地分布(round robin)在bond中最高速的slave上
當某個鏈路被重新接上,或者 一個新的slave加入到bond中,接收流量在所有當前激活的slave中全部重新分配,通過使用指定的MAC地址給每個 client發起ARP應答。下面介紹的updelay參數必須被設置為某個大于等于switch(交換機)轉發延時的值,從而保證發往對端的ARP應答 不會被switch(交換機)阻截。 必要條件:
條件1:ethtool支持獲取每個slave的速率;
條件2:底層驅動支持設置 某個設備的硬件地址,從而使得總是有個
slave(curr_active_slave)使用bond的硬件地址,同時保證每個bond 中的slave都有一個唯一的硬件地址。如果curr_active_slave出故障,它的硬件地址將會被新選出來的 curr_active_slave接管
其實mod=6與mod=0的區別:mod=6,先把eth0流量占滿,再占
eth3,....ethX;而mod=0的話,會發現2個口的流量都很穩定,基本一樣的帶寬。而mod=6,會發現第一個口流量很高,第2個口只占了小部分流量
2、bonding驅動選項
Bonding驅動的選項是通過在加載時指定參數來設定的。可以通過insmod或modprobe命令的命令行參數來指定,但通常在/etc/modprobe.conf配置文件中指定,或其他的配置文件中
下 面列出可用的bonding驅動參數。如果參數沒有指定,驅動會使用缺省參數。剛開始配置bond的時候,建議在一個終端窗口中運行"tail -f
/var/log/messages"來觀察bonding驅動的錯誤信息【譯注:/var/log/messages一般會打印內核中的調試信息】
有些參數必須要正確的設定,比如miimon、arp_interval和arp_ip_target,否則在鏈接故障時會導致嚴重的網絡性能退化。很少的設備不支持miimon,因此沒有任何理由不使用它們。
有些選項不僅支持文本值的設定,出于兼容性的考慮,也支持數值的設定,比如,"mode=802.3ad"和"mode=4"效果是一樣的
具體的參數列表: 1)primay
指 定哪個slave成為主設備(primary device),取值為字符串,如eth0,eth3等。只要指定的設備可用,它將一直是激活的slave。只有在主設備(primary device)斷線時才會切換設備。這在希望某個slave設備優先使用的情形下很有用,比如,某個slave設備有更高的吞吐率
注意: primary選項只對active-backup模式有效
2)updelay
指定當發現一個鏈路恢復時,在激活該鏈路之前的等待時間,以毫秒計算。該選項只對miimon鏈路偵聽有效。updelay應該是miimon值的整數倍,如果不是,它將會被向下取整到最近的整數。缺省值為0
3)arp_interval
指 定ARP鏈路監控頻率,單位是毫秒(ms)。如果APR監控工作于以太兼容模式(模式0和模式2)下,需要把switch(交換機)配置為在所有鏈路上均 勻的分發網絡包。如果switch(交換機)被配置為以XOR方式分發網絡包,所有來自ARP目標的應答將會被同一個鏈路上的其他設備收到,這將會導致其 他設備的失敗。ARP監控不應該和miimon同時使用。設定為0將禁止ARP監控。缺省值為0
4)arp_ip_target
指 定一組IP地址用于ARP監控的目標,它只在arp_interval > 0時有效。這些IP地址是ARP請求發送的目標,用于判定到目標地址的鏈路是否工作正常。該設定值為ddd.ddd.ddd.ddd格式。多個IP地址通 過逗號分隔。至少指定一個IP地址。最多可以指定16個IP地址。缺省值是沒有IP地址
5)downdelay
指定一個時間,用于在發現鏈路故障后,等待一段時間然后禁止一個slave,單位是毫秒(ms)。該選項只對miimon監控有效。downdelay值應該是miimon值的整數倍,否則它將會被取整到最接近的整數倍。缺省值為0
6)lacp_rate
指定在802.3ad模式下,我們希望的鏈接對端傳輸LACPDU包的速率。可能的選項:
(1)slow 或者 0
請求對端每30s傳輸LACPDU (2)fast 或者 1
請求對端每1s傳輸LACPDU (3)缺省值是slow
7)max_bonds
為bonding驅動指定創建bonding設備的數量。比如:如果max_bonds為3,而且bonding驅動還沒有加載,那么bond0,bond1,bond2將會被創建。缺省值為1
6)miimon
指定MII鏈路監控頻率,單位是毫秒(ms)。這將決定驅動檢查每個slave鏈路狀態頻率
0表示禁止MII鏈路監控。100可以作為一個很好的初始參考值。下面的
use_carrier選項將會影響如果檢測鏈路狀態。更多的信息可以參考“高可靠性”章節。缺省值為0
8)mode
指定bonding的策略。缺省是balance-rr (round robin,循環賽)。可選的mode包括:0,1,2,3,4,5,6
3、bonding鏈路監測方法
官方文檔里說有兩種針對鏈路的監測方法(注意:這兩種監測不能同時使用)
第一種:miimon(這種方法是最常見的,此方法使用系統的mii-tool命令進行監測)
模塊加載設置(/etc/modprobe.conf): # Start of bonding configure alias bond0 bonding
options bond0 miimon=100 mode=1
注意:使用cat /proc/net/bonding/bond0,可查看Bonding Mode: load balancing (round-robin)狀態
options bond0 miimon=100 mode=0
注意:使用cat /proc/net/bonding/bond0,可查看Bonding Mode: load balancing ((active-backup))狀態
root@Web:~# mii-tool
eth0: negotiated 100baseTx-HD, link ok eth3: negotiated 100baseTx-HD, link ok
缺 點:這種方法,只能監測交換機與該網卡之間的鏈路;如果它們之外的鏈路的地方斷了,而交換機本身沒有問題,也就是說你的網卡和交換機之間還是UP狀態,它 是不會認為網絡中斷,除非你的網卡是DOWN狀態,它才會把鏈路轉到另一塊網卡上,就像是拔掉網線一樣,或者把交換機端口shutdown一樣
第二種:arp(這種方法比較實用,你可以把它看作是arp的ping(二層ping),但是可能會給網關造成一定的壓力)
模塊加載:
alias bond0 bonding
options bond0 arp_interval=100 arp_ip_target=192.168.1.1 mode=active-backup primary=eth0 解析如下:
arp_interval=100,表示arp的檢測時間,等同于miimon=100的作用
arp_ip_target=192.168.1.1,表示arp檢測的目標IP,必須是同網段的,最好就是網關
注意:如果使用arp來ping網關不通,那么在/proc/net/bonding/bond0里會一會down,一會up的
優點:使用arp這種方法,如果交換機的上出現問題,網絡不通,它就會把鏈轉到另一塊網卡上,但是不管是哪種方法,在第一塊網卡出現問題,鏈路轉到
第二塊后,如果第一塊恢復正常,鏈路自己不會恢復的
多網卡綁定:
把多張網卡幫成虛擬的一個網卡,使用該虛擬的網卡進行數據傳輸,速度在理論上是網卡N倍
eth0---\
--bond010.1.1.21 ---->
eth3---/
物理連接圖:
eth0---\
----switch ----
eth3---/
必須:
綁定的網卡型號,速度應該一致。
rhel6:
1、加載對應的綁定網卡使用的驅動模塊。
# modprobe bonding mode=0 miimon=100
mode設定工作模式
0 負載均衡模式(兩個網卡同時使用,理論上帶寬翻倍)
1 高可用模式(其中一個網卡工作,另外的網卡備用)
miimon=100 每100毫秒對網卡進行檢測。
2、激活虛擬網卡(綁定后的邏輯網卡,以后配置IP的就是該網卡,物理網卡不需要配置IP)
rhel6必須先把NetworkManager關閉:
# service NetworkManager stop
# chkconfig NetworkManager off
# ifconfig bond0 10.1.1.28netmask 255.255.255.0 up
# ifenslave bond0 eth0 eth3 <---把物理網卡eth0,eth3綁定到bond0
表面上看,配置了IP和發送數據都是使用bond0,實際上是bonding軟件驅動,使用物理網卡在底層發送數據。
# ifconfig
bond0 Link encap:Ethernet HWaddr52:54:00:C3:B8:57
inet addr:10.1.1.28 Bcast:10.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::5054:ff:fec3:b857/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
。。。。
eth0 Link encap:Ethernet HWaddr52:54:00:C3:B8:57
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
。。。
eth3 Link encap:Ethernet HWaddr52:54:00:C3:B8:57
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
。。。
臨時取消綁定:
# ifenslave -d bond0 eth0 eth3
# ifconfig bond0 down
# rmmod bonding <--卸載模塊
永久取消綁定
rm -rf ifcfg-bond0 。
vim /etc/modprobe.d/dist.conf
刪除 alias bond0 bonding
options bond0 miimon=100 mode=1
service network restart
方法2:編寫配置文件
# vim /etc/modprobe.d/dist.conf
alias bond0 bonding
options bonding miimon=100 mode=0
# vim/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=1.1.1.138
NETMASK=255.255.255.0
NM_CONTROLLED="no" 《——————該接口不許要用NetworkManager是管理
MASTER=yes
# vim/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="none"
HWADDR="52:54:00:C3:B8:57"
NM_CONTROLLED="no" 《---
ONBOOT="yes"
MASTER=bond0
SLAVE=yes
# vim/etc/sysconfig/network-scripts/ifcfg-eth3
DEVICE="eth3"
BOOTPROTO="none"
HWADDR="52:54:00:42:C1:8A"
NM_CONTROLLED="no" 《----
ONBOOT="yes"
MASTER=bond0
SLAVE=yes
# service network restart
測試
在綁定的機器上看網卡流量:
# watch "ifconfig |grep 'RX packets' |head -3 |tail -2"
Every 2.0s: ifconfig |grep 'RX packets' |... Wed Jan 2 03:22:42 2013
RX packets:9532 errors:0 dropped:0 overruns:0 frame:0
RX packets:9470 errors:0 dropped:0 overruns:0 frame:0
從另外一臺機器發送大文件到綁定的機器
看了以上關于通過bonding技術應該如何實現網絡負載均衡及冗余,如果大家還有什么地方需要了解的可以在億速云行業資訊里查找自己感興趣的或者找我們的專業技術工程師解答的,億速云技術工程師在行業內擁有十幾年的經驗了。億速云官網鏈接www.neiyidaogou.com
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。