RedHat服務器網卡陣列配置攻略

來源:本網整理

2塊網卡:1塊接交換機1塊接熱備服務器3塊網卡:2塊接交換機,做雙口鏡像,提高數據傳速度1塊接熱備服務器www.13333515.buzz防采集請勿采集本網。

s">

RedHat服務器網卡陣列配置攻略

作者:lucifercn 字體:[增加 減小] 來源:OSChina 時間:07-04 14:01:05 我要評論 在服務器上經常可以見到多網卡配置的情況,這里結合Linux系統中網卡的常用操作方法整理了RedHat服務器網卡陣列配置攻略,同樣可以作為CentOS等其他RedHat系的Linux系統上的配置參考: ">

網卡陣列配置

這個實驗中把網卡1和2綁定,修改/etc/sysconfig/network-scripts/ifcfg-ethX相應網卡配置如下: cat/etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes

1.修改vi /etc/rc.d/rc.local文件,增加以下內容(注意這里添加的是eth0、eth1兩個網口)

#啟用網卡綁定模塊: sed-i '$a\\alias bond0 bonding'/etc/modprobe.conf sed-i '$a\\options bond0 mode=0 miimon=100'/etc/modprobe.conf 創建主配置文件,將*號替換成實際分配的地址: export

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

ifenslave bond0 eth0 eth1

vi/etc/sysconfig/network-scripts/ifcfg-eth0[編輯網卡的配置文件] 輸入上述命令后回車,打開配置文件,使用方向鍵移動光標到最后一行,按字母鍵“O”,進入編輯模式,輸入以下內容: IPADDR=192.168.4.

#如果一塊網卡失效,系統會按照/etc/rc.d/rc.local里順序啟動網卡,起到失效保護作用。

1.真機為linux,安裝軟路由, 2.一網卡連接外網,IP為公網IP:58.38.24.23 3.vmnet1為192.168.0.1作為內網網卡. 4.真機啟用路由協議!5.連接vmnet1的所有虛擬機作為內網機子,IP可為192.168.0.2~192.

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

#添加路由來設定發送規則

2.修改配置文件/etc/sysconfig/network-scripts

新增ifcfg-bond0文件,內容如下:

DEVICE=bond0             #設備名稱

BOOTPROTO=static         #不啟用DHCP

ONBOOT=yes               #開機自啟動

IPADDR=192.168.101.X     #網卡陣列的ip地址

NETMASK=255.255.255.0    #掩碼

GATEWAY=192.168.101.1    #網關

修改ifcfg-eth0,ifcfg-eth1文件,根據實際配置文件新增修改部分如下:

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

MASTER=bond0

SLAVE=yes

BOOTPROTO=static #配置靜態地址,不開啟DHCP

ONBOOT=yes #開機網卡自啟動

3.修改/etc/modprobe.d/dist.conf(按esc用:$回車抵達最后一行在末尾添加下面兩句)

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

alias bond0 bonding

(Bonding只能提供鏈路監測,從主機到交換機的鏈路是否連通,如果只是交換機對外的鏈路down掉,而交換機本身沒有故障,bonding會認為沒有故障而繼續使用)

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

options bond0 miimon=100 mode=1

(miimon用來進行鏈路監測,每100ms監測一次鏈路連接狀態,如果一條不同轉入另一條線路;mode的值表示工作模式,共有1,2,3,4四種模式

Mode=0表示load balancing(round-robin)為負載均衡模式

Mode=1表示fault- tolerance(active-backup)為冗余模式,主備工作模式)

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

alias net-pf-10 off #關閉ipv6支持,可以不加

對于級聯小交換機

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

alias bond0 bonding

options bond0 mode=1 arp_interval=500 arp_ip_target=192.168.101.254 arp_validate=all primary=eth0

#通過定時器,每個slave接口不斷發送ARP包來不斷更換交換機端口與MAC的對應關系

使得每個網卡都在進行工作。這個ARP的發送規則是:

