溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何實(shí)現(xiàn)RedHat服務(wù)器網(wǎng)卡陣列配置

發(fā)布時(shí)間:2021-09-24 17:24:41 來源:億速云 閱讀:155 作者:iii 欄目:系統(tǒng)運(yùn)維

這篇文章主要介紹“如何實(shí)現(xiàn)RedHat服務(wù)器網(wǎng)卡陣列配置”,在日常操作中,相信很多人在如何實(shí)現(xiàn)RedHat服務(wù)器網(wǎng)卡陣列配置問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”如何實(shí)現(xiàn)RedHat服務(wù)器網(wǎng)卡陣列配置”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

網(wǎng)卡陣列配置
1.修改vi /etc/rc.d/rc.local文件,增加以下內(nèi)容(注意這里添加的是eth0、eth2兩個(gè)網(wǎng)口)

代碼如下:


ifenslave bond0 eth0 eth2
#如果一塊網(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-eth2文件,根據(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="eth2"
KERNEL=="eth*",SYSFS{address}=="",NAME="eth3"
KERNEL=="eth*",SYSFS{address}=="",NAME="eth4"
KERNEL=="eth*",SYSFS{address}=="",NAME="eth5"


防止機(jī)器網(wǎng)卡的mac地址發(fā)生漂移

5.查看網(wǎng)卡陣列的配置情況

代碼如下:


#ifconfig -a|grep HWaddr


查看網(wǎng)卡mac信息,如果bond0,eth0,eth2硬件地址一致,則配置成功

代碼如下:


#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 eth2 down/ifdown eth2
#ifenslave bond0 eth0
#ifenslave bond0 eth2
#ifconfig bond0 up/ifup bond0
#ifconfig eth0 up/ifup eth0
#ifconfig eth2 up/ifup eth2


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)性能。
簡單用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模式下的切換邏輯,很簡單,需要注意的是,在 bond_set_slave_inactive_flags(old_active)中,需要將接口的狀態(tài)設(shè)置為IFF_NOARP,不然交換機(jī)就可能 會(huì)把數(shù)據(jù)包發(fā)送到一個(gè)錯(cuò)誤的端口上。

到此,關(guān)于“如何實(shí)現(xiàn)RedHat服務(wù)器網(wǎng)卡陣列配置”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI