Solaris系统配置IPMP教程(基于IP寻址)

Solaris系统配置IPMP教程

(基于IP寻址)

一、            IPMP介绍

IP 网络多路径 (IP network multipathing, IPMP) 为在同一 IP 链路上具有多个接口的系统提供物理接口故障检测和透明网络访问故障转移功能。IPMP 还为具有多个接口的系统提供了包负荷分配。

通过IPMP,可以将一个或多个物理接口配置到IP多路径组(IPMP)中,配置IPMP后,IPMP的故障转移功能可以保持连接并防止断开任何现有的连接。

二、    名词解释

IPMP组:由同一个系统中使用同一个IPMP组名称配置的一个或多个物理接口组成。IPMP组中的所有接口都必须连接到同一个IP链路,同一字符串的IPMP组名称用于标识组中的所有接口。

数据地址:引导指定的或通过ifconfig命令手动指定给NIC的接口的常规地址(可理解为对外服务的ip地址)

测试地址:由in.mpathd守护进程使用的特定于IPMP的地址,对于要使用基于探测器的故障和修复检测的接口,至少必须为其配置一个测试地址。(可理解为物理网卡自身的地址)

在接口出现故障后,测试地址将一直保留在故障接口上,以便in.mpathd可以继续发送探测器以检查后续修复。必须专门配置测试地址,以便应用程序不会意外使用它们,需将测试地址标记为deprecated.

三、    IPMP基本要求

  1. IPMP组中的所有接口都必须具有唯一的MAC地址;
  2. IPMP组中的所有接口都必须具有相同的介质类型
  3. 四、    实验环境

操作系统:Oracle Solaris 10 1/13 s10s_u11wos_24a SPARC

网卡:ixgbe0与ixgbe1

ixgbe0:192.168.0.101

ixgbe1:192.168.0.102

对外服务IP:192.168.0.100

本文只是针对Solaris 10进行的配置,如果是Solaris 11则会有很多不同

五、    实施步骤

1.确定IPMP的组成部分

IPMP组可以配置成单接口的IPMP组,也可以配置成双接口的IPMP组,本例选择了ixgbe0与ixgbe1配置为IPMP组。

2.检验MAC地址

IPMP组中的所有接口都必须具有唯一的MAC地址,故首先应该检

验每个接口是否具有唯一的MAC地址。

在SPARC平台上,每个基于SPARC的系统都具有系统范围的MAC的地址,默认情况下所有的接口都使用该地址,故默认情况下,每个接口的MAC地址是相同的,但要使用IPMP,则组中的每个接口必须具有唯一的MAC地址,这些地址必须使用出厂安装的MAC地址。可以使用“eeprom local-mac-address?”命令来检测当前系统的所有接口是否使用了系统范围的MAC地址:

# eeprom local-mac-address?

local-mac-address?=flase

若对eeprpm命令相应的值为false,则表示所有的接口使用的是系统范围的MAC地址,需将值改为true

# eeprom local-mac-address?=true

# eeprom local-mac-address?

local-mac-address?=true

3.为IPMP组选择一个名称

任何非空的名称都可以作为组的名称,这里设定组的名称为“ipmp0”

  1. 4.确保STREAMS模块

同一组中所有接口必须按相同顺序配置相同的STREAMS模块,通过ifconfig ixgbe0 modlist命令可以输出STREAMS模块的列表

# ifconfig ixgbe0 modlist

0 arp

1 ip

2 ixgbe

接口通常作为网络驱动程序直接位于IP模块之下,则不需要做其他设置。

5.配置IPMP组

1)配置/etc/hosts文件

# vi  /etc/hosts

::1     localhost

127.0.0.1       localhost

192.168.0.101     test-ixgbe0

192.168.0.102     test-ixgbe1

192.168.0.100     test               loghost

此处是设置DNS的关系

192.168.0.101 对应test-ixgbe0  (网卡ixgbe0的测试IP)

192.168.0.102 对应 test-ixgbe1  (网卡ixgbe1的测试IP)

192.168.0.100 对应 test            (IPMP组的数据IP,test为对外服务的主机名)

2)配置/etc/hostname.interface文件

# vi /etc/hostname.ixgbe0

test netmask + broadcast + group ipmp0 up \

