系统管理指南:IP 服务

第 31 章 管理 IPMP(任务)

本章介绍使用 IP 网络多路径 (IP network multipathing, IPMP) 管理接口组的任务。本章主要讨论以下主题:

有关 IPMP 概念的概述,请参阅第 30 章

配置 IPMP(任务列表)

本节包含指向本章所介绍任务的链接。

配置和管理 IPMP 组(任务列表)

任务 

说明 

参考 

规划 IPMP 组。 

列出所有辅助信息和必需任务,然后才能配置 IPMP 组。 

如何规划 IPMP 组

使用多个接口配置 IPMP 接口组。 

将多个接口配置为 IPMP 组的成员。 

如何配置具有多个接口的 IPMP 组

配置 IPMP 组,该组的一个接口是待机接口。 

将多接口 IPMP 组的其中一个接口配置为待机接口。 

如何为 IPMP 组配置待机接口

配置由单个接口组成的 IPMP 组。 

创建单接口 IPMP 组。  

如何配置单接口 IPMP 组

显示物理接口所属的 IPMP 组。 

说明如何从 ifconfig 命令的输出中获取接口的 IPMP 组的名称。

如何显示接口的 IPMP 组成员关系

将接口添加到 IPMP 组。 

将新接口配置为现有 IPMP 组的成员。 

如何将接口添加到 IPMP 组

从 IPMP 组中删除接口。 

说明如何从 IPMP 组中删除接口。 

如何从 IPMP 组中删除接口

将接口从现有 IPMP 组移动到其他组。 

在 IPMP 组之间移动接口。 

如何将接口从一个 IPMP 组移动到另一个组

更改 in.mpathd 守护进程的三个缺省设置。

自定义 in.mpathd 守护进程的故障检测时间和其他参数。

如何配置 /etc/default/mpathd 文件

在支持动态重新配置的接口上管理 IPMP(任务列表)

任务 

说明 

参考 

删除出现故障的接口。 

删除系统上出现故障的接口。 

如何删除出现故障的物理接口(DR 分离)

替换出现故障的接口。 

替换出现故障的接口。 

如何替换出现故障的物理接口(DR 连接)

恢复在引导时未配置的接口。 

恢复出现故障的接口。 

如何恢复系统引导时不存在的物理接口

配置 IPMP 组

本节提供了配置 IPMP 组的过程,并介绍如何将一个接口配置为待机接口。

规划 IPMP 组

将系统上的接口配置为 IPMP 组的一部分之前,需要进行一些配置前规划。

Procedure如何规划 IPMP 组