每arp_interval(MS)間隔向arp_ip_target發送arp請求,可以向多個arp_ip_target發送arp請求。

4.增加/etc/udev/rules.d/50-hwinterfaces.rules

(鎖定網卡物理地址,SYSFS{address}==""雙引號中輸入物理地址)

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

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"

防止機器網卡的mac地址發生漂移

5.查看網卡陣列的配置情況

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

#ifconfig -a|grep HWaddr

查看網卡mac信息,如果bond0,eth0,eth1硬件地址一致,則配置成功

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

#cat /proc/net/bonding/bond0

查看bond0工作狀態

網卡常用操作方法筆記

1.bond0上的mac地址修改成一致,這些網卡接在同一臺交換機上,那么該交換機的arp表同一mac地址對應的端口有多個,交換機無法判斷數據包發往的端口,所以要求交換機的相應端口采取聚合模式,聚合后的端口采用同一mac地址。

2.使網卡配置馬上生效,不用重啟機器,命令

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

#service network restart或

#/etc/rc.d/init.d/network restart

必須關閉NetworkManager服務

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

#service NetworkManager stop //當前環境下關閉服務

#chkconfig NetworkManager off //開機啟動關閉服務

3.重新啟動網卡,命令

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

#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種:

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

#defineBOND_MODE_ROUNDROBIN 0.balance-rr模式,網卡的負載均衡模式

#defineBOND_MODE_ACTIVEBACKUP 1.active-backup模式,網卡的容錯模式

#defineBOND_MODE_XOR 2.balance-xor模式,需要交換機支持

#defineBOND_MODE_BROADCAST 3.broadcast模式

#defineBOND_MODE_8023AD 4.IEEE 802.3ad動態鏈路聚合模式,需要交換機支持#defineBOND_MODE_TLB 5.自定義傳輸負載均衡模式

#defineBOND_MODE_ALB 6.網卡虛擬化方式

