在 Oracle® Solaris 11.2 中管理 TCP/IP 网络、IPMP 和 IP 隧道

退出打印视图

更新时间: 2014 年 7 月
 
 

基于探测器的故障检测

基于探测器的故障检测包括使用 ICMP 探测器检查接口是否已经出现故障。此故障检测方法的实现取决于是否使用了测试地址。

使用测试地址的基于探测器的故障检测

这种故障检测方法涉及发送和接收使用测试地址的 ICMP 探测器消息。这些消息也称为探测器通信测试通信,它们通过接口发送到同一本地网络上的一个或多个目标系统。in.mpathd 守护进程通过已为基于探测器的故障检测配置的所有接口分别探测所有目标。如果给定接口对五个连续的探测器未做出任何响应,则 in.mpathd 守护进程认为该接口已出现故障。探测速率取决于故障检测时间 (failure detection time, FDT)。故障检测时间的缺省值是 10 秒。不过,您可以在 IPMP 配置文件中调整 FDT。有关说明,请参见如何配置 IPMP 守护进程的行为

要优化基于探测器的故障检测,您必须将多个目标系统设置为接收来自 in.mpathd 守护进程的探测器。通过使用多个目标系统,您可以更好地确定报告的故障的性质。例如,唯一定义的目标系统没有响应,则表示故障可能在目标系统中,也可能在 IPMP 组的接口之一中。相比之下,如果几个目标系统中只有一个系统没有响应探测器,则故障可能在目标系统中,而不在 IPMP 组本身中。

in.mpathd 守护进程确定要动态探测哪些目标系统。首先,守护进程在路由表中搜索与 IPMP 组的接口相关联的测试地址所在子网中的目标系统。如果找到这样的目标,则守护进程使用它们作为探测目标。如果没有发现位于同一子网上的目标系统,则该守护进程将发送多播包以探测链路上的相邻主机。多播包将发送到所有主机多播地址(在 IPv4 中为 224.0.0.1,在 IPv6 中为 ff02::1),以确定要用作目标系统的主机。对回显包作出响应的前五个主机将被选作探测目标。如果守护进程找不到响应多播探测器的路由器或主机,则该守护进程将无法检测基于探测器的故障。在这种情况下,ipmpstat –i 命令将探测器状态报告为 unknown

可以使用主机路由明确配置 in.mpathd 守护进程要使用的目标系统的列表。有关说明,请参见配置基于探测器的故障检测

不使用测试地址的基于探测器的故障检测

    在没有测试地址的情况下,使用两种类型的探测器实现此方法:

  • ICMP 探测器

    ICMP 探测器由 IPMP 组中的活动接口发送,用于探测在路由表中定义的目标。活动接口是可以接收发送到该接口的链路层 (L2) 地址的传入 IP 包的底层接口。ICMP 探测器使用数据地址作为探测器的源地址。如果 ICMP 探测器到达目标并从目标获得响应,则活动接口能正常工作。

  • 传递式探测器

    传递式探测器由 IPMP 组中的备用接口发送,用于探测活动接口。备用接口是不主动接收任何传入 IP 包的底层接口。

    以包含四个底层接口和一个数据地址的 IPMP 组为例。在此配置中,传出包可以使用所有底层接口。然而,传入包只能由绑定到该数据地址的接口接收。其余三个不能接收传入包的底层接口就是备用接口

    如果备用接口可以成功地将探测器发送到活动接口并收到响应,则活动接口能正常工作,同时也推断出该备用接口发送了探测器。


注 -  在 Oracle Solaris 中,使用测试地址执行基于探测器的故障检测。要选择不使用测试地址的基于探测器的故障检测,必须手动启用传递式探测。有关说明,请参见选择故障检测方法

组故障

当 IPMP 组中的所有接口同时出现故障时,则发生组故障。在这种情况下,没有可用的底层接口。此外,如果所有目标系统同时出现故障并且启用了基于探测器的故障检测,in.mpathd 守护进程会刷新其所有当前目标系统并探测新的目标系统。

在没有测试地址的 IPMP 组中,将可以探测活动接口的单一接口指定为探测器。此指定的接口会同时设置 FAILED 标志和 PROBER 标志。数据地址绑定到此接口,从而允许接口继续探测目标以检测恢复。