以下过程包括配置 IPMP 组之前要收集的规划任务和信息。不必顺序执行这些任务。

  1. 确定系统上的哪些接口将是 IPMP 组的一部分。

    IPMP 组通常由至少两个连接到同一 IP 链路的物理接口组成。但是,如果需要,可以配置单接口 IPMP 组。有关 IPMP 组的简介,请参阅IPMP 接口配置。例如,可以在同一 IPMP 组下配置同一台以太网交换机或同一个 IP 子网。可以在同一 IPMP 组中配置任意数量的接口。

    不能将 ifconfig 命令的 group 参数用于逻辑接口。例如,可以将 group 参数用于 hme0,但是不能用于 hme0:1

  2. 检验组中的每个接口是否具有唯一的 MAC 地址。

    有关说明,请参阅SPARC: 如何确保接口的 MAC 地址是唯一的

  3. 为 IPMP 组选择一个名称。

    任何非空的名称都适合用作组的名称。您可能希望使用一个可以标识接口所连接到的 IP 链路的名称。

  4. 确保在 IPMP 组中的所有接口上推送并配置了同一组 STREAMS 模块。

    同一组中的所有接口必须按相同顺序配置相同的 STREAMS 模块。

    1. 检查将来的 IPMP 组中所有接口上 STREAMS 模块的顺序。

      通过使用 ifconfig interface modlist 命令,可以输出 STREAMS 模块的列表。例如,以下是 hme0 接口的 ifconfig 输出:


      # ifconfig hme0 modlist
      	0 arp
      	1 ip
      	2 hme

      接口通常作为网络驱动程序直接位于 IP 模块之下,如 ifconfig hme0 modlist 的输出中所示。它们应该不需要其他配置。

      但是,某些技术(如 NCA 或 IP 过滤器)会将自身作为 STREAMS 模块插入到 IP 模块和网络驱动程序之间。同一 IPMP 组的接口的行为方式可能会出现问题。

      如果 STREAMS 模块是有状态的,即使将相同模块推送到组中的所有接口上,在进行故障转移时仍可能会出现意外行为。但是,假定按相同顺序将 STREAMS 模块推送到 IPMP 组中的所有接口上,则可以使用无状态 STREAMS 模块。

    2. 按 IPMP 组的标准顺序推送接口的模块。


      ifconfig interface modinsert module-name
      

      ifconfig hme0 modinsert ip
  5. 在 IPMP 组的所有接口上使用相同的 IP 寻址格式。

    如果为 IPv4 配置了一个接口,则必须为 IPv4 配置组的所有接口。假定有一个由多个 NIC 的接口组成的 IPMP 组。如果在一个 NIC 的接口上进行 IPv6 寻址,则必须将 IPMP 组中的所有接口配置为支持 IPv6。

  6. 检查 IPMP 组中的所有接口是否已连接到同一 IP 链路。

  7. 检验 IPMP 组是否包含具有不同网络介质类型的接口。

    组合在一起的接口应属于相同的接口类型,如 /usr/include/net/if_types.h 中定义的那样。例如,不能将以太网接口和令牌环接口组合在一个 IPMP 组中。此外,不能将令牌总线接口与异步传输模式 (asynchronous transfer mode, ATM) 接口组合在同一 IPMP 组中。

  8. 对于具有 ATM 接口的 IPMP,请在 LAN 仿真模式下配置 ATM 接口。

    使用经典的 IP over ATM 的接口不支持 IPMP。

配置 IPMP 组

本节包含有关具有至少两个物理接口的典型 IPMP 组的配置任务。

Procedure如何配置具有多个接口的 IPMP 组

将 VLAN 配置到 IPMP 组时,以下用于配置 IPMP 组的步骤也适用。

开始之前

需要已经配置将来的 IPMP 组中所有接口的 IPv4 地址,如果适用,还需配置 IPv6 地址。


注意 – 注意 –