addif test-ixgbe0  deprecated -failover netmask + broadcast + up

  • test:设置的对外服务器的主机名,已在/etc/hosts文件中进行

了设置,此处可以用IP地址代替(192.169.0.100);

  • netmask+:设置子网掩码,根据/etc/netmask文件获得;
  • broadcast+:对应于/etc/netmask 计算出一个网络的广播地址,

对于网络的广播地址,一般就是此网段中最大地址;

  • group ipmp0:设置IPMP组名为ipmp0;
  • up类似于网卡的启用功能;
  • addif test-ixgbe0IPMP组中增加一个子接口,此处可以是IP地址,由于已在hosts文件中进行了定义,故可直接使用名称;
  • deprecated标记此地址为测试地址;
  • -failover告知系统,这个地址代表的连接如果失效,不做切换(测试地址)

# vi /etc/hostname.ixgbe1

test-ixgbe1  netmask + broadcast + group ipmp0 deprecated -failover up

此处的设置和前面的含义一样,由于已经建立了ipmp0的组,所以这里就不用再次建立,直接添加组名 ipmp0即可

6.查看结果

# ifconfig -a

lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1

inet 127.0.0.1 netmask ff000000

ixgbe0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2

inet 192.168.0.100 netmask ffffff80 broadcast 192.168.0.254

groupname ipmp

ether 0:1b:21:6f:8d:dc

ixgbe0:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 2

inet 192.168.0.101 netmask ffffff80 broadcast 192.168.0.254

ixgbe1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 3

inet 192.168.0.102 netmask ffffff80 broadcast 192.168.0.254

groupname ipmp

ether 0:1b:21:6f:8d:de

sppp0: flags=10010008d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST,IPv4,FIXEDMTU> mtu 1500 index 4

inet 192.168.3.3 --> 192.168.3.1 netmask ffffff00

ether 0:0:0:0:0:0

通过ifconfig –a命令可看出

  • IPMP的组名为“ipmp”,

l  “ixgbe0”分配了数据地址192.168.0.100(对外服务地址)

  • “ixgbe0:1”此网卡的测试地址(192.168.0.101)在其逻辑接口;
  • “ixgbe1”:分配了测试地址192.168.0.102.
  • 测试

选择停用“ixgbe0”,测试IPMP工作是否正常

bash-3.2# if_mpadm -d ixgbe0

bash-3.2# ifconfig -a

lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1

inet 127.0.0.1 netmask ff000000

ixgbe0: flags=89000842<BROADCAST,RUNNING,MULTICAST,IPv4,NOFAILOVER,OFFLINE> mtu 0 index 2

inet 0.0.0.0 netmask 0

groupname ipmp

ether 0:1b:21:6f:8d:dc

ixgbe0:1: flags=89040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER,OFFLINE> mtu 1500 index 2

inet 192.168.0.101 netmask ffffff80 broadcast 192.168.0.254

ixgbe1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 3

inet 192.168.0.102 netmask ffffff80 broadcast 192.168.0.254

groupname ipmp

ether 0:1b:21:6f:8d:de

ixgbe1:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3

inet 192.168.0.100 netmask ffffff80 broadcast 192.168.0.254

sppp0: flags=10010008d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST,IPv4,FIXEDMTU> mtu 1500 index 4

inet 192.168.3.3 --> 192.168.3.1 netmask ffffff00

ether 0:0:0:0:0:0

# ping 192.168.0.101

no answer from 192.168.0.101

通过ifconfig –a命令可看出

  • “if_mpadm”: if_mpadm –d  停止一个网卡,if_mpadm –r 恢复一个网卡。
  • “ixgbe0”:之前分配了数据地址,由于网卡被停用,故此处的ip已经迁移至其它网卡。
  • “ixgbe0:1”此网卡的测试地址(192.168.0.101)在其逻辑接口;
  • “ixgbe1”:分配了测试地址192.168.0.102.
  • “ixgbe1:1”:由于“ixgbe0”网卡被停用,故数据ip迁移至此网卡的逻辑接口之上,继续对外提供服务

恢复被停用的ixgbe0,结果如下:

# if_mpadm -r ixgbe0

# ifconfig -a

lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1

inet 127.0.0.1 netmask ff000000

ixgbe0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2

