https://onitroad.com 更多教程

标志的含义

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

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

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

# if_mpadm -d ce0
# if_mpadm -r ce0

什么是基于链接的 IPMP?

mpathd 守护程序使用的故障检测和修复方法将 IPMP 区分为基于探测或者基于链接。
在基于链接的 IPMP 的情况下:

  • mpathd 守护进程使用接口内核驱动程序检查接口的状态。
  • in.mpathd 守护进程观察接口上 IFF_RUNNING 标志的变化以确定故障。
  • 故障检测不需要测试地址。
  • 默认启用(如果接口支持)。
  • 基于链路的 IPMP 的优点之一是它不依赖于外部来源发送 ICMP 回复来确保链路状态,它还节省了 IP 地址,因为它不需要任何测试地址来进行故障检测

最常用的基于链路的 IPMP 配置

基于单接口Link的IPMP配置

这不是一个非常有用的配置,因为它实际上并不提供高可用性。
但只能用于在接口失败时得到提示。

命令行 :

# ifconfig e1000g0 plumb 192.168.1.2 netmask + broadcast + group IPMPgroup up

对于跨重新启动的持久配置,请编辑文件:

/etc/hostname.e1000g0
192.168.1.2 netmask + broadcast + group IPMPgroup 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 13
        inet 192.168.1.2 netmask ffffff00 broadcast 192.168.1.255
        groupname IPMPgroup
        ether 0:c:29:f6:ef:67

失败后:

# ifconfig -a
lo0: flags=2001000849[UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL] mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
e1000g0: flags=11000803[UP,BROADCAST,MULTICAST,IPv4,FAILED] mtu 1500 index 13
        inet 192.168.1.2 netmask ffffff00 broadcast 192.168.1.255
        groupname IPMPgroup
        ether 0:c:29:f6:ef:67

多接口Link based IPMP配置

主主模式(Active Active) 配置

命令行 :

# ifconfig e1000g0 plumb 192.168.1.2 netmask + broadcast + group IPMPgroup up
# ifconfig e1000g1 plumb group IPMPgroup up

对于跨重新启动的持久配置,请编辑文件:

/etc/hostname.e1000g0 
192.168.1.2 netmask + broadcast + group IPMPgroup up
/etc/hostname.e1000g1 
group IPMPgroup 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 14
        inet 192.168.1.2 netmask ffffff00 broadcast 192.168.1.255
        groupname IPMPgroup
        ether 0:c:29:f6:ef:67
e1000g1: flags=1000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4] mtu 1500 index 15
        inet 0.0.0.0 netmask ff000000
        groupname IPMPgroup
        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 14
        inet 0.0.0.0 netmask 0
        groupname IPMPgroup
        ether 0:c:29:f6:ef:67
e1000g1: flags=1000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4] mtu 1500 index 15
        inet 0.0.0.0 netmask ff000000
        groupname IPMPgroup
        ether 0:c:29:f6:ef:71
e1000g1:1: flags=1000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4] mtu 1500 index 15
        inet 192.168.1.2 netmask ffffff00 broadcast 192.168.1.255

主备模式(Active standby)配置

命令行 :

# ifconfig e1000g0 plumb 192.168.1.2 netmask + broadcast + group IPMPgroup up
# ifconfig e1000g1 plumb group IPMPgroup standby up

对于跨重新启动的持久配置,请编辑文件:

/etc/hostname.e1000g0
192.168.1.2 netmask + broadcast + group IPMPgroup up
/etc/hostname.e1000g1
group IPMPgroup 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 20
        inet 192.168.1.2 netmask ffffff00 broadcast 192.168.1.255
        groupname IPMPgroup
        ether 0:c:29:f6:ef:67
e1000g0:1: flags=1000842[BROADCAST,RUNNING,MULTICAST,IPv4] mtu 1500 index 20
        inet 0.0.0.0 netmask 0
e1000g1: flags=69000842[BROADCAST,RUNNING,MULTICAST,IPv4,NOFAILOVER,STANDBY,INACTIVE] mtu 0 index 21
        inet 0.0.0.0 netmask 0
        groupname IPMPgroup
        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 20
        inet 0.0.0.0 netmask 0
        groupname IPMPgroup
        ether 0:c:29:f6:ef:67
e1000g1: flags=21000842[BROADCAST,RUNNING,MULTICAST,IPv4,STANDBY] mtu 1500 index 21
        inet 0.0.0.0 netmask 0
        groupname IPMPgroup
        ether 0:c:29:f6:ef:71
e1000g1:1: flags=21000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4,STANDBY] mtu 1500 index 21
        inet 192.168.1.2 netmask ffffff00 broadcast 192.168.1.255
Solaris 10 如何配置 基于链路的 IPMP

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