只能为每个子网或 L2 广播域配置一个 IPMP 组。有关详细信息,请参见IPMP 的基本要求


  1. 在要配置接口的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将每个物理接口放入 IPMP 组。


    # ifconfig interface group group-name
    

    例如,要将 hme0hme1 放入组 testgroup1 中,应键入以下命令:


    # ifconfig hme0 group testgroup1
    # ifconfig hme1 group testgroup1
    

    请避免在组名中使用空格。ifconfig 状态显示不会显示空格。因此,请勿创建两个类似的组名,其中唯一的区别是一个名称还包含空格。如果其中一个组名包含空格,则这些组名在状态显示中看起来是相同的。

    在双栈环境中,如果将某个接口的 IPv4 实例放入特定组中,则 IPv6 实例会自动放入同一组中。

  3. (可选)在一个或多个物理接口上配置 IPv4 测试地址。

    仅当要在特定接口上使用基于探测器的故障检测时,才需要配置测试地址。测试地址将配置为在 ifconfig 命令中指定的物理接口的逻辑接口。

    如果组中的一个接口将成为待机接口,请勿在此时配置该接口的测试地址。作为如何为 IPMP 组配置待机接口的一部分,可以为待机接口配置一个测试地址。

    请使用 ifconfig 命令的以下语法配置测试地址:


    # ifconfig interface addif ip-address parameters -failover deprecated up
    

    例如,可以为主网络接口 hme0 创建以下测试地址:


    # ifconfig hme0 addif 192.168.85.21 netmask + broadcast + -failover deprecated up
    

    此命令可为主网络接口 hme0 设置以下参数:

    • 设置为 192.168.85.21 的地址

    • 设置为缺省值的网络掩码和广播地址

    • 设置的 -failoverdeprecated 选项


      注 –

      必须将 IPv4 测试地址标记为 deprecated,才能防止应用程序使用该测试地址。


  4. 检查特定接口的 IPv4 配置。

    通过键入 ifconfig interface,始终可以查看接口的当前状态。有关查看接口状态的更多信息,请参阅如何获取有关特定接口的信息

    通过指定分配给测试地址的逻辑接口,可以获取有关物理接口的测试地址配置的信息。


    # ifconfig hme0:1
    	hme0:1: flags=9000843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER>
        mtu 1500 index 2 
        inet 192.168.85.21 netmask ffffff00 broadcast 192.168.85.255
  5. (可选)如果适用,请配置 IPv6 测试地址。


    # ifconfig interface inet6 -failover

    具有 IPv6 地址的物理接口会放入与接口的 IPv4 地址相同的 IPMP 组中。如果将具有 IPv4 地址的物理接口配置到 IPMP 组中,则会出现此情况。如果首先将具有 IPv6 地址的物理接口放入 IPMP 组中,则具有 IPv4 地址的物理接口也会隐式放入同一 IPMP 组中。

    例如,要使用 IPv6 测试地址配置 hme0,可键入以下内容:


    # ifconfig hme0 inet6 -failover
    

    无需将 IPv6 测试地址标记为 deprecated 即可防止应用程序使用该测试地址。

  6. 检查 IPv6 配置。


    # ifconfig hme0 inet6
    	hme0: flags=a000841<UP,RUNNING,MULTICAST,IPv6,NOFAILOVER> mtu 1500 index 2
            	inet6 fe80::a00:20ff:feb9:17fa/10 
            	groupname test

    IPv6 测试地址是指接口的链路本地地址。

  7. (可选)重新引导后保留 IPMP 组配置。

    • 对于 IPv4,请将以下行添加到 /etc/hostname.interface 文件:


      interface-address <parameters> group group-name up \
      	addif logical-interface -failover deprecated <parameters> up

      在此情况下,测试 IPv4 地址仅在下次重新引导时配置。如果要在当前会话中调用配置,请执行步骤 1、2 和 3(可选)。

    • 对于 IPv6,请将以下行添加到 /etc/hostname6.interface 文件:


      -failover group group-name up

      此测试 IPv6 地址仅在下次重新引导时配置。如果要在当前会话中调用配置,请执行步骤 1、2 和 5(可选)。

  8. (可选)通过重复步骤 1 至 6,将更多接口添加到 IPMP 组中。

    可以将新接口添加到实时系统上的现有组中。但是,重新引导后更改会丢失。


示例 31–1 配置具有两个接口的 IPMP 组

假定您要执行以下操作:

可键入以下命令:


# ifconfig hme0 addif 192.168.85.21 netmask + broadcast + -failover deprecated up

必须将 IPv4 测试地址标记为 deprecated,才能防止应用程序使用该测试地址。请参见如何配置具有多个接口的 IPMP 组

要启用地址的故障转移属性,可使用不带连字符的 failover 选项。

IPMP 组中的所有测试 IP 地址都必须使用相同的网络前缀。测试 IP 地址必须属于单个 IP 子网。



示例 31–2 重新引导后保留 IPv4 IPMP 组配置

假定您要创建一个名为 testgroup1 的具有以下配置的 IPMP 组:

可将以下行添加到 /etc/hostname.hme0 文件:


192.168.85.19 netmask + broadcast + group testgroup1 up \
	addif 192.168.85.21 deprecated -failover netmask + broadcast + up

同样,要将第二个接口 hme1 放入同一组 testgroup1 中并且配置测试地址,可添加以下行:


192.168.85.20 netmask + broadcast + group testgroup1 up \
	addif 192.168.85.22 deprecated -failover netmask + broadcast + up


示例 31–3 重新引导后保留 IPv6 IPMP 组配置

要为具有 IPv6 地址的接口 hme0 创建测试组,可将以下行添加到 /etc/hostname6.hme0 文件:


-failover group testgroup1 up

同样,要将第二个接口 hme1 放入组 testgroup1 中并且配置测试地址,可将以下行添加到 /etc/hostname6.hme1 文件:


-failover group testgroup1 up

故障排除

在 IPMP 组的配置过程中,in.mpathd 向系统控制台或 syslog 文件输出大量消息。这些消息实质是提示性消息,表示 IPMP 配置工作正常。

另请参见

如果希望 IPMP 组具有活动-待机配置,请转到如何为 IPMP 组配置待机接口

