多网口的IP Network Multipathing failover 互为热备份实例篇

时间:2008-01-16 12:04:53  来源:  作者:

以下是本人在某工程中所应用到的、切实可行的案例。 
(注意 solaris 的版本要求是 solaris 8 10/00后,包括该版本) 
hme0 与hme1 两块物理网卡互为热备份的设置 
其配置步骤如下: 
1) 修改EPROM中local-mac-address?= 的参数值: 
          #eeprom local-mac-address?=true  

2) 建立/etc/notrouter文件: 
         #touch  /etc/notrouter 

3) 建立/etc/init.d/rdisc文件,并将其与/etc/rc2.d/S70rdisc建立硬连接: 
   #cat >;/etc/init.d/rdisc 
 case "$1" in 
  'start') 
          if [ -x /usr/bin/pgrep ] 
          then 
       /usr/bin/pgrep -x -u 0 in.rdisc >;/dev/null 2>;&1 ||  
                    /usr/sbin/in.rdisc -f >;/dev/msglog 2>;&1 
          else 
logger cannot execute /usr/bin/pgrep, in.rdisc not started. 
          fi 
                ;; 
   'stop') 
          /usr/bin/pkill -x -u 0 in.rdisc 
                ;; 
        *) 
                echo "Usage:  $0 {start | stop}" 
                ;; 
 esac 
 exit 0  

最后按“CTRL+D”组合键。 

 #ln /etc/init.d/rdisc  /etc/rc2.d/S70rdisc 

4) 编辑 /etc/hostname.hme0  和 /etc/hostname.hme1 文件:   
双网卡热备份的配置 : 
          /etc/hostname.hme0的内容: 
 hostnameA 
        6.40.5.129 netmask + broadcast + group radius failover up  
      addif 6.40.5.130 deprecated -failover netmask + broadcast + up 

            /etc/hostname.hme1的内容: 
hostnameA-slave 
6.40.5.131 netmask + broadcast + group radius failover up  
 addif 6.40.5.132 deprecated -failover netmask + broadcast +  up    
对客户公布的IP地址为 6.40.5.129和6.40.5.131(6.40.5.130和 6.40.5.132不为应用程序所使用)。两个网卡的逻辑组名要求一致,这里组名是radius 。 

当hme0链路出现问题时,hme1自动生成一个hme1:2的逻辑网卡,其IP地址为6.40.5.129,当hme0恢复正常后,hme1:2 自动撤掉,hme0使用原来的IP地址6.40.5.129。 

同理,当hme1链路出现问题时,hme0:2接替hme1工作。 
(注意,该处的所有的IP地址要求处于同一网段,) 

5)配置文件 /etc/default/mpathd 中的内容基本上可以不用改动,如果想加快 
failover的时间,可以将FAILURE_DETECTION_TIME的值设小点, 

6) reboot机器 ,使参数生效 
  #init 6   
  重启后,可通过 ps 看到有/sbin/in.mpathd进程在后台运行。



 race 回复于:2003-05-28 00:06:15

网线线怎么连?同时接到一台交换机上吗?


 houji 回复于:2003-05-28 09:26:40

接到同一台交换机形成回路,不行。


 南非蜘蛛 回复于:2003-05-28 09:33:09

机器的网线连接是怎么连的????


 gztommyt 回复于:2003-05-28 09:47:52

可以连接在同一交换机上,此时的交换机可以用hub代替。

当连接在同一交换机时,只是起到网卡的冗余备份,此时还存在单点故障(交换机)。如果想消除单点故障,可以用两台交换机做HA (如cisco 两台cat6509间 起HSRP,sun上的hme0接cat6509-1,sun 的hme1 接cat6509-2)。


 chly63 回复于:2003-05-28 09:48:25

对啊,能讲讲连接方面的实践吗?


 fieryfox 回复于:2003-05-28 10:01:51

http://www.eng.auburn.edu/~doug/howtos/multipathing.html


 随意江湖行 回复于:2003-05-28 10:44:45

引用:原帖由 "gztommyt"]6.40.5.129 netmask + broadcast + group radius failover up 
 发表:



其中的netmask和broadcast要用实际值替换吗?


 gztommyt 回复于:2003-05-28 10:55:39

其中的netmask和broadcast不用实际值替换 "+"就是表示让系统自动计算

只要在安装OS时, /etc/netmasks 设置正确就可以了。


 段誉 回复于:2003-06-08 22:04:39

感觉有些问题,在此提出一个疑问,请楼主及大家解惑,感谢!

如果一台机器的话,那么,我对外公布的IP地址按照常规的方式来说,应该只有一个,而在这里却有两个,这是为什么?不能在这个group上做一个IP地址吗?


 elk 回复于:2003-06-08 22:21:43

我的配的IPMP的工作记录

