RedHat服務(wù)器網(wǎng)卡陣列配置攻略

網(wǎng)卡陣列配置
1.修改vi /etc/rc.d/rc.local文件,增加以下內(nèi)容(注意這里添加的是eth0、eth1兩個(gè)網(wǎng)口)
ifenslave bond0 eth0 eth1
#如果一塊網(wǎng)卡失效,系統(tǒng)會(huì)按照/etc/rc.d/rc.local里順序啟動(dòng)網(wǎng)卡,起到失效保護(hù)作用。
echo "0" >>/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
setsebool ftpd_disable_trans 1
service vsftpd restart
route add -net 224.0.0.0/4 dev bond0
#添加路由來設(shè)定發(fā)送規(guī)則
2.修改配置文件/etc/sysconfig/network-scripts
新增ifcfg-bond0文件,內(nèi)容如下:
DEVICE=bond0 #設(shè)備名稱
BOOTPROTO=static #不啟用DHCP
ONBOOT=yes #開機(jī)自啟動(dòng)
IPADDR=192.168.101.X #網(wǎng)卡陣列的ip地址
NETMASK=255.255.255.0 #掩碼
GATEWAY=192.168.101.1 #網(wǎng)關(guān)
修改ifcfg-eth0,ifcfg-eth1文件,根據(jù)實(shí)際配置文件新增修改部分如下:
MASTER=bond0
SLAVE=yes
BOOTPROTO=static #配置靜態(tài)地址,不開啟DHCP
ONBOOT=yes #開機(jī)網(wǎng)卡自啟動(dòng)
3.修改/etc/modprobe.d/dist.conf(按esc用:$回車抵達(dá)最后一行在末尾添加下面兩句)
alias bond0 bonding
(Bonding只能提供鏈路監(jiān)測(cè),從主機(jī)到交換機(jī)的鏈路是否連通,如果只是交換機(jī)對(duì)外的鏈路down掉,而交換機(jī)本身沒有故障,bonding會(huì)認(rèn)為沒有故障而繼續(xù)使用)
options bond0 miimon=100 mode=1
(miimon用來進(jìn)行鏈路監(jiān)測(cè),每100ms監(jiān)測(cè)一次鏈路連接狀態(tài),如果一條不同轉(zhuǎn)入另一條線路;mode的值表示工作模式,共有1,2,3,4四種模式
Mode=0表示load balancing(round-robin)為負(fù)載均衡模式
Mode=1表示fault- tolerance(active-backup)為冗余模式,主備工作模式)
alias net-pf-10 off #關(guān)閉ipv6支持,可以不加
對(duì)于級(jí)聯(lián)小交換機(jī)
alias bond0 bonding
options bond0 mode=1 arp_interval=500 arp_ip_target=192.168.101.254 arp_validate=all primary=eth0
#通過定時(shí)器,每個(gè)slave接口不斷發(fā)送ARP包來不斷更換交換機(jī)端口與MAC的對(duì)應(yīng)關(guān)系
使得每個(gè)網(wǎng)卡都在進(jìn)行工作。這個(gè)ARP的發(fā)送規(guī)則是:
每arp_interval(MS)間隔向arp_ip_target發(fā)送arp請(qǐng)求,可以向多個(gè)arp_ip_target發(fā)送arp請(qǐng)求。
4.增加/etc/udev/rules.d/50-hwinterfaces.rules
(鎖定網(wǎng)卡物理地址,SYSFS{address}==""雙引號(hào)中輸入物理地址)
KERNEL=="eth*",SYSFS{address}=="",NAME="eth0"
KERNEL=="eth*",SYSFS{address}=="",NAME="eth1"
KERNEL=="eth*",SYSFS{address}=="",NAME="eth2"
KERNEL=="eth*",SYSFS{address}=="",NAME="eth3"
KERNEL=="eth*",SYSFS{address}=="",NAME="eth4"
防止機(jī)器網(wǎng)卡的mac地址發(fā)生漂移
5.查看網(wǎng)卡陣列的配置情況
#ifconfig -a|grep HWaddr
查看網(wǎng)卡mac信息,如果bond0,eth0,eth1硬件地址一致,則配置成功
#cat /proc/net/bonding/bond0
查看bond0工作狀態(tài)
網(wǎng)卡常用操作方法筆記
1.bond0上的mac地址修改成一致,這些網(wǎng)卡接在同一臺(tái)交換機(jī)上,那么該交換機(jī)的arp表同一mac地址對(duì)應(yīng)的端口有多個(gè),交換機(jī)無法判斷數(shù)據(jù)包發(fā)往的端口,所以要求交換機(jī)的相應(yīng)端口采取聚合模式,聚合后的端口采用同一mac地址。
2.使網(wǎng)卡配置馬上生效,不用重啟機(jī)器,命令
#service network restart或
#/etc/rc.d/init.d/network restart
必須關(guān)閉NetworkManager服務(wù)
#service NetworkManager stop //當(dāng)前環(huán)境下關(guān)閉服務(wù)
#chkconfig NetworkManager off //開機(jī)啟動(dòng)關(guān)閉服務(wù)
3.重新啟動(dòng)網(wǎng)卡,命令
#ifconfig bond0 down/ifdown bond0
#ifconfig eth0 down/ifdown eth0
#ifconfig eth1 down/ifdown eth1
#ifenslave bond0 eth0
#ifenslave bond0 eth1
#ifconfig bond0 up/ifup bond0
#ifconfig eth0 up/ifup eth0
#ifconfig eth1 up/ifup eth1
4. Bonding的模式一共有7種:
#defineBOND_MODE_ROUNDROBIN 0.balance-rr模式,網(wǎng)卡的負(fù)載均衡模式
#defineBOND_MODE_ACTIVEBACKUP 1.active-backup模式,網(wǎng)卡的容錯(cuò)模式
#defineBOND_MODE_XOR 2.balance-xor模式,需要交換機(jī)支持
#defineBOND_MODE_BROADCAST 3.broadcast模式
#defineBOND_MODE_8023AD 4.IEEE 802.3ad動(dòng)態(tài)鏈路聚合模式,需要交換機(jī)支持#defineBOND_MODE_TLB 5.自定義傳輸負(fù)載均衡模式
#defineBOND_MODE_ALB 6.網(wǎng)卡虛擬化方式
bonding模塊的所有工作模式可以分為兩類:多主型工作模式和主備型工作模式,balance-rr 和broadcast屬于多主型工作模式而active-backup屬于主備型工作模式。(balance-xor、自適應(yīng)傳輸負(fù)載均衡模式 (balance-tlb)和自適應(yīng)負(fù)載均衡模式(balance-alb)也屬于多主型工作模式,IEEE 802.3ad動(dòng)態(tài)鏈路聚合模式(802.3ad)屬于主備型工作模式。
(1)BOND_MODE_ROUNDROBIN模式下,bonding對(duì)于發(fā)送和接收數(shù)據(jù)的處理邏輯是不一致的,對(duì)于數(shù)據(jù)的接收,bonding基本不做任何處理,純粹依靠交換機(jī)端口與MAC的變化來實(shí)現(xiàn)交替接收數(shù)據(jù)。發(fā)送的話,交換機(jī)會(huì)根據(jù)數(shù)據(jù)的源MAC來學(xué)習(xí)端口和MAC之間的關(guān)系,所以bonding 做到的就是選擇不一樣的網(wǎng)卡發(fā)送。
(2)網(wǎng)卡的容錯(cuò)模式(mode =BOND_MODE_ACTIVEBACKUP),容錯(cuò)模式的配置方法和負(fù)載均衡模式基本差不多,只不過修改一下/etc/modprobe.conf即可。
5.arp檢測(cè)模式
觀察交換機(jī)端口上所學(xué)習(xí)到的MAC地址,發(fā)現(xiàn)MAC會(huì)在兩個(gè)端口上反復(fù)切換在BOND_MODE_ROUNDROBIN模式下,bonding對(duì)于發(fā)送和接收數(shù)據(jù)的處理邏輯是不一致的,對(duì)于數(shù)據(jù)的接收,bonding基本不做任何處理,純粹依靠交換機(jī)端口與MAC的變化來實(shí)現(xiàn)交替接收數(shù)據(jù)。發(fā)送的話,交換機(jī)會(huì)根據(jù)數(shù)據(jù)的源MAC來學(xué)習(xí)端口和MAC之間的關(guān)系,所以bonding 做到的就是選擇不一樣的網(wǎng)卡發(fā)送。
對(duì)于數(shù)據(jù)的發(fā)送,
static inline voidbond_set_mode_ops(struct net_device *bond_dev, int mode)
{
switch(mode) {
case BOND_MODE_ROUNDROBIN:
bond_dev->hard_start_xmit =bond_xmit_roundrobin;
break;
...
bond的發(fā)送函數(shù)被注冊(cè)為bond_xmit_roundrobin。通過bond_xmit_roundrobin的實(shí)現(xiàn)可以發(fā)現(xiàn)。
static int bond_xmit_roundrobin(structsk_buff *skb, struct net_device *bond_dev)
{
ead_lock(&bond->curr_slave_lock);
slave = start_at = bond->curr_active_slave;
read_unlock(&bond->curr_slave_lock);
bond_for_each_slave_from(bond, slave, i,start_at) {
if(IS_UP(slave->dev) &&
(slave->link == BOND_LINK_UP) &&
(slave->state ==BOND_STATE_ACTIVE)) {
res =bond_dev_queue_xmit(bond, skb, slave->dev);
write_lock(&bond->curr_slave_lock);
bond->curr_active_slave= slave->next;
write_unlock(&bond->curr_slave_lock);
break;
}
bond_xmit_roundrobin會(huì)通過curr_active_slave指針?biāo)赶虻脑O(shè)備來進(jìn)行發(fā)送,當(dāng)然 curr_active_slave會(huì)在調(diào)用bond_dev_queue_xmit完成實(shí)際的發(fā)送之后指向下一個(gè)slave設(shè)備。 bond_dev_queue_xmit實(shí)際是調(diào)用通用的發(fā)送函數(shù)dev_queue_xmit來進(jìn)行的,它傳遞給dev_queue_xmit的是一個(gè) skb,在傳遞之前skb->dev就被指定為了當(dāng)前的slave設(shè)備,這樣內(nèi)核就會(huì)找到對(duì)應(yīng)的真實(shí)網(wǎng)卡設(shè)備來進(jìn)行發(fā)送,最后 curr_active_slave指針的輪詢切換,實(shí)現(xiàn)了bonding的負(fù)載均衡工作模式。
從這種模式可以看到,bonding實(shí)現(xiàn)了一個(gè)類似網(wǎng)卡驅(qū)動(dòng)的模塊,對(duì)應(yīng)的bond0設(shè)備是一個(gè)純粹的虛設(shè)備,數(shù)據(jù)發(fā)送雖然說經(jīng)過了它,但通過一系列調(diào)用,轉(zhuǎn)了一圈之后才回到真正的網(wǎng)卡設(shè)備那里進(jìn)行發(fā)送,無疑會(huì)消耗一定的系統(tǒng)性能。
簡(jiǎn)單用100Mbps速率的UDP數(shù)據(jù)包測(cè)試了一下BOND_MODE_ROUNDROBIN模式。
測(cè)試過程中發(fā)現(xiàn)接收端會(huì)有較多的亂序包,觀察交換機(jī)端口情況,端口之間的切換頻率不規(guī)則,這個(gè)和交換機(jī)的配置或者性能應(yīng)該有很大聯(lián)系,有必要的話需要進(jìn)一步研究。數(shù)據(jù)的正確性和時(shí)序性能否保證需要進(jìn)一步仔細(xì)測(cè)試。
6. mii鏈路檢測(cè)方式
與之前arp檢測(cè)方式不同。這兩種鏈路檢測(cè)方式在各種mode下都是可以使用的,但要注意不能同時(shí)使用。
bonding的mii檢測(cè)實(shí)現(xiàn)。首先和arp-monitor一樣,mii也是定時(shí)器觸發(fā)
if(bond->params.miimon) { /* link checkinterval, in milliseconds. */
init_timer(mii_timer);
mii_timer->expires= jiffies + 1;
mii_timer->data = (unsigned long)bond_dev;
mii_timer->function = (void*)&bond_mii_monitor;
add_timer(mii_timer);
}
bond_mii_monitor函數(shù)其本質(zhì)的原理就是檢測(cè)網(wǎng)卡的鏈路狀態(tài),bonding定義網(wǎng)卡有4個(gè)鏈路狀態(tài):BOND_LINK_UP:
正常狀態(tài)(處于該狀態(tài)的網(wǎng)卡是是潛在的發(fā)送數(shù)據(jù)包的候選者)
BOND_LINK_FAIL:網(wǎng)卡出現(xiàn)故障,向狀態(tài)BOND_LINK_DOWN 切換中
BOND_LINK_DOWN:失效狀態(tài)
BOND_LINK_BACK:網(wǎng)卡恢復(fù),向狀態(tài)BOND_LINK_UP切換中
從上到下,表示了網(wǎng)卡鏈路從正常到失效再到恢復(fù)狀態(tài)。bond_mii_monitor函數(shù)就是依次檢查網(wǎng)卡的鏈路狀態(tài)是否處于這些狀態(tài),然后通過標(biāo)記 do_failover變量來說明當(dāng)前是否需要切換slave網(wǎng)卡。代碼篇幅較大,但邏輯還是很清晰的,故此處不羅列了。
在BOND_MODE_ACTIVEBACKUP模式下,兩塊網(wǎng)卡其實(shí)有一塊是不工作的,被設(shè)置為IFF_NOARP的狀態(tài)。同時(shí),bond虛設(shè)備,還有 slave設(shè)備的MAC地址均一致,所以這張網(wǎng)卡不會(huì)被外界察覺存在。交換機(jī)也不存在想該端口發(fā)包的情況。當(dāng)bond的mii檢測(cè)發(fā)現(xiàn)當(dāng)前的active 設(shè)備失效了之后,會(huì)切換到這個(gè)備份設(shè)備上。
在bond_change_active_slave函數(shù)中
if (bond->params.mode ==BOND_MODE_ACTIVEBACKUP) {
if (old_active) {
bond_set_slave_inactive_flags(old_active);
}
if (new_active) {
bond_set_slave_active_flags(new_active);
}
}
這個(gè)就是在BOND_MODE_ACTIVEBACKUP模式下的切換邏輯,很簡(jiǎn)單,需要注意的是,在 bond_set_slave_inactive_flags(old_active)中,需要將接口的狀態(tài)設(shè)置為IFF_NOARP,不然交換機(jī)就可能 會(huì)把數(shù)據(jù)包發(fā)送到一個(gè)錯(cuò)誤的端口上。
相關(guān)文章
CentOS中無線網(wǎng)卡的驅(qū)動(dòng)安裝與基本操作命令教程
這篇文章主要介紹了CentOS中無線網(wǎng)卡的驅(qū)動(dòng)安裝與基本操作命令教程,包括對(duì)無線網(wǎng)絡(luò)的掃描及設(shè)置無線網(wǎng)卡IP等命令行中的操作例子,需要的朋友可以參考下2016-05-03虛擬機(jī)中向CentOS添加網(wǎng)卡無法識(shí)別的問題解決
這篇文章主要介紹了虛擬機(jī)中向CentOS添加網(wǎng)卡無法識(shí)別的問題解決,同時(shí)作者還介紹了將CentOS7中網(wǎng)卡名修改為通常大家所更熟悉的eth0的方法,需要的朋友可以參考下2016-03-03新安裝的Centos 7系統(tǒng)怎么將網(wǎng)卡名稱改為eth0?
新安裝的Centos 7系統(tǒng)怎么將網(wǎng)卡名稱改為eth0?新的命名方案接口名稱比傳統(tǒng)的eth0相比有點(diǎn)難以閱讀,但是有時(shí)候就是想改,所以也不怕麻煩,下面分享詳細(xì)的修改教程2015-12-03CentOS雙網(wǎng)卡時(shí)改變網(wǎng)卡編號(hào)和配置靜態(tài)路由的方法
這篇文章主要介紹了CentOS雙網(wǎng)卡時(shí)改變網(wǎng)卡編號(hào)和配置靜態(tài)路由的方法,同樣適用于Fedora等其他的RedHat系的Linux系統(tǒng)使用時(shí)借鑒,需要的朋友可以參考下2015-11-30CentOS中關(guān)閉防火墻及解決找不到網(wǎng)卡問題的方法
這篇文章主要介紹了CentOS中關(guān)閉防火墻及解決找不到網(wǎng)卡問題的方法,是CentOS服務(wù)器配置的基礎(chǔ)操作,需要的朋友可以參考下2015-10-14在CentOS系統(tǒng)上為一個(gè)網(wǎng)卡綁定多個(gè)IP地址的方法
這篇文章主要介紹了在CentOS系統(tǒng)上為一個(gè)網(wǎng)卡分配多個(gè)IP地址的方法,文中示例基于CentOS7版本,同時(shí)也適用于RedHat系的其他Linux系統(tǒng),需要的朋友可以參考下2015-06-06- 這篇文章主要介紹了在CentOS中綁定多塊網(wǎng)卡的教程,CentOS強(qiáng)大的官方網(wǎng)卡驅(qū)動(dòng)支持是其最主要的有點(diǎn)之一,而多塊網(wǎng)卡又可以加大網(wǎng)站吞吐量,需要的朋友可以參考下2015-06-04
Centos系統(tǒng)網(wǎng)卡怎么手動(dòng)配置?
Centos系統(tǒng)網(wǎng)卡怎么手動(dòng)配置?平時(shí)裝linux系統(tǒng)用工具配置網(wǎng)絡(luò)經(jīng)常出一些搞不清楚的問題,在這里分享一下手動(dòng)在linux系統(tǒng)里配置網(wǎng)卡,下面我們一起來看看2015-05-05centos配置網(wǎng)卡修改ip地址和修改網(wǎng)關(guān)的方法
本文主要介紹了centos配置網(wǎng)卡、修改網(wǎng)關(guān)、修改DNS的方法,大家參考使用吧2014-01-17Linux系統(tǒng)基礎(chǔ)筆記之網(wǎng)卡安裝一般步驟簡(jiǎn)介
這篇文章主要介紹了Linux系統(tǒng)基礎(chǔ)筆記之網(wǎng)卡安裝一般步驟簡(jiǎn)介,需要的朋友可以參考下2016-05-17