配置目标系统

基于探测器的故障检测涉及目标系统的使用,如基于探测器的故障检测中所述。对于某些 IPMP 组,in.mpathd 会使用大量的缺省目标。但是,对于另一些 IPMP 组,则可能需要为基于探测器的故障检测配置特定目标。通过将路由表中的主机路由设置为探测目标,可以完成基于探测器的故障检测。缺省路由器的前面将列出在路由表中配置的任何主机路由。因此,IPMP 会使用明确定义的主机路由来选择目标。可以使用以下两种方法中的任一种直接指定目标: 手动设置主机路由或创建可以成为启动脚本的 shell 脚本。

在评定网络中的哪些主机可能成为合适的目标时,请考虑以下标准。

Procedure如何为基于探测器的故障检测手动指定目标系统

  1. 使用您的用户帐户登录到要在其中配置基于探测器的故障检测的系统。

  2. 将路由添加到要用作基于探测器的故障检测中的目标的特定主机。


    $ route add -host destination-IP gateway-IP -static
    

    destination-IPgateway-IP 的值替换为要用作目标的主机的 IPv4 地址。例如,可以键入以下内容以指定目标系统 192.168.85.137,该目标系统与 IPMP 组 testgroup1 中的接口位于同一子网中。


    $ route add -host 192.168.85.137 192.168.85.137 -static 
    
  3. 将路由添加到网络中要用作目标系统的其他主机。

Procedure如何在 Shell 脚本中指定目标系统

  1. 在已配置 IPMP 组的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 创建一个将静态路由设置为建议目标的 shell 脚本。

    例如,可以创建一个名为 ipmp.targets 的包含以下内容的 shell 脚本:


    TARGETS="192.168.85.117 192.168.85.127 192.168.85.137"
    
    case "$1" in
            'start')
                /usr/bin/echo "Adding static routes for use as IPMP targets"
    		for target in $TARGETS; do
    	  /usr/sbin/route add -host $target $target
    		done
                      ;;
            'stop')
                  /usr/bin/echo "Removing static routes for use as IPMP targets"
    		 for target in $TARGETS; do
    		/usr/sbin/route delete -host $target $target
    		 done
                      ;;
      esac  
  3. 将 shell 脚本复制到启动脚本目录中。


     # cp ipmp.targets /etc/init.d  
    
  4. 更改新启动脚本的权限。


    # chmod 744 /etc/init.d/ipmp.targets
    
  5. 更改新启动脚本的拥有权。


    # chown root:sys /etc/init.d/ipmp.targets
    
  6. /etc/init.d 目录中为启动脚本创建链接。


    # ln /etc/init.d/ipmp.targets /etc/rc2.d/S70ipmp.targets
    

    文件名 S70ipmp.targets 中的 S70 前缀会将新脚本相对其他启动脚本正确进行排序。

配置待机接口

如果希望 IPMP 组具有活动-待机配置,请使用此过程。有关此类型配置的更多信息,请参阅IPMP 接口配置

Procedure如何为 IPMP 组配置待机接口

开始之前

有关配置 IPMP 组和指定测试地址的信息,请参阅如何配置具有多个接口的 IPMP 组

  1. 在要配置待机接口的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将一个接口配置为待机接口并指定测试地址。


    # ifconfig interface plumb \
    ip-address other-parameters deprecated -failover standby up
    

    待机接口只能具有一个 IP 地址,即测试地址。设置 standby up 选项之前,必须先设置 -failover 选项。对于 <other-parameters>,请使用您的配置所需的参数,如 ifconfig(1M) 手册页中所述。

    • 例如,要创建 IPv4 测试地址,可键入以下命令:


      # ifconfig hme1 plumb 192.168.85.22 netmask + broadcast + deprecated -failover standby up
      
      hme1

      hme1 定义为要配置为待机接口的物理接口。

      192.168.85.22

      将此测试地址指定给待机接口。

      deprecated

      表示测试地址不用于外发包。

      -failover

      表示在接口出现故障时测试地址不进行故障转移。

      standby

      将接口标记为待机接口。

    • 例如,要创建 IPv6 测试地址,可键入以下命令:


      # ifconfig hme1 plumb -failover standby up
      
  3. 检查待机接口配置的结果。


    # ifconfig hme1
    hme1: flags=69040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER,
          STANDBY,INACTIVE mtu 1500 
             index 4 inet 192.168.85.22 netmask ffffff00 broadcast 19.16.85.255
             groupname test

    INACTIVE 标志表示此接口不用于任何外发包。此待机接口上发生故障转移时,会清除 INACTIVE 标志。


    注 –

    通过键入 ifconfig interface 命令,始终可以查看接口的当前状态。有关查看接口状态的更多信息,请参阅如何获取有关特定接口的信息


  4. (可选)重新引导后保留 IPv4 待机接口。

    将待机接口指定给同一 IPMP 组,并为该待机接口配置测试地址。

    例如,要将 hme1 配置为待机接口,可将以下行添加到 /etc/hostname.hme1 文件:


    192.168.85.22 netmask + broadcast + deprecated group test -failover standby up 
  5. (可选)重新引导后保留 IPv6 待机接口。

    将待机接口指定给同一 IPMP 组,并为该待机接口配置测试地址。

    例如,要将 hme1 配置为待机接口,可将以下行添加到 /etc/hostname6.hme1 文件:


    -failover group test standby up

