歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux bonding 之balance-alb 原理介紹及其實現

Linux bonding 之balance-alb 原理介紹及其實現

日期:2017/2/28 16:25:14   编辑:Linux教程

要求:
首先要安裝bonding driver 和 ifenslave。bonding driver 是實現網卡綁定的軟件基礎,它在很多系統中都作為模塊而加載。ifenslave 是實現網卡綁定的一個實用工具。

檢查系統是否符合這兩個要求:
[root@node1 bin]# lsmod | grep bond
bonding 65128 0
說明該模塊已經加載
ifensalve 一般在/sbin 路徑下面
[root@node1 bin]# which ifenslave
/sbin/ifenslave
說明該使用工具也存在。

balance-alb 的原理:
網卡綁定有很6種mode, balance-alb 不依賴於swith 的特殊配置,這裡討論此種模式。

網絡通信中,兩個節點想要通信,必須先知道源與目標的MAC地址。為了讓系統能快速地找到遠程節點的MAC,每一個本地的內核都保存有一個即時的查詢表(ARP緩存)。 ARP中有映射遠程主機的IP對應的MAC地址的一個列表。地址解析協議(ARP)緩存是一個TSR的數據結構,由本地的內核來管理的。Default ARP緩存中留有last 10 mins本地系統與之通信的節點的IP地址(和對應的MAC地址)。

當一個遠程MAC存在於本地ARP 緩存中,轉換遠程節點的IP地址為MAC地址可以直接通信。然而,系統在知道一個遠程IP,但MAC不在本地ARP緩存中時,是這樣來獲取遠程MAC的:本地主機發送一個Broadcast package,詢問各節點是否有對
應的IP。回應是唯一的。在回應包中就包含此MAC。在收到返回包後,本地節點就會在本地ARP緩存中記錄遠程MAC。

而網卡綁定以後,每個ip可能擁有多個mac地址,究竟將哪個mac地址返回給client,這個就取決於bonding driver。
那balance-alb 來說,就是通過arp 協商決定的。bonding驅動截獲本機發送的ARP應答,並把源硬件地址改寫為bond中某個slave的唯一硬件地址,從而使得不同的對端使用不同的硬件地址進行通信。這樣就實現了網絡負載均衡。當其中的一個slave 失敗,就會由其他的slave來接管,從而提高了網卡的容錯能力。

balance-alb 的實現(這裡通過修改配置文件實現)
vi /etc/sysconfig/network-script/ifcfg-eth0
DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
vi /etc/sysconfig/network-script/ifcfg-eth1 (同上,把eth1改為eth0 即可)
vi /etc/sysconfig/network-script/ifcfg-bond0
DEVICE=bond0
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
添加 bonding 模塊:
vi /etc/modules.conf
alias bond0 bonding
options bond0 mode=balance-alb miimon=100
# reboot

balance-alb 與 RAC 的Private Network
根據balance-alb,對於只有兩個節點的bonding只能提高容錯機制,只有在3個或3個以上的節點時,才可能實現workload balance。

Copyright © Linux教程網 All Rights Reserved