欢迎 on it road

测试 IPMP 故障转移

我们可以使用 if_mpadm 命令非常轻松地检查接口的故障和修复。
"-d" 分离接口,而 "-r" 重新连接它。

# if_mpadm -d ce0
# if_mpadm -r ce0

什么是基于探针的 IPMP?

in.mpathd 守护程序使用的故障检测方法将 IPMP 区分为基于探针或者基于链接。
基于探测的 IPMP 在其配置中使用两种类型的地址。

  1. 测试地址 - 由 in.mpathd 守护程序用于检测故障(也称为探测地址)。

  2. 数据地址——由应用程序用于实际数据传输。

在基于探针的 IPMP 的情况下:

-in.mpathd 守护进程在测试地址上向同一子网上的一个或者多个目标系统发送 ICMP 探测消息。
-in.mpathd 守护进程确定可用的目标系统进行动态探测。
它使用“所有主机”多播 (224.0.0.1) 地址来确定要探测的目标系统。

目标系统示例:

  1. 同一子网上的所有默认路由。

  2. 同一子网上的所有主机路由。
    (用“route -p add”命令配置)

  • 所有测试地址应该在同一个子网中。

标志的含义

我们会在“ifconfig -a”命令的输出中看到诸如 NOFAILOVER、DEPRECATED、STANDBY 等标志。
这些标志和启用它们的参数的含义是:

deprecated -> 只能用作 IPMP 的测试地址,不能用于应用程序的任何实际数据传输。
-failover -> 在接口出现故障时不会进行故障转移
备用 -> 使接口用作备用

Solaris 10 如何配置基于 Probe 的 IPMP

最常用的基于探针的 IPMP 配置

1.主动主动配置

Groupname:             ipmp0
Active interface(s):   e1000g0 
                       e1000g1
Standby interface(s):  
Data IP addresse(s):   192.168.1.2
Test IP addresse(s):   192.168.1.3
                       192.168.1.4

命令行 :

# ifconfig e1000g0 plumb 192.168.1.2 netmask + broadcast + group ipmp0 up addif 192.168.1.3 netmask + broadcast + deprecated -failover up
# ifconfig e1000g1 plumb 192.168.1.4 netmask + broadcast + deprecated -failover group ipmp0 up

要确保在重新启动后的持久配置,请编辑文件:

/etc/hostname.e1000g0:
192.168.1.2 netmask + broadcast + group ipmp0 up 
addif 192.168.1.3 netmask + broadcast + deprecated -failover up
/etc/hostname.e1000g1:
192.168.1.4 netmask + broadcast + deprecated -failover group ipmp0 up

失败前:

# ifconfig -a
lo0: flags=2001000849[UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL] mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4] mtu 1500 index 9
        inet 192.168.1.2 netmask ffffff00 broadcast 192.168.1.255
        groupname ipmp0
        ether 0:c:29:f6:ef:67
e1000g0:1: flags=9040843[UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER] mtu 1500 index 9
        inet 192.168.1.3 netmask ffffff00 broadcast 192.168.1.255
e1000g1: flags=9040843[UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER] mtu 1500 index 10
        inet 192.168.1.4 netmask ffffff00 broadcast 192.168.1.255
        groupname ipmp0
        ether 0:c:29:f6:ef:71

失败后:

# ifconfig -a
lo0: flags=2001000849[UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL] mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
e1000g0: flags=19000802[BROADCAST,MULTICAST,IPv4,NOFAILOVER,FAILED] mtu 0 index 9
        inet 0.0.0.0 netmask 0
        groupname ipmp0
        ether 0:c:29:f6:ef:67
e1000g0:1: flags=19040803[UP,BROADCAST,MULTICAST,DEPRECATED,IPv4,NOFAILOVER,FAILED] mtu 1500 index 9
        inet 192.168.1.3 netmask ffffff00 broadcast 192.168.1.255
e1000g1: flags=9040843[UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER] mtu 1500 index 10
        inet 192.168.1.4 netmask ffffff00 broadcast 192.168.1.255
        groupname ipmp0
        ether 0:c:29:f6:ef:71
