IPMP 配置

IPMP 配置通常由连接到同一 LAN 的同一系统上的两个或者多个物理接口组成。
这些接口可以属于以下任一配置中的 IPMP 组:

主主 模式(Active-active)

在此配置中,所有底层接口都处于活动状态。
活动接口是当前可供 IPMP 组使用的 IP 接口。
默认情况下,当我们将接口配置为成为 IPMP 组的一部分时,底层接口将变为活动状态。

主备 模式(Active-standby)

在此配置中,至少有一个接口在管理上配置为保留。
备用接口称为备用接口。
虽然空闲,但备用 IP 接口由多路径守护程序监视以跟踪接口的可用性,具体取决于接口的配置方式。
如果接口支持链路故障通知,则使用基于链路的故障检测。
如果接口配置了测试地址,也会使用基于探针的故障检测。
如果主接口出现故障,备接口会根据需要自动部署。
我们可以为 IPMP 组配置任意数量的备用接口。

配置 IPMP:主主 模式

以下是配置具有灵活数据链路名称的主动-主动 IPMP 配置的步骤。

  1. 首先,将数据链路 net0 和 net1 分别重命名为 link0_ipmp0 和 link1_ipmp0。
    在 IPMP 可以使用这些数据链路之前,我们必须为每个数据链路创建一个 IP 接口。
# dladm rename-link net0 link0_ipmp0 
# dladm rename-link net1 link1_ipmp0
# ipadm create-ip link0_ipmp0 
# ipadm create-ip link1_ipmp0
  1. 现在我们已准备好创建 IPMP 组。
    这包括两个步骤。
    首先创建 IPMP 组(本例中为 ipmp0),然后将底层接口(link0_ipmp0 和 link1_ipmp0)添加到组中。
# ipadm create-ipmp ipmp0
# ipadm add-ipmp -i link0_ipmp0 -i link1_ipmp0 ipmp0
  1. 接下来,将数据IP地址以IP地址对象(ipmp0/v4add1和ipmp0/v4add2)的形式分配给IPMP接口(ipmp0)。
# ipadm create-addr -a 192.168.0.112/24 ipmp0/v4add1
# ipadm create-addr -a 192.168.0.113/24 ipmp0/v4add2
  1. 最后,将测试IP地址以IP地址对象(link0_ipmp0/test和link1_ipmp0/test)的形式分配给各个底层接口。
# ipadm create-addr -a 192.168.0.142/24 link0_ipmp0/test 
# ipadm create-addr -a 192.168.0.143/24 link1_ipmp0/test

监控IPMP

我们可以使用 ipmpstat 命令来监视 IPMP 组活动和运行状况。
下面显示了 ipmpstat 用法的三个示例。
我们在此处看到的示例取自通过上一节中显示的过程创建的 IPMP 活动-备用配置。
其中:底层接口之一出现故障。

第一个示例 (ipmpstat -g) 显示有关 IPMP 组的信息。
IPMP 组名为 ipmp0。
它具有三个底层接口:link0_ipmp0、link1_impm0 和 link2_ipmp0。
请注意,IPMP 组的状态已降级,并且底层接口 link0_ipmp0 周围有括号(带框),表明它已失败。

# ipmpstat -g
GROUP    GROUPNAME    STATE       FDT       INTERFACES
ipmp0    ipmp0       degraded     10.00s    link2_ipmp0 link1_ipmp0 [link0_ipmp0]

第二个示例 (ipmpstat -i) 显示有关 IP 接口的信息。
此处,link2_ipmp0 处于 Active 状态,link0_ipmp0 处于 Failed 状态。

# ipmpstat -i
INTERFACE      ACTIVE    GROUP     FLAGS       LINK     PROBE      STATE
link2_ipmp0    yes       ipmp0     -s-----     up       ok         ok
link1_ipmp0    yes       ipmp0     --mbM--     up       ok         ok
link0_ipmp0    no        ipmp0     -------     up       failed     failed

第三个示例 (ipmpstat -an) 显示有关 IPMP 数据地址的信息。
IP 地址 192.168.0.112 当前分配给备用接口 (link2_ipmp0),192.168.0.113 分配给所有 INBOUND 数据流量的 link1_ipmp0。
OUTBOUND 数据流量分布在每个 IP 地址的两个活动接口上。

# ipmpstat -an
ADDRESS          STATE    GROUP    INBOUND         OUTBOUND
::               down     ipmp0    --              -
192.168.0.113    up       ipmp0    link1_ipmp0     link2_ipmp0 link1_ipmp0 
192.168.0.112    up       ipmp0    link2_ipmp0     link2_ipmp0 link1_ipmp0

下面的示例 (ipmpstat -pn) 显示了有关 IPMP 探针的信息。
要使 IPMP 探测正常工作,IPMP 组必须连接到局域网,并且至少一台其他主机(探测目标)也必须连接到同一网络。

# ipmpstat -pn
TIME     INTERFACE      PROBE     NETRTT     RTT         RTTAVG       TARGET
0.06s    link2_ipmp0    i163      0.26ms     0.49ms      0.33ms       192.168.0.100
0.90s    link1_ipmp0    i162      0.26ms     0.39ms      0.31ms       192.168.0.100   
0.92s    link2_ipmp0    i164      0.19ms     0.36ms      0.34ms       192.168.0.100
0.49s    link0_ipmp0    i161      --         --          --           192.168.0.100
-0.49s   link0_ipmp0    i160      --         --          --           192.168.0.100
....

