Linux网卡bounding详解
多塊網卡綁在一起,作為一個網卡用,實現負載均衡和提高帶寬
linux雙網卡綁定一個IP地址,實質工作就是使用兩塊網卡虛擬為一塊,使用同一個IP地址,是我們能夠得到更好的更快的服務。其實這項技術在 Sun和Cisco中早已存在,被稱為Trunking和Etherchannel技術,在Linux的2.4.x的內核中也采用這這種技術,被稱為 bonding。
1、bonding 的原理:
什么是bonding需要從網卡的混雜(promisc)模式說起。我們知道,在正常情況下,網卡只接收目的硬件地址(MAC Address)是自身Mac的以太網幀,對于別的數據幀都濾掉,以減輕驅動程序的負擔。但是網卡也支持另外一種被稱為混雜promisc的模式,可以接 收網絡上所有的幀,比如說tcpdump,就是運行在這個模式下.bonding也運行在這個模式下,而且修改了驅動程序中的mac地址,將兩塊網卡的 Mac地址改成相同,可以接收特定mac的數據幀。然后把相應的數據幀傳送給bond驅動程序處理。
2、bonding模塊工作方式:
bonding mode=1 miimon=100.miimon是用來進行鏈路監測的。 比如:miimon=100,那么系統每100ms監測一次鏈路連接狀態,如果有一條線路不通就轉入另一條線路;mode的值表示工作模式,他共有0-6 七種模式,常用的為0,1,6三種。
mode=0:平衡負載模式,有自動備援,但需要”Switch”支援及設定。
mode=1:自動備援模式,其中一條線若斷線,其他線路將會自動備援。
mode=6:平衡負載模式,有自動備援,不需要”Switch”支援及設定。
注意:
MODE=0測試結論:如果交換機未配置鏈路聚合則會發生MAC動蕩的情況,在配置了鏈路聚合后不會出現,發出數據包的MAC為Bond0的MAC
MODE=6測試結論:此時交換機無需特殊配置,即可實現負載均衡。2個網卡發出的包使用的是各自的MAC,因此也不會造成交換機MAC地址表的動蕩
3、debian系統的安裝配置
3.1、安裝ifenslave
apt-get install ifenslave
3.2、讓系統開機自動加載模塊bonding
sudo sh -c "echo bonding mode=1 miimon=100 >> /etc/modules"
3.3、網卡配置
sudo vi /etc/network/interfaces
#實例內容如下:
auto lo
iface lo inet loopback
auto bond0
iface bond0 inet static
address 192.168.1.110
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
post-up ifenslave bond0 eth0 eth1
pre-down ifenslave -d bond0 eth0 eth1
3.4、重啟網卡,完成配置
#如果安裝ifenslave后你沒有重啟計算機,必須手動加載bonding模塊。
sudo modprobe bonding mode=1 miimon=100
#重啟網卡
sudo /etc/init.d/networking restart
4、redhat系統的安裝配置
4.1、安裝ifenslave
redhat默認一般已經安裝。未安裝的要先安裝。
yum install ifenslave
4.2、讓系統開機自動加載模塊bonding
sudo sh -c "echo alias bond0 bonding >> /etc/modprobe.conf"
sudo sh -c "echo options bond0 miimon=100 mode=1 >> /etc/modprobe.conf"
4.3、網卡配置
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
#eth0配置如下
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
#eth1配置如下
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
sudo vi /etc/sysconfig/network-scripts/ifcfg-bond0
#bond0配置如下
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.110
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
SLAVE=eth0,eth1
TYPE=Ethernet
#系統啟動時綁定雙網卡
sudo sh -c "echo ifenslave bond0 eth0 eth1 >> /etc/rc.local"
4.4、重啟網卡,完成配置
#如果安裝ifenslave后你沒有重啟計算機,必須手動加載bonding模塊。
sudo modprobe bonding mode=1 miimon=100
#重啟網卡
sudo /etc/init.d/network restart
5、交換機etherChannel配置
使用mode=0時,需要交換機配置支持etherChannel。
Switch# configure terminal
Switch(config)# interface range fastethernet 0/1 - 2
Switch(config-if-range)# channel-group 1 mode on
Switch(config-if-range)# end
Switch#copy run start
總結
以上是生活随笔為你收集整理的Linux网卡bounding详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 语义分割中的增量学习
- 下一篇: 你是否了解谷歌的无头浏览器?