91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現RedHat服務器網卡陣列配置

發布時間:2021-09-24 17:24:41 來源:億速云 閱讀:165 作者:iii 欄目:系統運維

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

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

代碼如下:


ifenslave bond0 eth0 eth2
#如果一塊網卡失效,系統會按照/etc/rc.d/rc.local里順序啟動網卡,起到失效保護作用。
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-eth2文件,根據實際配置文件新增修改部分如下:

代碼如下:


MASTER=bond0
SLAVE=yes
BOOTPROTO=static         #配置靜態地址,不開啟DHCP
ONBOOT=yes               #開機網卡自啟動


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

代碼如下:


alias bond0 bonding


(Bonding只能提供鏈路監測,從主機到交換機的鏈路是否連通,如果只是交換機對外的鏈路down掉,而交換機本身沒有故障,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)為冗余模式,主備工作模式)

代碼如下:


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


對于級聯小交換機

代碼如下:


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}==""雙引號中輸入物理地址)

代碼如下:


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"


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

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

代碼如下:


#ifconfig -a|grep HWaddr


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

代碼如下:


#cat /proc/net/bonding/bond0


查看bond0工作狀態

網卡常用操作方法筆記
1.bond0上的mac地址修改成一致,這些網卡接在同一臺交換機上,那么該交換機的arp表同一mac地址對應的端口有多個,交換機無法判斷數據包發往的端口,所以要求交換機的相應端口采取聚合模式,聚合后的端口采用同一mac地址。
2.使網卡配置馬上生效,不用重啟機器,命令

代碼如下:


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


必須關閉NetworkManager服務

代碼如下:


#service NetworkManager stop      //當前環境下關閉服務
#chkconfig NetworkManager off     //開機啟動關閉服務


3.重新啟動網卡,命令

代碼如下:


#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模式,網卡的負載均衡模式
#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 做到的就是選擇不一樣的網卡發送。
對于數據的發送,

代碼如下:


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的實現可以發現。

代碼如下:


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也是定時器觸發

代碼如下:


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函數中

代碼如下:


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,不然交換機就可能 會把數據包發送到一個錯誤的端口上。

到此,關于“如何實現RedHat服務器網卡陣列配置”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

花垣县| 宣汉县| 菏泽市| 凤庆县| 门源| 马公市| 江达县| 双峰县| 昌吉市| 鹿邑县| 石景山区| 工布江达县| 思南县| 深泽县| 福清市| 大冶市| 沾化县| 上杭县| 浮梁县| 德庆县| 南安市| 谷城县| 泰兴市| 郴州市| 丹东市| 洛南县| 广宁县| 山阴县| 桐梓县| 永吉县| 江津市| 巴彦淖尔市| 崇礼县| 施秉县| 关岭| 禹城市| 雷山县| 扎鲁特旗| 荥阳市| 聂拉木县| SHOW|