此处,link2_ipmp0(备用)和link1_ipmp0 接口正在主动探测目标192.168.0.100。
接口 link0_ipmp0 探测失败。

IPMP 中的故障检测

为确保网络持续可用以发送或者接收流量,IPMP 对 IPMP 组的底层 IP 接口执行故障检测。
出现故障的接口在修复之前一直无法使用。
剩余的活动接口继续运行,同时根据需要部署任何现有的备用接口。

IPMP 对 IPMP 组的底层 IP 接口执行故障检测,以确保网络持续可用以发送或者接收流量。

in.mpathd 守护进程处理以下类型的故障检测:

  • 两种基于探针的故障检测:
  • 未配置测试地址。
  • 测试地址已配置。
  • 如果 NIC 驱动程序支持,则基于链路的故障检测。

IPMP 组件

IPMP 由以下软件组件组成:

  • IPMP 守护进程:通过接口发送 ICMP 回声探测来检测故障,并监视接口上的 RUNNING 标志。如果通过这些方法之一检测到故障,守护程序将选择备用 IP 地址或者下一个适当的 IP 地址并进行故障转移。
  • IPMP 服务:管理 IPMP 守护进程。 IPMP 服务还设置 IPMP 属性,例如启用或者禁用传递探测。
  • 配置文件:指定守护程序的默认行为。此文件可用于设置参数,例如指定要探测故障的接口和持续时间。此文件还可用于指定故障接口在修复后应处于何种状态,或者是否监视所有接口,包括不属于 IPMP 组的接口。
  • IPMP 管理命令:管理 IPMP 组的 IP 接口
  • IPMP 显示信息命令:提供有关 IPMP 状态的信息
更多: zhilu jiaocheng

配置 IPMP:主备 模式

下面的示例显示了使用灵活的数据链路名称配置活动-备用 IPMP 配置的步骤。
这些步骤类似于 Active-Active IPMP 配置中显示的步骤。

  1. 首先,将数据链路 net0、net1 和 net2 分别重命名为 link0_ipmp0、link1_ipmp0 和 link2_ipmp0。
# dladm rename-link net0 link0_ipmp0 
# dladm rename-link net1 link1_ipmp0 
# dladm rename-link net2 link2_ipmp0
  1. 然后为每个接口创建一个 IP 接口。
# ipadm create-ip link0_ipmp0 
# ipadm create-ip link1_ipmp0 
# ipadm create-ip link2_ipmp0
  1. 现在我们创建 IPMP 组。
    这包括两个步骤。
    首先创建 IPMP 组(本例中为 ipmp0),然后将底层接口(link0_ipmp0、link1_ipmp0 和 link2_ipmp0)添加到组中。
# ipadm create-ipmp ipmp0
# ipadm add-ipmp -i link0_ipmp0 -i link1_ipmp0 -i link2_ipmp0 ipmp0
  1. 创建 IPMP 组后,将其中一个底层接口(本例中为 link2_ipmp0)中的备用属性设置为 on。
# ipadm set-ifprop -p standby=on -m ip link2_ipmp0
  1. 接下来,将数据IP地址以IP地址对象(ipmp0/v4add1和ipmp0/v4add2)的形式分配给IPMP接口(ipmp0)。
# ipadm create-addr -a 192.168.0.112/24 ipmp0/v4add1
# ipadm create-addr -a 192.168.0.113/24 ipmp0/v4add2
  1. 最后,将测试IP地址以IP地址对象(link0_ipmp0/test、link1_ipmp0/test、link2_ipmp0)的形式分配给各个底层接口。
# ipadm create-addr -a 192.168.0.142/24 link0_ipmp0/test 
# ipadm create-addr -a 192.168.0.143/24 link1_ipmp0/test 
# ipadm create-addr -a 192.168.0.144/24 link2_ipmp0/test
如何在 Solaris 11 中配置 IPMP

在生产环境中,消除任何单点故障非常重要。
IP 网络多路径 (IPMP) 提供了一种用于构建冗余网络接口的机制,以防止网络接口、电缆、交换机或者其他网络硬件出现故障。
除了消除任何单点故障之外,IPMP 负载分散功能还通过在同一 IPMP 组中的所有卡之间分散出站负载来增加机器的带宽。

与 Oracle Solaris 10 中的 IPMP 配置相比,Oracle Solaris 11 将 IP 接口分组为一个虚拟 IP 接口(例如,ipmp0)。
虚拟 IP 接口为所有数据 IP 地址提供服务,而用于基于探测的故障检测的测试地址分配给底层接口,例如 net0。

使用 IPMP,我们可以将两个或者多个 NIC 分配给一个故障转移组。
每个接口都分配了一个静态测试 IP 地址,Solaris 使用它来验证接口的操作状态。
具有静态测试 IP 地址的接口用于定期向目标系统发送 Internet 控制消息协议 (ICMP) 回显请求并侦听响应。
如果在给定的尝试次数内未发生响应,则链接被标记为失败。
IPMP 会将当前在该物理接口上配置的所有应用程序 IP 地址故障转移到 IPMP 组内的另一个物理接口。
通过这种方式,消除了由于网络硬件故障导致的网络中断。

日期:2020-09-17 00:15:05 来源:oir作者:oir