bonding模塊的所有工作模式可以分為兩類:多主型工作模式和主備型工作模式,balance-rr 和broadcast屬于多主型工作模式而active-backup屬于主備型工作模式。(balance-xor、自適應傳輸負載均衡模式 (balance-tlb)和自適應負載均衡模式(balance-alb)也屬于多主型工作模式,IEEE 802.3ad動態鏈路聚合模式(802.3ad)屬于主備型工作模式。

(1)BOND_MODE_ROUNDROBIN模式下,bonding對于發送和接收數據的處理邏輯是不一致的,對于數據的接收,bonding基本不做任何處理,純粹依靠交換機端口與MAC的變化來實現交替接收數據。發送的話,交換機會根據數據的源MAC來學習端口和MAC之間的關系,所以bonding 做到的就是選擇不一樣的網卡發送。

(2)網卡的容錯模式(mode =BOND_MODE_ACTIVEBACKUP),容錯模式的配置方法和負載均衡模式基本差不多,只不過修改一下/etc/modprobe.conf即可。

5.arp檢測模式

觀察交換機端口上所學習到的MAC地址,發現MAC會在兩個端口上反復切換在BOND_MODE_ROUNDROBIN模式下,bonding對于發送和接收數據的處理邏輯是不一致的,對于數據的接收,bonding基本不做任何處理,純粹依靠交換機端口與MAC的變化來實現交替接收數據。發送的話,交換機會根據數據的源MAC來學習端口和MAC之間的關系,所以bonding 做到的就是選擇不一樣的網卡發送。

對于數據的發送,

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

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的發送函數被注冊為bond_xmit_roundrobin。通過bond_xmit_roundrobin的實現可以發現。

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

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會通過curr_active_slave指針所指向的設備來進行發送,當然 curr_active_slave會在調用bond_dev_queue_xmit完成實際的發送之后指向下一個slave設備。 bond_dev_queue_xmit實際是調用通用的發送函數dev_queue_xmit來進行的,它傳遞給dev_queue_xmit的是一個 skb,在傳遞之前skb->dev就被指定為了當前的slave設備,這樣內核就會找到對應的真實網卡設備來進行發送,最后 curr_active_slave指針的輪詢切換,實現了bonding的負載均衡工作模式。

從這種模式可以看到,bonding實現了一個類似網卡驅動的模塊,對應的bond0設備是一個純粹的虛設備,數據發送雖然說經過了它,但通過一系列調用,轉了一圈之后才回到真正的網卡設備那里進行發送,無疑會消耗一定的系統性能。

簡單用100Mbps速率的UDP數據包測試了一下BOND_MODE_ROUNDROBIN模式。

測試過程中發現接收端會有較多的亂序包,觀察交換機端口情況,端口之間的切換頻率不規則,這個和交換機的配置或者性能應該有很大聯系,有必要的話需要進一步研究。數據的正確性和時序性能否保證需要進一步仔細測試。

6. mii鏈路檢測方式

與之前arp檢測方式不同。這兩種鏈路檢測方式在各種mode下都是可以使用的,但要注意不能同時使用。

bonding的mii檢測實現。首先和arp-monitor一樣,mii也是定時器觸發

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

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函數其本質的原理就是檢測網卡的鏈路狀態,bonding定義網卡有4個鏈路狀態:BOND_LINK_UP:

正常狀態(處于該狀態的網卡是是潛在的發送數據包的候選者)

BOND_LINK_FAIL:網卡出現故障,向狀態BOND_LINK_DOWN 切換中

BOND_LINK_DOWN:失效狀態

BOND_LINK_BACK:網卡恢復,向狀態BOND_LINK_UP切換中

從上到下,表示了網卡鏈路從正常到失效再到恢復狀態。bond_mii_monitor函數就是依次檢查網卡的鏈路狀態是否處于這些狀態,然后通過標記 do_failover變量來說明當前是否需要切換slave網卡。代碼篇幅較大,但邏輯還是很清晰的,故此處不羅列了。

在BOND_MODE_ACTIVEBACKUP模式下,兩塊網卡其實有一塊是不工作的,被設置為IFF_NOARP的狀態。同時,bond虛設備,還有 slave設備的MAC地址均一致,所以這張網卡不會被外界察覺存在。交換機也不存在想該端口發包的情況。當bond的mii檢測發現當前的active 設備失效了之后,會切換到這個備份設備上。

在bond_change_active_slave函數中

復制代碼代碼如下:

不是像你想象的那樣 linux的確支持這個,看看bond或bonding

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);

}

}

這個就是在BOND_MODE_ACTIVEBACKUP模式下的切換邏輯,很簡單,需要注意的是,在 bond_set_slave_inactive_flags(old_active)中,需要將接口的狀態設置為IFF_NOARP,不然交換機就可能 會把數據包發送到一個錯誤的端口上。

DEVICE是網卡名稱BOOTPROTO是獲取的ip地址類型,static和none為靜態地址,dhcp為動態獲取ip地址BROADCAST是廣播地址HWADDR是MAC地址IPADDR是本機ip地址NETMASK是子網掩碼NETWORK是子網地址ONBOOT是開機是否啟動GATEWAY是設置網關的,你這個圖中沒有設置,你也可以去看下/etc/sysconf/network文件中是否設置了子網掩碼就是上面說的NETMASKDNS不是在這個文件中設置的,應該是在/etc/resolv.conf中內容來自www.13333515.buzz請勿采集。

免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
Copyright © 2017 www.13333515.buzz All Rights Reserved
3排列五开奖结果 急速赛车15 七乐彩预测最准十专家 湖北快3综合走势分布图 广东11选5中奖规则 彩票幸运农场玩法 广西快3平台下载 甘肃11选5开奖查询 加拿大快乐8开奖视频 河南福彩快3走势图 甘肃11选5智能推荐号 幸运赛车彩票app 山东十一选五开遗漏 内蒙古11选5玩法说明 重庆快乐10分一定牛 湖南快乐十分开奖图表下载 宁夏11选5平台