示例 31–4 为 IPMP 组配置待机接口

假定您要创建具有以下配置的测试地址:

应键入以下内容:


# ifconfig hme2 plumb 192.168.85.22 netmask + broadcast + \
deprecated -failover standby up

仅当地址标记为 NOFAILOVER 地址时,才会将接口标记为待机接口。

通过键入以下内容,可以删除接口的待机状态:


# ifconfig interface -standby

配置具有单个物理接口的 IPMP 组

如果 IPMP 组中仅有一个接口,则无法进行故障转移。但是,可以通过将接口指定给 IPMP 组对该接口启用故障检测。不必配置专用的测试 IP 地址,即可为单接口 IPMP 组建立故障检测。可以使用单个 IP 地址发送数据和检测故障。

Procedure如何配置单接口 IPMP 组

  1. 在将来具有单接口 IPMP 组的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 对于 IPv4,创建单接口 IPMP 组。

    使用以下语法将单个接口指定给 IPMP 组。


    # ifconfig interface group group-name
    

    以下示例会将接口 hme0 指定给 IPMP 组 v4test


    # ifconfig hme0 group v4test
    

    执行此步骤之后,IPMP 会对接口启用基于链路的故障检测。

    此外,还可以使用 ifconfig 命令的 -failover 子命令启用基于探测器的故障检测。以下示例通过使用当前指定给 hme0 的 IP 地址对 hme0 启用基于探测器的故障 hme0:


    # ifconfig hme0 -failover
    

    请注意,与多接口组不同,同一 IP 地址既可充当数据地址,又可充当测试地址。要让应用程序将测试地址用作数据地址,不能针对单接口 IPMP 组将测试地址标记为 deprecated

  3. 对于 IPv6,创建单接口 IPMP 组。

    使用以下语法将单个接口指定给 IPMP 组:


    # ifconfig interface inet6 group group-name
    

    例如,要将单个接口 hme0 添加到 IPMP 组 v6test 中,请键入以下内容:


    # ifconfig hme0 inet6 group v6test
    

    执行此步骤之后,IPMP 会对接口启用基于链路的故障检测。

    此外,还可以使用 ifconfig 命令的 -failover 子命令启用基于探测器的故障检测。以下示例通过使用当前指定给 hme0 的 IP 地址对 hme0 启用基于探测器的故障 hme0:


    # ifconfig hme0 inet6 -failover
    

    请注意,与多接口组不同,同一 IP 地址既可充当数据地址,又可充当测试地址。要让应用程序将测试地址用作数据地址,不能针对单接口 IPMP 组将测试地址标记为 deprecated

    在单物理接口配置中,无法检验所探测的目标系统是否已出现故障或者接口是否已出现故障。仅可以通过一个物理接口来探测目标系统。如果子网中仅有一个缺省路由器,则当组中仅有一个物理接口时,关闭 IPMP。如果存在单独的 IPv4 和 IPv6 缺省路由器,或者存在多个缺省路由器,则需要探测多个目标系统。因此,可以安全地打开 IPMP。

维护 IPMP 组

