分类:
2009-08-18 22:37:45
解析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报文的回应,连续5的ICMP报文没有回应,就认为该网络接口联接失败。
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#
在通常情况下,IPMP有active/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指定测试ip为192.168.1.11,ce1的测试ip为192.168.1.12,同时把网络接口ce1加入NAFO组ipmptest中。
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的浮动IP为192.168.1.10,测试IP为192.168.1.11,ce1的测试IP为192.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
这样重新启动后,浮动的IP(192.168.1.8,192.168.1.9,192.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对应关系错乱。