2. 主备配置示例

让我们通过将 net2 设置为备用接口来配置基于活动/备用链路的 IPMP 配置。

Active Interface  : e1000g1 (net1)
Standby Interface : e1000g2 (net2)
Data IP           : 192.168.1.10

要将 net2 接口设置为备用接口:

# ipadm set-ifprop -p standby=on -m ip net2

检查各个接口的状态。
观察第 2 列。
net2 接口未激活。

#  ipmpstat -i
INTERFACE   ACTIVE  GROUP       FLAGS     LINK      PROBE     STATE
net2        no      ipmp0       is-----   up        disabled  ok
net1        yes     ipmp0       --mb---   up        disabled  ok

我们还可以确认 ifconfig 命令输出中的 STANDBY 标志。

# ifconfig -a
lo0: flags=2001000849[UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL] mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
net1: flags=1000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4] mtu 1500 index 12
        inet 0.0.0.0 netmask ff000000
        groupname ipmp0
        ether 0:c:29:12:40:79
net2: flags=61000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4,STANDBY,INACTIVE] mtu 1500 index 13
        inet 0.0.0.0 netmask ff000000
        groupname ipmp0
        ether 0:c:29:12:40:83
ipmp0: flags=8001000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4,IPMP] mtu 1500 index 11
        inet 192.168.1.10 netmask ffffff00 broadcast 192.168.1.255
        groupname ipmp0

检查IPMP组的状态,观察()中的net2接口,作为Active/Active配置的对比。

# ipmpstat -g
GROUP       GROUPNAME   STATE     FDT       INTERFACES
ipmp0       ipmp0       ok        --        net1 (net2)

还要注意以下命令输出的差异。
入站和出站流量都在接口 net1 上。

# ipmpstat -an
ADDRESS                   STATE  GROUP       INBOUND     OUTBOUND
192.168.1.10              up     ipmp0       net1        net1

1. Active/Active 配置示例

Active Interface : e1000g1 (net1)
                 : e1000g2 (net2)
Data IP          : 192.168.1.10

创建 IPMP 组“ipmp0”。

# ipadm create-ipmp ipmp0

创建要在 IPMP 组中使用的接口 net1 和 net2.

# ipadm create-ip net1
# ipadm create-ip net2

将两个接口加入 IPMP 组

# ipadm add-ipmp -i net1 -i net2 ipmp0

要检查我们刚刚创建的 IPMP 组的状态:

# ipmpstat -g
GROUP       GROUPNAME   STATE     FDT       INTERFACES
ipmp0       ipmp0       ok        --        net2 net1

将数据 IP 地址添加到 IPMP 组。
这样做的语法是:
语法

ipadm create-addr -T static -a [hostname or IP address] [IPMP-interface]/[arbitrary-string]
# ipadm create-addr -T static -a 192.168.1.10 ipmp0/data1

要检查 IPMP 接口的状态:

# ipmpstat -a
ADDRESS                   STATE  GROUP       INBOUND     OUTBOUND
ipmp0-data1               up     ipmp0       net1        net2 net1
# ipmpstat -an
ADDRESS                   STATE  GROUP       INBOUND     OUTBOUND
192.168.1.10              up     ipmp0       net1        net2 net1

检查 IPMP 组中各个接口的状态。

# ipmpstat -i
INTERFACE   ACTIVE  GROUP       FLAGS     LINK      PROBE     STATE
net2        yes     ipmp0       -------   up        disabled  ok
net1        yes     ipmp0       --mb---   up        disabled  ok

要检查 IPMP 组的 IP 地址:

# ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
ipmp0/data1       static   ok           192.168.1.10/24
# ifconfig -a
lo0: flags=2001000849[UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL] mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
net1: flags=1000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4] mtu 1500 index 12
        inet 0.0.0.0 netmask ff000000
        groupname ipmp0
        ether 0:c:29:12:40:79
net2: flags=1000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4] mtu 1500 index 13
        inet 0.0.0.0 netmask ff000000
        groupname ipmp0
        ether 0:c:29:12:40:83
