Configuring Transitive IPMP on Solaris 11
http://www.tokiwinter.com/configuring-transitive-ipmp-on-solaris-11/
We all know the pain of configuring probe-based IPMP under Solaris, with a slew of test addresses being required, and a long line of ifconfig configuration in our /etc/hostname.<interface> files.
With Solaris 11, there is a new type of probe-based IPMP called transitive probing. This new type of probing does not require test addresses, as per the documentation: "Transitive probes are sent by the alternate interfaces in the group to probe the active interface. An alternate interface is an underlying interface that does not actively receive any inbound IP packets".
In this article, I will configure failover (active/passive) IPMP on clusternode1 (the first node of a Solaris Cluster I'm building). Interface net0 has an address of 10.1.1.80 (configured at install time), and I'll be adding this into an IPMP group ipmp0 along with a standby interface, net1. Make sure you are performing these steps via a console connection, as the original address associated with net0 will need to be removed before attempting to add it to an IPMP group.
The first step, ensure that there is an entry in /etc/hosts for the IP address you're configuring IPMP for:
# grep '^10\.1\.1\.80' /etc/hosts
10.1.1.80 clusternode1
Next, ensure that automatic network configuration is disabled. In my case it was as I'd configured networking manually during the installation of Solaris 11:
# netadm list -p ncp –x
TYPE PROFILE STATE AUXILIARY STATE
ncp Automatic disabled disabled by administrator
ncp DefaultFixed online active
Verify that the appropriate physical interfaces are available. In the following output, I'll be bonding e1000g0 (net0) and e1000g1 (net1) into a failover IPMP group.
# dladm show-phys
LINK MEDIA STATE SPEED DUPLEX DEVICE
net1 Ethernet unknown 0 unknown e1000g1
net2 Ethernet unknown 0 unknown e1000g2
net3 Ethernet unknown 0 unknown e1000g3
net0 Ethernet up 1000 full e1000g0
List the current addresses – from the output of ipadm show-addr I can see that I'll need to delete net0/v4 and net0/v6, otherwise I'll be unable to add net0 to the IPMP group.
# ipadm delete-addr net0/v4
# ipadm delete-addr net0/v6
As the net0 IP interface is already created, I only need to create the net1 interface:
# ipadm create-ip net1
I can then create the IPMP group, which I'll call ipmp0:
# ipadm add-ipmp -i net0 -i net1 ipmp0
Next, enable transitive probing, which is disabled by default:
# svccfg -s svc:/network/ipmp setprop config/transitive-probing=true
# svccfg -s svc:/network/ipmp listprop config/transitive-probing
config/transitive-probing boolean true
# svcadm refresh svc:/network/ipmp:default
And configure the appropriate interface (in my case net1) to be a standby interface (as I'm using failover):
# ipadm set-ifprop -p standby=on -m ip net1
Now I can create my IPv4 address on the IPMP group:
# ipadm create-addr -T static -a clusternode1/24 ipmp0/v4
# ipadm show-addr ipmp0
ADDROBJ TYPE STATE ADDR
ipmp0/v4 static ok 10.1.1.80/24
Finally, fix the default route. I removed the existing route and added a new default route using the new and correct interface – ipmp0:
# route -p delete default 10.1.1.1
# route -p add default 10.1.1.1 -ifp ipmp0
# netstat -rn -f inet
Routing Table: IPv4
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ---------- ---------
default 10.1.1.1 UG 1 0 ipmp0
10.1.1.0 10.1.1.80 U 8 388 ipmp0
127.0.0.1 127.0.0.1 UH 2 554 lo0
You can use ipmpstat to verify the configuration and health of the IPMP group:
# ipmpstat -g
GROUP GROUPNAME STATE FDT INTERFACES
ipmp0 ipmp0 ok 10.00s net0 (net1)
# ipmpstat -a
ADDRESS STATE GROUP INBOUND OUTBOUND
:: down ipmp0 -- --
clusternode1 up ipmp0 net0 net0
# ipmpstat -t
INTERFACE MODE TESTADDR TARGETS
net1 transitive <net1> <net0>
net0 routes clusternode1 10.1.1.1
Let's perform a failover test. I'll disable net0 and ensure that the clusternode1 address fails over:
# ipadm disable-if -t net0
# ipmpstat -t
INTERFACE MODE TESTADDR TARGETS
net1 routes clusternode1 10.1.1.1
It works! (and my SSH connection is still active…) – net1 is now active with the correct IP address. Let's fail it back:
# ipadm enable-if -t net0
# ipmpstat -t
INTERFACE MODE TESTADDR TARGETS
net0 routes clusternode1 10.1.1.1
net1 transitive <net1> <net0>
The address has failed back to net0, and again my SSH connection is still active. I can now continue with clusternode2, and the rest of the cluster install.
Configuring Transitive IPMP on Solaris 11的更多相关文章
- Solaris 11中配置基于link的IPMP
http://blog.itpub.net/29960937/viewspace-1347901/ Tips: Record and feedback errors you have encounte ...
- Unix/Linux环境C编程入门教程(1) Solaris 11 64bit环境搭建
Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. 本文就带大家来安装Solaris 11 64位并且配置好C/C++开发环境 本文所 ...
- Solaris 11的自动化安装(AI server)的搭建
solaris 11 总体比solaris 10很多变动的地方,可以去官方网站上面学习:http://www.oracle.com/technetwork/server-storage/solaris ...
- Unix/Linux周边环境C编程新手教程(1) Solaris 11 64bit环境结构
Unix/Linux许多的版本号.我们推荐Unix/Linux刚開始学习的人选用几款典型的Unix/Linux操作系统进行学习. 本文就带大家来安装Solaris 11 64位而且配置好C/C++开发 ...
- Solaris 11 system package 安装与更新(如:assembler)
最近在VirtualBox虚拟机中导入了Solaris 11.3.在里面安装Oracle数据库时,先行条件检查没通过,提示缺少程序包assembler. 在网上看了许多,这方面的信息还比较少.最后在O ...
- Solaris 11配置IPS安装系统包(类似linux中的yum源)
参考:http://blog.chinaunix.net/uid-8860-id-3777457.html 一. 概述: Solaris 11被称为第一个云操作系统,因此在很多方面体现了云系统的一些特 ...
- Solaris 11中的变化
Solaris 11发布了好几个月了,用了后感觉好多配置的东东变化不小,写写自己遇到的问题和大家分享一下, 1,如何设置root密码 Solaris 11中root作为一个Role来存在,已经不能直接 ...
- Oracle Solaris 11.4 GA 版发布,这将是 Solaris 的绝唱
美国当地时间8月28日,Oracle 正式宣布推出 Oracle Solaris 11.4 GA 稳定版,距离上个版本 11.3 的发布已过去近三年.Oracle 的产品管理总监 Scott Lynn ...
- solaris 11 stdio.h: No such file or directory
http://www.zendo.name/solaris-11-stdio-h%EF%BC%9A-no-such-file-or-directory/ Posted on 2012 年 3 月 23 ...
随机推荐
- CuratorFramework入门指南
CuratorFramework入门指南 原文地址:https://github.com/Netflix/curator/wiki/Getting-Started CuratorFramework作为 ...
- HDU2181 哈密顿绕行世界问题
解题思路:哈密顿环游世界问题.一道简单的题目,用回溯. #include<cstdio> #include<cstring> #include<algorithm> ...
- iOS内存管理(objective-c)
移动app开发中,由于移动设备内存的限制,内存管理是一个非常重要的话题.objective-c的内存管理,不仅是面试当中老生常谈的一个必问话题,也是日常项目开发中,特别需要重视的环节.对于笔者这种以j ...
- 编程之美Ex1——求二进制中1的个数
又被阿里机考虐了一次,决定改变策略开始刷题T^T 一个字节(8bit)的无符号整型,求其二进制中的“1”的个数,算法执行效率尽可能高. 最先想到的移位操作,末尾位&00000001,然后右移, ...
- Eclipse web工程 部署 三种方式 1
Eclipse web工程 部署 三种方式 1.run on 前提: 安装 好 eclipse.jdk.tomcat 然后 新建一个 web工程 注意此处Default output folder 最 ...
- threeJs中旋转位移等操作坐标系
1.场景中的立方体.圆柱等三维模型的位置属性.平移方法参照Scene对象的世界坐标系 2.场景中立方体.圆柱等的三维模型的角度属性.旋转方法参照模型自身的模型坐标系
- BZOJ3083 遥远的国度 【树链剖分】
BZOJ3083 遥远的国度 Description zcwwzdjn在追杀十分sb的zhx,而zhx逃入了一个遥远的国度.当zcwwzdjn准备进入遥远的国度继续追杀时,守护神RapiD阻拦了zcw ...
- js中怎么去掉数组的空值
for(var i = 0 ;i<array.length;i++) { if(array[i] == "" || typeof(array[i] ...
- 接口测试基础——第6篇unittest模块(二)
通过上次的运行,大家应该已经发现了,就是我们写了三个用例,那么在测试报告中setUp和tearDown方法分别运行了三次.没错,这也就是说,每次运行用例之前都会运行setUp和tearDown方法.今 ...
- Linux 错误码对照表
errno 在 <errno.h> 中定义,错误 Exx 的宏定义在 /usr/include/asm-generic 文件夹下面的 errno-base.h 和 errno.h,分别定 ...