e1000g1:1: flags=1000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4] mtu 1500 index 10
        inet 192.168.1.2 netmask ffffff00 broadcast 192.168.1.255
  1. 主备
    主备配置的唯一区别是配置为备用的接口不用于发送任何出站流量。
    从而禁用主动-主动配置的负载平衡功能。
Groupname:             ipmp0
Active interface(s):   e1000g0             
Standby interface(s):  e1000g1
Data IP addresse(s):   192.168.1.2
Test IP addresse(s):   192.168.1.3
                       192.168.1.4

命令行 :

# ifconfig e1000g0 plumb 192.168.1.2 netmask + broadcast + group ipmp0 up addif 192.168.1.3 netmask + broadcast + deprecated -failover up
# ifconfig e1000g1 plumb 192.168.1.4 netmask + broadcast + deprecated -failover group ipmp0 standby up

要确保在重新启动后的持久配置,请编辑文件:

/etc/hostname.e1000g0:
192.168.1.2 netmask + broadcast + group ipmp0 up 
addif 192.168.1.3 netmask + broadcast + deprecated -failover up
/etc/hostname.e1000g1:
192.168.1.4 netmask + broadcast + deprecated -failover group ipmp0 standby up

失败前:

# ifconfig -a
lo0: flags=2001000849[UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL] mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4] mtu 1500 index 11
        inet 192.168.1.2 netmask ffffff00 broadcast 192.168.1.255
        groupname ipmp0
        ether 0:c:29:f6:ef:67
e1000g0:1: flags=9040843[UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER] mtu 1500 index 11
        inet 192.168.1.3 netmask ffffff00 broadcast 192.168.1.255
e1000g1: flags=69040843[UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER,STANDBY,INACTIVE] mtu 1500 index 12
        inet 192.168.1.4 netmask ffffff00 broadcast 192.168.1.255
        groupname ipmp0
        ether 0:c:29:f6:ef:71

失败后:

# ifconfig -a
lo0: flags=2001000849[UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL] mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
e1000g0: flags=19000802[BROADCAST,MULTICAST,IPv4,NOFAILOVER,FAILED] mtu 0 index 11
        inet 0.0.0.0 netmask 0
        groupname ipmp0
        ether 0:c:29:f6:ef:67
e1000g0:1: flags=19040803[UP,BROADCAST,MULTICAST,DEPRECATED,IPv4,NOFAILOVER,FAILED] mtu 1500 index 11
        inet 192.168.1.3 netmask ffffff00 broadcast 192.168.1.255
e1000g1: flags=29040843[UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER,STANDBY] mtu 1500 index 12
        inet 192.168.1.4 netmask ffffff00 broadcast 192.168.1.255
        groupname ipmp0
        ether 0:c:29:f6:ef:71
e1000g1:1: flags=21000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4,STANDBY] mtu 1500 index 12
        inet 192.168.1.2 netmask ffffff00 broadcast 192.168.1.255

故障检测和维修检测时间

探测速率取决于 /etc/default/mpathd 配置文件中设置的 FAILURE_DETECTION_TIME(默认值为 10 秒)。

in.mpathd 每 10 秒发送 5 个探测(或者 FAILURE_DETECTION_TIME 设置)。
如果连续 5 次探测失败,则 in.mpathd 认为接口失败。

最小修复检测时间是故障检测时间的两倍。
因此,如果故障检测时间为 10 秒,则修复检测时间将为 20 秒(10 个探针)。

mpathd 配置文件

mpathd 守护进程负责检测接口故障。
它使用配置文件 /etc/default/mpathd 来设置各种 IPMP 参数。

# cat /etc/default/mpathd
#
#pragma ident   "@(#)mpathd.dfl 1.2     00/07/17 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

mpathd 配置文件中的重要参数是:

  1. FAILURE_DETECTION_TIME : mpathd 检测 NIC 故障所用的时间(以毫秒为单位)(默认值 10 秒)
  2. FAILBACK : 在故障链接可用后启用或者禁用故障回复(默认值是)
  3. TRACK_INTERFACES_ONLY_WITH_GROUPS 如果打开接口配置为 IPMP 的一部分只被监控(默认值是)

in.mpathd 守护进程重新读取配置文件的命令是:

# pkill -HUP in.mpathd
日期:2020-09-17 00:15:06 来源:oir作者:oir