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;
Oracle 在 Solaris 11 中对其网络堆栈进行了更改。
持久网络配置现在由 SMF 管理,而不是通过编辑以下文件:
/etc/defaultdomain /etc/dhcp.* /etc/hostname.* /etc/hostname.ip*.tun* /etc/nodename /etc/nsswitch.conf
准备工作
- 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
- 确保 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 组件:
- 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
- ipmpstat 显示有关在 IPMP 组中配置的 IP 接口以及测试和数据地址的信息。
配置类型
单接口的单例IPMP组
Active-Active IPMP 组中的所有接口都在线。
Active-standby IPMP 配置中的接口之一将用作备用。