本节包含维护现有 IPMP 组以及组成这些组的接口的任务。这些任务假定已按配置 IPMP 组中的说明配置了 IPMP 组。

Procedure如何显示接口的 IPMP 组成员关系

  1. 在具有 IPMP 组配置的系统上,成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 显示有关接口的信息,包括接口所属的组。


    # ifconfig interface
    
  3. 如果适用,请显示接口的 IPv6 信息。


    # ifconfig interface inet6
    

示例 31–5 显示物理接口组

要显示 hme0 的组名,可键入以下内容:


# ifconfig hme0
	hme0: flags=9000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 
      index 2 inet 192.168.85.19 netmask ffffff00 broadcast 192.168.85.255
      groupname testgroup1

要显示仅用于 IPv6 信息的组名,可键入以下内容:


# ifconfig hme0 inet6
	hme0: flags=a000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
        	inet6 fe80::a00:20ff:feb9:19fa/10 
        	groupname testgroup1

Procedure如何将接口添加到 IPMP 组

  1. 在具有 IPMP 组配置的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将接口添加到 IPMP 组。


    # ifconfig interface group group-name
    

    interface 中指定的接口会成为 IPMP 组 group-name 的成员。


示例 31–6 将接口添加到 IPMP 组

要将 hme0 添加到 IPMP 组 testgroup2,可键入以下命令:


# ifconfig hme0 group testgroup2
  hme0: flags=9000843<UP ,BROADCAST,RUNNING,MULTICAST,IPv4,NOFAILOVER> mtu 1500 index 2
  inet 192.168.85.19 netmask ff000000 broadcast 10.255.255.255
  groupname testgroup2
  ether 8:0:20:c1:8b:c3 

Procedure如何从 IPMP 组中删除接口

执行 ifconfig 命令的包含空字符串的 group 参数时,将从接口的当前 IPMP 组中删除该接口。从组中删除接口时请务必谨慎。如果 IPMP 组中的其他某个接口出现故障,则故障转移可能会提早发生。例如,如果 hme0 以前出现过故障,则当 hme1 位于同一组中时,所有地址都将故障转移到 hme1。从组中删除 hme1 会导致 in.mpathd 守护进程将所有故障转移地址返回到组中的其他某个接口。如果组中的其他接口都未运行,则故障转移可能无法恢复所有网络访问。

同样,需要取消检测组中的某个接口时,应首先从组中删除该接口。然后,确保该接口已配置了所有的初始 IP 地址。in.mpathd 守护进程会尝试恢复从组中删除的接口的初始配置。您需要确保在取消检测接口之前恢复配置。请参阅接口故障转移期间发生的情况以了解接口在故障转移前后的外观。

  1. 在具有 IPMP 组配置的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 从 IPMP 组中删除接口。


    # ifconfig interface group ""

    引号表示空字符串。


示例 31–7 从组中删除接口

要从 IPMP 组 test 中删除 hme0,可键入以下命令:


# ifconfig hme0 group ""
	# ifconfig hme0
	hme0: flags=9000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500
    index 2 inet 192.168.85.19 netmask ffffff00 broadcast 192.168.85.255
	# ifconfig hme0 inet6
	hme0: flags=a000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
    inet6 fe80::a00:20ff:feb9:19fa/10 

Procedure如何将接口从一个 IPMP 组移动到另一个组

如果某个接口属于现有的 IPMP 组,则可以将该接口放入新的 IPMP 组中。无需从当前 IPMP 组中删除该接口。接口放入新组中后,该接口将自动从任何现有的 IPMP 组中删除。

  1. 在具有 IPMP 组配置的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将接口移动到新的 IPMP 组。


    # ifconfig interface group group-name
    

    如果将接口放入新组中,则会自动从任何现有组中删除该接口。


示例 31–8 将接口移动到其他 IPMP 组

要更改接口 hme0 的 IPMP 组,应键入以下内容:


# ifconfig hme0 group cs-link

此命令会从 IPMP 组 test 中删除 hme0 接口,然后将其放入组 cs-link 中。


在支持动态重新配置的系统上替换出现故障的物理接口

本节包含与管理支持动态重新配置 (dynamic reconfiguration, DR) 的系统有关的过程。


注 –