inet 192.168.0.100 netmask ffffff80 broadcast 192.168.0.254

groupname ipmp

ether 0:1b:21:6f:8d:dc

ixgbe0:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 2

inet 192.168.0.101 netmask ffffff80 broadcast 192.168.0.254

ixgbe1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 3

inet 192.168.0.102 netmask ffffff80 broadcast 192.168.0.254

groupname ipmp

ether 0:1b:21:6f:8d:de

sppp0: flags=10010008d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST,IPv4,FIXEDMTU> mtu 1500 index 4

inet 192.168.3.3 --> 192.168.3.1 netmask ffffff00

ether 0:0:0:0:0:0

# ping 192.168.0.101

192.168.0.101 is alive

# ping 192.168.0.102

192.168.0.102 is alive

# ping 192.168.0.100

192.168.0.100 is alive

结果IPMP可以正常工作

六、    题外话

1.IPMP的两种实现方式

IPMP有两种实现方式:

l  Link-based IPMP:基于链路类,不需测试IP

  • Probe-based IPMP :基于IP寻查,我们常用的是这种,需要测试IP,且必须能ping通网关

本文所述的采用的是Probe-based IPMP的方式,在solaris8和solaris9中只有Probe-based模式,从solaris10开始好像才可以使用Link-based IPMP,solaris11是肯定两种都支持。

2.IPMP接口配置的类型

IPMP可以配置为以下两种模式:

活动-活动配置 :一个双接口 IPMP 组,其中的两个接口都为“活动”,即它们始终可能既传输探测器通信又传输数据通信(本文所采用的方式)

活动-待机配置:一个双接口的IPMP组,其中一个接口被配置为“standby”(待机)

官网定义:除非 IPMP 组中的某个其他接口出现故障,否则不会使用该组中的待机接口进行数据通信。在出现故障时,故障接口上的数据地址将迁移到待机接口。然后,会像对待其他活动接口一样对待待机接口,直到修复故障接口为止。一些故障转移可能不选择待机接口。相反,这些故障转移可能选择比待机接口具有更少配置为 UP 的数据地址的活动接口。

在待机接口上应仅配置测试地址。IPMP 不允许将数据地址添加到通过 ifconfig 命令配置为 standby 的接口。创建此类型配置的任何尝试都将失败。同样,如果将已具有数据地址的接口配置为 standby,则这些地址将自动地故障转移到 IPMP 组中的其他接口。由于存在这些限制,因此在将接口设置为 standby 之前,必须使用 ifconfig 命令将所有测试地址标记为 -deprecated 和 failover。有关如何配置待机接口。

以本文的例子就行配置:

# vi /etc/hostname.ixgbe1

test-ixgbe1  netmask + broadcast + group ipmp0 deprecated -failover standby up

# ifconfig ixgbe1

ixgbe1: flags=69040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER,STANDBY,INACTIVE> mtu 1500 index 3

inet 192.168.0.101 netmask ffffff80 broadcast 192.168.0.254

groupname ipmp

ether 0:1b:21:6f:8d:de

待机接口只能具有iP地址,即测试地址设置standby up选择之前,必须先设置-failover。

INACTIVE:标志此接口不用于任何外发包,此待机接口发生故障转移时,会清除INACTIVE标志。

时间: 2024-11-06 07:14:02

Solaris系统配置IPMP教程(基于IP寻址)的相关文章

Solaris系统配置IPMP (基于IP寻址与链路)

一. IPMP介绍 IP 网络多路径 (IP network multipathing, IPMP) 为在同一 IP 链路上具有多个接口的系统提供物理接口故障检测和透明网络访问故障转移功能.IPMP 还为具有多个接口的系统提供了包负荷分配. 通过IPMP,可以将一个或多个物理接口配置到IP多路径组(IPMP)中,配置IPMP后,IPMP的故障转移功能可以保持连接并防止断开任何现有的连接. 二. 名词解释 IPMP组:由同一个系统中使用同一个IPMP组名称配置的一个或多个物理接口组成.IPMP组中

SVN教程 -- 基于自己学习记录

