非常好實用的關於solaris ipmp配置文件

wisdomone1發表於2009-02-28

解析IPMP

IP網路多路徑(IP Network Multipathing)Solaris8下的一種新特性,旨在為主機側提供網路可用性和提高吞吐量。

IPMP主要提供三種功能:(1)故障檢測及故障切換(failover):當網路介面卡(包括主機一側或與之相連的網路裝置一側)發生故障時,IP Network Multipathing的故障檢測特性提供了檢測功能,自動把網路訪問切換到備用網路介面卡,真正消除了主機網路介面卡的單點故障。(2)恢復檢測(failback):當發生故障的網路介面卡被修復後時,IP網路多路徑的修理檢測特性有能力執行檢測,並自動把網路訪問切換到原來提供服務的主要網路介面卡。(3)出網負荷分佈(outbound load spreading):高層應用可以向許多網路介面卡分配不同目的地址的網路資料包,來提高網路吞吐量。

配置Ipmp的需求:

1.  作業系統solaris8 以上。

2.MAC地址應當不一樣,在eeprom setenv local-mac-address? True;因為這樣系統中網路介面才使用不同的實體地址(MAC地址)。

3.IPMP的數個網路介面指定一個組名(group name)。

4.為每個網路介面設定一個測試地址(test IP)。

5.網路中存在一臺供測試的主機,這臺主機通常是預設的路由。因為這臺主機提供網路介面向外測試ICMP報文的回應,連續5ICMP報文沒有回應,就認為該網路介面聯接失敗。

IPMP的關鍵程式是in.mpathd程式。該程式的啟動shell是在/etc/rcS.d/ S30network.sh 而在/etc/default/mpathd檔案中包含了與IPMP相關的引數設定。

root#more /etc/default/mpathd

#ident  "@(#)mpathd.dfl 1.1     00/01/03 SMI"

# Time taken by mpathd to detect a NIC failure in ms. The minimum time

# that can be specified is 100 ms.

FAILURE_DETECTION_TIME=10000

# Failback is enabled by default. To disable failback turn off this option

FAILBACK=yes

# By default only interfaces configured as part of multipathing groups

# are tracked. Turn off this option to track all network interfaces

# on the system

TRACK_INTERFACES_ONLY_WITH_GROUPS=yes

root#

在通常情況下,IPMPactive/standby active/active兩種模式。下面介紹一下關於這兩種模式的詳細配置。

1,線上配置IPMP,用命令配置,reboot後配置失效。

實驗環境:sun440,solaris 8,浮動IP=192.168.1.10(當然浮動的IP可以有兩個或更多)。實現active/standby模式。

root@N440 # ifconfig -a

看到原來機器上的IP地址為192.168.1.10,現在進行把它加如IPMP的組裡去。

root@N440 # ifconfig ce0 group ipmptest

為網路介面ce0 指定測試ip192.168.1.11,ce1的測試ip192.168.1.12,同時把網路介面ce1加入NAFOipmptest中。

root@N440 # ifconfig ce0 addif 192.168.1.11 deprecated -failover netmask 255.255.255.0 broadcast 192.168.1.255 up

root@N440 # ifconfig ce1 plumb 192.168.1.12 netmask 255.255.255.0 broadcast 192.168.1.255 group ipmptest up deprecated -failover standby up

然後用命令檢視ipmptest組。

root@N440 # ifconfig -a

止此,線上的ipmp配置成功,你可以做一下網路切換。拔去ce0的網線,看看能否切換到ce1上。當然了,你也可以透過命令來測試切換。下面的這個命令把浮動ip切換到ce1上,並且ce0狀態是offline

root@N440 # if_mpadm -d ce0

這時你可以用ifconfig –a看到failover了。然後你可以用命令再把ce0 ONLINE

root@N440 # if_mpadm -r ce0

2.修改配置檔案,重新啟動後生效。本例中,Ce0的浮動IP192.168.1.10,測試IP192.168.1.11,ce1的測試IP192.168.1.12

root@N440 # vi /etc/hostname.ce0

192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255 group ipmptest up addif 192.168.1.11 deprecated -failover netmask 255.255.255.0 broadcast 192.168.1.255 up

root@N440# vi /etc/hostname.ce1

192.168.1.12 netmask 255.255.255.0 broadcast 192.168.1.255 group ipmptest up deprecated -failover standby up

3,關於負載均衡active/active模式。對於網路介面的負載問題,我總結了下,一個IP地址好象不能夠捆綁在兩塊NIC上。而對於跑兩個以上的應用,把浮動IP地址分配到兩塊NIC上,實現負載均衡和失敗切換的功能。但是對於跑一個應用的程式如何實現負載均衡呢?由於IP地址對應用程式是透明的,所以只能從客戶端實現訪問哪塊網路介面上的浮動IP,實現負載均衡。基於上面的那個例子,我們再給ce1加兩個浮動的IP(192.168.1.9,192.168.1.8),把它配置成active的。

root@N440# vi /etc/hostname.ce1

192.168.1.8 netmask 255.255.255.0 broadcast 192.168.1.255 group ipmptest up addif 192.168.1.12 deprecated -failover netmask 255.255.255.0 broadcast 192.168.1.255 up

root@N440# vi /etc/hostname.ce1:1

192.168.1.9

root@N440#reboot

這樣重新啟動後,浮動的IP192.168.1.8,192.168.1.9192.168.1.10)同在一個IPMP組——ipmptest中。

Troubleshooting:

1,最常見的問題就是對配置了IPMP的主機,Ping能通但是卻Telnet不上,這是因為網路中沒有ailve的路由被test到,導致in.mpathd程式認為兩塊網路介面都failed,至於能ping通,可能是因為in.mpathd程式不能控制到工作在網路層的ICMP報文。

2,從閘道器能ping通主機,但是從主機ping不通閘道器,導致IPMP組失敗。這可能是因為閘道器上的安全策略,遮蔽了ICMP報文的reply

3,網路通暢,儘管可能失敗切換能成功,但是應用程式出現網路斷續的情況,該問題可能是由於OBP裡面的local-mac-address?沒有被設為true,這樣兩個網路卡用同樣的MAC地址,導致交換機裡面的轉發表裡的埠—MAC對應關係錯亂。                   

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-558170/,如需轉載,請註明出處,否則將追究法律責任。

相關文章