这些任务仅与使用 ifconfig 命令配置的 IP 层有关。如果 IP 层前后的层(如 ATM 或其他服务)未自动化,则它们需要使用特定的手动步骤。以下过程中的步骤用于在预分离过程中取消配置接口以及在连接之后配置接口。


Procedure如何删除出现故障的物理接口(DR 分离)

此过程说明如何在支持 DR 的系统上删除物理接口。该过程假设已具备以下条件:


注 –

如果测试地址是使用 /etc/hostname.hme0 文件检测的,则可以跳过步骤 2。


  1. 在具有 IPMP 组配置的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 显示测试地址配置。


    # ifconfig hme0:1
    
    hme0:1:
    flags=9040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER>
    mtu 1500 index 3
    inet 192.168.233.250 netmask ffffff00 broadcast 192.168.233.255

    替换物理接口时,需要使用此信息重新检测测试地址。

  3. 删除物理接口。

    有关如何删除物理接口的完整说明,请参阅以下资料:

    • cfgadm(1M) 手册页

    • Sun Enterprise 6x00, 5x00, 4x00, and 3x00 Systems Dynamic Reconfiguration User's Guide

    • Sun Enterprise 10000 DR 配置指南

Procedure如何替换出现故障的物理接口(DR 连接)

此过程说明如何在支持 DR 的系统上替换物理接口。

  1. 在具有 IPMP 组配置的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 替换物理接口。

    请参阅以下资料中的说明:

    • cfgadm(1M) 手册页

    • Sun Enterprise 6x00, 5x00, 4x00, and 3x00 Systems Dynamic Reconfiguration User's Guide

    • 《Sun Enterprise 10000 DR 配置指南》《Sun Fire 880 Dynamic Reconfiguration User's Guide》

恢复系统引导时不存在的物理接口


注 –

以下过程仅与使用 ifconfig 命令配置的 IP 层有关。如果 IP 层前后的层(如 ATM 或其他服务)未自动化,则它们需要使用特定的手动步骤。以下过程中的特定步骤用于在预分离过程中取消配置接口以及在连接之后配置接口。


对于位于 Sun Fire™ 平台的 I/O 板上的接口,动态重新配置后的恢复是自动进行的。如果 NIC 是 Sun Crypto 加速器 I - cPCI 板,则恢复也是自动进行的。因此,对于在 DR 操作过程中恢复的接口,不需要执行以下步骤。有关 Sun Fire x800 和 Sun Fire 15000 系统的更多信息,请参见 cfgadm_sbd(1M) 手册页。物理接口将故障恢复到在 /etc/hostname. interface 文件中指定的配置。有关如何将接口配置为在重新引导后保留配置的详细信息,请参见配置 IPMP 组


注 –

在 Sun Fire 传统 (Exx00) 系统上,DR 分离仍须手动进行。但是,DR 连接是自动进行的。


Procedure如何恢复系统引导时不存在的物理接口

恢复系统引导时不存在的物理接口之前,必须完成以下过程。此过程中的示例具有以下配置:


注 –