ipmp0: flags=8001000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4,IPMP] mtu 1500 index 11
        inet 192.168.1.10 netmask ffffff00 broadcast 192.168.1.255
        groupname ipmp0

我们刚刚所做的所有配置更改都保存在 /etc/ipadm/ipadm-DefaultFixed.conf 文件中(因为我们使用的是 Fixed NCP)

# cat /etc/ipadm/ipadm-DefaultFixed.conf
_ifname=lo0;_aobjname=lo0/v4;   _ipv4saddr=string,127.0.0.1;prefixlen=string,8;up=string,yes;
_ifname=lo0;    _family=string,2,26;_class=uint64,2;
_ifname=net1;   _family=string,2,26;_class=uint64,0;_ipmpif=string,ipmp0;
_ifname=ipmp0;  _family=string,2,26;_class=uint64,1;_underif=string,net1,net2;
_ifname=net2;   _family=string,2,26;_class=uint64,0;_ipmpif=string,ipmp0;
_ifname=ipmp0;_aobjname=ipmp0/data1;    _ipv4saddr=string,192.168.1.10;up=string,yes;
如何在 Solaris 11 中配置基于链接的 IPMP

Oracle 在 Solaris 11 中对其网络堆栈进行了更改。
持久网络配置现在由 SMF 管理,而不是通过编辑以下文件:

/etc/defaultdomain
/etc/dhcp.*
/etc/hostname.*
/etc/hostname.ip*.tun*
/etc/nodename
/etc/nsswitch.conf
欢迎来到之路教程(on itroad-com)

准备工作

  1. IPMP 需要手动(固定)网络配置模式,所以我们必须将网络配置文件(NCP)设置为 DefaultFixed。
# netadm enable -p ncp DefaultFixed

netadm list 的输出应该使用 DefaultFixed 配置文件在线显示 ncp。

# netadm list
TYPE        PROFILE        STATE
ncp         Automatic      disabled
ncp         DefaultFixed   online
loc         Automatic      offline
loc         NoNet          offline
loc         DefaultFixed   online
  1. 确保 IPMP 组中使用的所有接口都有唯一的 MAC 地址
# eeprom local-mac-address?=true
# dladm show-linkprop -p mac-address
LINK     PROPERTY            PERM VALUE        DEFAULT      POSSIBLE
net1     mac-address         rw   0:c:29:12:40:79 0:c:29:12:40:79 -
net2     mac-address         rw   0:c:29:12:40:83 0:c:29:12:40:83 -
net3     mac-address         rw   0:c:29:12:40:8d 0:c:29:12:40:8d -
net0     mac-address         rw   0:c:29:12:40:6f 0:c:29:12:40:6f -

默认情况下启用基于链路的故障检测。
检查故障检测方法:

# ipmpstat -p
ipmpstat: probe-based failure detection is disabled

我的虚拟机有 4 个网卡,如下所示。
我将使用 net1 和 net2 来配置 IPMP 组。

# dladm show-phys
LINK              MEDIA                STATE      SPEED  DUPLEX    DEVICE
net0              Ethernet             unknown    1000   full      e1000g0
net1              Ethernet             unknown    1000   full      e1000g1
net2              Ethernet             unknown    1000   full      e1000g2
net3              Ethernet             unknown    1000   full      e1000g3

测试 IPMP 故障转移

我们可以很容易地通过命令行来检查一个接口的故障和修复。
"-d" 分离接口,而 "-r" 重新连接它。

# if_mpadm -d ce0
# if_mpadm -r ce0

IPMP 组件:

  1. mpathd 守护进程 该守护进程负责检测接口故障或者修复。
    它使用配置文件 /etc/default/mpathd 来确定何时对接口进行故障转移。
# 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
  1. ipmpstat 显示有关在 IPMP 组中配置的 IP 接口以及测试和数据地址的信息。

配置类型

  1. 单接口的单例IPMP组

  2. Active-Active IPMP 组中的所有接口都在线。

  3. Active-standby IPMP 配置中的接口之一将用作备用。

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