SunFire V480 Server
自带两个10/100/1000M自适应的网口,设备名分别是ce0和ce1;
在PCI槽中又扩了一块四口网卡X1034A,设备名分别是qfe0,qfe1,qfe2,qfe3;
用来做ipmp(IP MultiPath)的是ce0和qfe0,其中ce0为主网口,IP为220.192.216.x,提供对外服务;而qfe0设置为备用网口;
ce0和qfe0组成一个名为ipmp_group的NIC Group;
IP 192.168.0.1和192.168.0.2是为了检测用途的两个IP,用来测试所在网卡的状态;
/sbin/in.mpathd是检测、恢复、回复多个网卡的系统进程。

在/etc/rc2.d下创建如下启动脚本,并重新启动机器:
root@AAA1# more /etc/rc2.d/S99ipmp
ifconfig qfe0 plumb
ifconfig ce0 group ipmp_group
ifconfig qfe0 group ipmp_group
ifconfig ce0 addif 192.168.0.1 -failover deprecated up
ifconfig qfe0 192.168.0.2 -failover deprecated standby up

将主网口ce0的网线拔下,出现如下情况:
root@AAA1#
Dec 22 15:44:24 AAA1 genunix: WARNING: ce0: fault detected external to device; service degraded
Dec 22 15:44:24 AAA1 genunix: WARNING: ce0: xcvr addr:0x01 - link down
Dec 22 15:44:32 AAA1 in.mpathd[339]: NIC failure detected on ce0 of group ipmp_group
Dec 22 15:44:32 AAA1 in.mpathd[339]: Successfully failed over from NIC ce0 to NIC qfe0

这时对外服务IP成功的从ce0切换到qfe0,可以用ifconfig命令查看:
root@AAA1# ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4>; mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
ce0: flags=19000842<BROADCAST,RUNNING,MULTICAST,IPv4,NOFAILOVER,FAILED>; mtu 0 index 2
        inet 0.0.0.0 netmask 0
        groupname ipmp_group
        ether 0:3:ba:29:87:4b
ce0:1: flags=19040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER,FAILED>; mtu 1500 index 2
        inet 192.168.0.1 netmask ffffff00 broadcast 192.168.0.255
qfe0: flags=29040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER,STANDBY>; mtu 1500 index 3
        inet 192.168.0.2 netmask ffffff00 broadcast 192.168.0.255
        groupname ipmp_group
        ether 0:3:ba:29:87:4b
qfe0:1: flags=21000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,STANDBY>; mtu 1500 index 3
        inet 220.192.216.x netmask fffffff0 broadcast 220.192.216.111

再测试恢复过程,将ce0的网线重新插好,出现如下情况:
root@AAA1# 
Dec 22 15:46:18 AAA1 genunix: NOTICE: ce0: fault cleared external to device; service available
Dec 22 15:46:18 AAA1 genunix: NOTICE: ce0: xcvr addr:0x01 - link up 10 Mbps half duplex
Dec 22 15:46:32 AAA1 in.mpathd[339]: NIC repair detected on ce0 of group ipmp_group
Dec 22 15:46:32 AAA1 in.mpathd[339]: Successfully failed back to NIC ce0

这时再用ifconfig命令查看,发现对外服务IP已经成功的从qfe0切换回ce0:
root@AAA1# ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4>; mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
ce0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4>; mtu 1500 index 2
        inet 220.192.216.x netmask fffffff0 broadcast 220.192.216.111
        groupname ipmp_group
        ether 0:3:ba:29:87:4b
ce0:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER>; mtu 1500 index 2
        inet 192.168.0.1 netmask ffffff00 broadcast 192.168.0.255
qfe0: flags=69040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER,STANDBY,INACTIVE>; mtu 1500 index 3
        inet 192.168.0.2 netmask ffffff00 broadcast 192.168.0.255
        groupname ipmp_group
        ether 0:3:ba:29:87:4b
root@AAA1#

但是最后发现一个问题,如果本网段内没有一台支持Multicast的设备作为in.mpathd的测试设备的话,回导致该NIC group内的所有网口全部fail。

Dec 23 12:27:36 AAA1 in.mpathd[336]: All Interfaces in group ipmp_group have failed

只有在测试是网段有个能响应IP Multicast的设备,ipmp_group才能恢复:

Dec 23 12:32:14 AAA1 in.mpathd[336]: At least 1 interface (qfe0) of group ipmp_group has repaired
Dec 23 12:32:14 AAA1 in.mpathd[336]: NIC repair detected on qfe0 of group ipmp_group
Dec 23 12:32:15 AAA1 in.mpathd[336]: NIC repair detected on ce0 of group ipmp_group
Dec 23 12:32:15 AAA1 in.mpathd[336]: Successfully failed back to NIC ce0
Dec 23 12:32:15 AAA1 in.mpathd[336]: Improved failure detection time 16660 ms
Dec 23 12:32:15 AAA1 in.mpathd[336]: Improved failure detection time 10000 ms


 elk 回复于:2003-06-08 22:24:04

不知大家有没有更好的经验?




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=78443
转载请注明作者名及原文出处


文章评论

共有 位网友发表了评论 查看完整内容