在恢复出现故障的物理接口的过程中,IP 地址的故障恢复需要长达三分钟。此时间可能会随网络通信流量的不同而不同。此时间还取决于通过 in.mpathd 守护进程对故障转移的接口进行故障恢复的传入接口的稳定性。


  1. 在具有 IPMP 组配置的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 从控制台日志的故障错误消息中检索故障网络的信息。

    请参见 syslog(3C) 手册页。错误消息可能与以下内容类似:


    moving addresses from failed IPv4 interfaces:
    hme1 (moved to hme0)

    此消息表示故障接口 hme1 上的 IPv4 地址已故障转移到 hme0 接口。

    或者,可能收到以下类似消息:


    moving addresses from failed IPv4 interfaces:
    hme1 (couldn't move, no alternative interface)

    此消息表示在故障接口 hme1 所在的组中无法找到活动接口。因此,hme1 上的 IPv4 地址无法故障转移。

  3. 将物理接口连接到系统。

    有关如何替换物理接口的说明,请参阅以下内容:

    • cfgadm(1M) 手册页

    • Sun Enterprise 10000 DR 配置指南

    • Sun Enterprise 6x00, 5x00, 4x00, and 3x00 Systems Dynamic Reconfiguration User's Guide

  4. 请参阅步骤 2 中的消息内容。如果无法移动地址,请转到步骤 6。如果地址已移动,请继续执行步骤 5。

  5. 取消检测在故障转移过程中配置的逻辑接口。

    1. 查看 /etc/hostname. moved-from-interface 文件的内容,确定哪些逻辑接口已在故障转移过程中配置。

    2. 取消检测每个故障转移 IP 地址。


      # ifconfig moved-to-interface removeif moved-ip-address
      

      注 –

      故障转移地址标记有 failover 参数,或者未标记有 -failover 参数。无需对标记有 -failover 的 IP 地址取消检测。


      例如,假定 /etc/hostname.hme0 文件的内容包含以下行:


      inet 10.0.0.4 -failover up group one
      addif 10.0.0.5 failover up
      addif 10.0.0.6 failover up

      要取消检测每个故障转移 IP 地址,可键入以下命令:


      # ifconfig hme0 removeif 10.0.0.5
      # ifconfig hme0 removeif 10.0.0.6
  6. 通过对已删除的每个接口键入以下命令,为已替换的物理接口重新配置 IPv4 信息:


    # ifconfig removed-from-NIC <parameters>

    例如,可键入以下命令:


    # ifconfig hme1 inet plumb
    # ifconfig hme1 inet 10.0.0.4 -failover up group one
    # ifconfig hme1 addif 10.0.0.5 failover up
    # ifconfig hme1 addif 10.0.0.6 failover up

修改 IPMP 配置

使用 IPMP 配置文件 /etc/default/mpathd 为 IPMP 组配置以下系统范围的参数。

Procedure如何配置 /etc/default/mpathd 文件

  1. 在具有 IPMP 组配置的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 编辑 /etc/default/mpathd 文件。

    更改这三个参数中的一个或多个参数的缺省值。

    1. FAILURE_DETECTION_TIME 参数键入新值。


      FAILURE_DETECTION_TIME=n
      

      其中 n 是 ICMP 探测器用来检测是否发生接口故障的时间(以秒为单位)。缺省值是 10 秒。

    2. FAILBACK 参数键入新值。


      FAILBACK=[yes | no]
      • yesyes 值是 IPMP 的缺省故障恢复行为。当检测到故障接口修复时,网络访问故障恢复到已修复的接口,如IPMP 故障检测和恢复功能中所述。

      • nono 指示数据通信不会移回已修复的接口。当检测到某个故障接口已修复时,会为此接口设置 INACTIVE 标志。此标志表示该接口当前不用于数据通信,但该接口仍可用于探测器通信。

        例如,假设 IPMP 组由两个接口 ce0 和 ce1 组成。然后假定在 /etc/default/mpathd 中设置了值 FAILBACK=no。如果 ce0 出现故障,它的通信将会故障转移至 ce1,这是 IPMP 的预期行为。但是,当 IPMP 检测到 ce0 已修复时,通信不会从 ce1 进行故障恢复,这是因为在 /etc/default/mpathd 中设置了参数 FAILBACK=no。ce0 接口保持 INACTIVE 状态并且不用于通信,除非 ce1 接口出现故障。如果 ce1 接口出现故障, ce1 上的地址会迁移回 ce0,其 INACTIVE 标志也随之被清除。发生此迁移的前提条件是 ce0 是该组中唯一的 INACTIVE 接口。如果该组中存在其他的 INACTIVE 接口,这些地址可能会迁移到 ce0 以外的 INACTIVE 接口。

    3. TRACK_INTERFACES_ONLY_WITH_GROUPS 参数键入新值。


      TRACK_INTERFACES_ONLY_WITH_GROUPS=[yes | no]
      • yesyes 值是 IPMP 的缺省行为。此参数使 IPMP 忽略未配置到 IPMP 组中的网络接口。

      • nono 值为所有网络接口设置故障和修复检测,无论它们是否配置到 IPMP 组中。但是,如果在未配置到 IPMP 组中的接口上检测到故障或修复,不会发生故障转移或故障恢复。因此,no 值仅用于报告故障,并不能直接提高网络可用性。

  3. 重新启动 in.mpathd 守护进程。


    # pkill -HUP in.mpathd