SVN教程 -- 基于自己学习记录 1. 概述 a. 什么是SVN? Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统.相较于 git ,svn 是集中式版本控制系统. SVN官网链接 b. 什么是集中式版本控制系统? 集中式版本控制系统可以这样理解:所有的源代码都放在统一的服务器上,开发者从服务器下载项目组的最新代码,进入自己的分支进行开发工作,提交代码,最后再把自己的分支合并到服务器主分支上,更新服务器源代码.由于源代码最后都是放在服务器上的,服务器统

linux下nginx实现虚拟主机(3种方法:基于域名、基于端口、基于ip地址)

在3.17日的时候已经写过一篇关于apahce的基于域名.端口.ip地址3种方式的虚拟主机实现.原理是一样的,现在记录nginx的虚拟主机这三种方式的实现. 系统版本为rhel5.6,nginx版本为1.1.6. 1.基于域名: 基于域名的方式,要先有dns服务器,这里为了方便,可以在/etc/hosts文件里面配置,把它当成dns就行了,可以参考3.17日那篇博客关于dns的配置或者其他博文也有.这里关于nginx的安装也略去. [[email protected] ~]# cat /etc/

nginx基于IP

基于IP的虚拟主机 首先添加3个IP [[email protected] extra]# ifconfig ifconfig eth0:133 172.20.100.133 netmask 255.255.252.0 up ifconfig eth0:132 172.20.100.132 netmask 255.255.252.0 up ifconfig eth0:131 172.20.100.131 netmask 255.255.252.0 up eth0:131  Link encap:

IP报文解析及基于IP 数据包的洪水攻击

版本(4bit) 报头长度(4bit) 优先级和服务类型(8bit) 总长度(16bit) 标识(16bit) 标志(3bit) 分段偏移(13bit) 存活期(8bit) 协议(8bit) 报头校验和(16bit) 源IP地址(32bit) 目的IP地址(32bit) 选项(0或32bit,若有的话) 数据(可变) 版本 IP版本号.报头长度 32位字的报头长度(HLEN).优先级和服务类型 服务类型描述数据报将如何被处理.前3位表示优先级位.总长度 包括报头和数据的数据包长度.标识 唯一的I

基于Ip的刷投票排名及刷百度推广的自动化实现

所有基于Ip的刷投票排名,只要不涉及用户登录情况,都可以在手机端自动化实现,因为电信运营商的ip地址段是无限的,理论上,飞行模式开关一次,所分配ip地址是变化的,这就有了大量的ip可用 在手机端写个app+自动化点击代码(或者app模拟投票http请求),自动打开关闭飞行模式,循环往复,就以实现 PS: android实现,手机必须root. 承接刷投票和刷百度推广业务,费用详谈 基于Ip的刷投票排名及刷百度推广的自动化实现,布布扣,bubuko.com

读书笔记-基于IP的物联网架构技术与应用

最近在看<基于IP的物联网架构,技术与应用>这边书,将自己的读书笔记,记录于此. 一.什么是智能物件? 定义:智能物件是装备了传感器,微处理器,通信装置和电源的设备. 重要属性:与现实世界的交互 和 通信能力 面临挑战: 节点级挑战:能耗.体积大小.成本.资源限制,电源效率,计算能力 网络级挑战:规模大数据量多,网络大小影响(smart object networks)的路由协议设计.路由可以集中生成,即由一个中央服务器为整个网络计算路由图,也可以是分布式的,即每个节点独立决定每条消息发送到哪

基于ip san的iscsi操作实现过程

SAN是storage area network(存储区域网络)的简写,早期的san采用的是光纤通道技术,后期当iscsi协议出现以后,为了区分两者,就划分了IP SAN和FC SAN.FC SAN由于其昂贵的价格让许多企业退避三舍,IP SAN作为一个很好的代替产品出现在了人们的视线中.现在大部分存储设备提供支持基于TOE技术的接口,可以在硬件基础上处理TCP/IP协议.这意味着ISCSI设备可以处理速度已接近GigE.约100MB/秒的数据传输速率来处理I/O进程,其速率可与FC SAN的相

web网站服务基于ip,端口,域名

基于ip yum install httpd -y service httpd start chkconfig httpd on vi /etc/httpd/conf/httpd.conf # Document <VirtualHost 192.168.100.100:80> ServerName www.benet.com DocumentRoot /www/benet.com </VirtualHost> <VirtualHost 192.168.100.110:80&g