solaris的双网卡绑定

Solaris 操作系统的网卡绑定是需要购买 sun Trunking 软件的 .
 
本次文档记录的是 Solaris 自带的一个叫 IPMP(IP 网络多路径 (IP Network Multipathing))
 
 Ipmp SOLARIS8 操作环境的一种新特性,旨在在主机侧提供网络故障切换和 IP 连接集合。关键特性如下:

一.             功能

     故障检测及故障切换 (failover): 当网络适配器(包括主机一侧或与之相连的网络设备一侧 ) 发生故障时, IP Network Multipathing 的故障检测特性提供了检测功能,自动把网络访问切换到备用网络适配器,真正消除了主机网络适配器的单点故障。
    
恢复检测 (failback): 当发生故障的网络适配器被修复后时, IP 网络多路径的修理检测特性有能力执行检测,并自动把网络访问切换到原来提供服务的主要网络适配器。
    
出网负荷分布 (outbound load spreading): 高层应用可以向许多网络适配器分配网络数据包,以提高网络吞吐量。需要注意的是仅当网络通信量要通过许多连接发送到许多目的地时,才执行出网负荷分布。

二. 原理

    SOLARIS8 操作系统中,由 in.mpathd(/sbin/in.mpathd) 后台进程 (daemon) 负责故障检测,并根据不同的策略实现了 failover failback
   
检测物理接口的失败: in.mpathd 管理的主机系统的全部和部分网络接口组织成一个 multipathing interface group, 其中的每一个网络接口分别赋予了测试地址 (test address) 。在正常情况下,后台进程 in.mpathd 不断地通过组中每个网络接口测试地址向目标主机 (target) 发送 ICMP ECHO 包来检测相关网络接口的连通性。其中,目标主机一般选为本网络路由器 (router), 如果路由器存在,那么,将选择网络中的主机作为仲裁主机 (arbitrary hosts) 。在选择仲裁主机时, in.mpathd 向网络上的所有主机发送 multicast 数据包,第一台返回响应数据包的主机将被认为是仲裁主机,此仲裁主机就是用来测试 interface group 中网络连通性的目标主机。在 in.mpathd 测试主机网络连通性的过程中,如果目标主机连续 5 次没有响应, in.mpathd 认定相关连接已经失败,每次错误检测的缺省时间是 10 秒,也即大约每两秒检测一次。如果才 multipathing interface group 中配置了备用网口 (standby) ,那么所有的网络访问将自动切向 standby 网络接口。
   
检测物理接口的恢复:为了检测失败的网络接口是否已经被修复, in.mpathd 不断尝试通过该网口的测试地址向目标主机发送检测包,如果能够连续 10 次收到响应数据包,那么 in.mpathd daemon 认定该网口已经被修复,随后,所有被转移到备用网口 (standby) 的服务将自动恢复回原网口。

Solaris 10 IPMP 配置过程

使用 IPMP 实现网卡负载 ( 网卡负载就是需要两张网卡共用一个 IP 地址实现网卡灾备功能 ) 。修 /etc/hosts /etc/hostname.bge0 /etc/hostname.bge1 /etc/defaultrouter /etc/netmasks 五个文件,具体配置如下:
使用 Solaris 10 IPMP 实现网卡负载均衡功能,网卡负载均衡即使用两个或两个以上的网卡共用一个 IP 地址,实现网卡灾备的功能。
在本例中实现此项功能需要配置 /etc/hosts /etc/hostname.vmxnet0 /etc/hostname.vmxnet1 /etc/defaultrouter /etc/netmasks 等五个文件。
 
以下过程为配置过程:

1.验证系统的版本

    # uname -a
    SunOS Solaris10 5.10 Generic_118855-33 i86pc i386 i86pc
   
    # cat /etc/release
                        Solaris 10 11/06 s10x_u3wos_10 X86
           Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                           Assembled 14 November 2006

2.修改EPROM中的 local  -mac  -address

修改 EPROM 中的 local  -mac  -address?= 的参数值,设置网卡使用自身的 MAC 地址,重启后生效。
    #eeprom local-mac-address?=true
    注意:此命令在解除 ipmp 时是否需要更改

3.设置子网掩码

    # vi /etc/netmasks
    192.1.1.0        255.255.255.0

4.编辑 /etc/hosts 文件

    # vi  /etc/hosts
    #
    # Internet host table
    #
    127.0.0.1       localhost      
    192.1.1.200     Solaris10              # 此地址为将要虚拟出来用于服务的 IP 地址
 
    ########configure for ipmp################
    192.1.1.201     Solaris10-test1 #test ip 1        # 此地址为 vmxnet0 的实际地址
    192.1.1.202     Solaris10-test2 #test ip 2        # 此地址为 vmxnet1 的实际地址
    ##########################################
 

5.编辑 /etc/hostname.vmxnet0

   # vi /etc/hostname.vmxnet0
    Solaris10 netmask + broadcast + group fzu1 up addif Solaris10-test1 netmask + broadcast + deprecated - failover up
 
    注意: Solaris10 为系统主机名
                  Solaris10-test1 用于本次测试的 ip 地址
                  fzu1 为本次测试的 IPMP 的组名
 
    以上命令解释:
    Solaris10                        用于本案例的主机名称
    netmask + 子网掩码由文件 /etc/netmasks /etc/hostname.vmxnet0 计算的出
    broadcast +  广播地址由文件 /etc/netmasks /etc/hostname.vmxnet0 计算的出
    group fzu1                设置本案例中的 IPMP 组名为 fzu1
    addif Solaris10-test1        增加一个以 Solaris10-test1 的子接口
    deprecated               标志此为一个测试用端口并不用于服务
    - failover                 标志此逻辑接口不用于故障切换
    up                      标志此逻辑接口启动
   

6.编辑 /etc/hostname.vmxnet1

   # vi /etc/hostname.vmxnet1
    Solaris10-test2 netmask + broadcast + group fzu1 deprecated - failover up
 
   注意: Solaris10 为系统主机名
                  Solaris10-test1 用于本次测试的 ip 地址
                  fzu1 为本次测试的 IPMP 的组名
 
   以上命令解释:
    Solaris10-test2             设置一个用于本案例的 Solaris10-test2 的子接口
    netmask + 子网掩码由文件 /etc/netmasks /etc/hostname.vmxnet1 计算的出
    broadcast + 广播地址由文件 /etc/netmasks /etc/hostname.vmxnet1 计算的出
    group fzu1                设置本案例中的 IPMP 组名为 fzu1
    deprecated               标志此为一个测试用端口并不用于服务
    - failover              标志此逻辑接口不用于故障切换?是否不应该使用 -failover 而使用 failover 呢??
    up                      标志此逻辑接口启动
 

7.设置 /etc/defaultrouter

    # vi /etc/defaultrouter
    192.1.1.253
 
    # 默认网关, IPMP 会通过 ping 网关来检测主网卡是否正常, ping 不通网关会进行切换网卡
 

8.测试

    使用如下命令强行使网卡切换
    #if_mpadm -d pcn2
 
  下重新启用网卡
    #if_mpadm -r pcn2
 
    可以观察到网卡地址的切换,现象如下:
 
      root:/#ifconfig -a
      lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
              inet 127.0.0.1 netmask ff000000
      vmxnet0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
              inet 192.1.1.200 netmask ffffff00 broadcast 192.1.1.255
              groupname fzu1
              ether 0:c:29:b3:21:d3
      vmxnet0:1: flags=1040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4> mtu 1500 index 2
              inet 192.1.1.201 netmask ffffff00 broadcast 192.1.1.255
      vmxnet1: flags=1040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4> mtu 1500 index 3
              inet 192.1.1.202 netmask ffffff00 broadcast 192.1.1.255
              groupname fzu1
              ether 0:c:29:b3:21:dd
      root:/#if_mpadm -d vmxnet0
      root:/#ifconfig -a
      lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
              inet 127.0.0.1 netmask ff000000
      vmxnet0: flags=89000842<BROADCAST,RUNNING,MULTICAST,IPv4,NOFAILOVER,OFFLINE> mtu 0 index 2
              inet 0.0.0 .0 netmask 0
              groupname fzu1
              ether 0:c:29:b3:21:d3
      vmxnet1: flags=1040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4> mtu 1500 index 3
              inet 192.1.1.202 netmask ffffff00 broadcast 192.1.1.255
              groupname fzu1
              ether 0:c:29:b3:21:dd
      vmxnet1:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
              inet 192.1.1.200 netmask ffffff00 broadcast 192.1.1.255
      vmxnet1:2: flags=1040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4> mtu 1500 index 3
              inet 192.1.1.201 netmask ffffff00 broadcast 192.1.1.255
 
    root:/#if_mpadm -r vmxnet0
    root:/#ifconfig -a
    lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
            inet 127.0.0.1 netmask ff000000
    vmxnet0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
            inet 192.1.1.200 netmask ffffff00 broadcast 192.1.1.255
            groupname fzu1
            ether 0:c:29:b3:21:d3
    vmxnet0:1: flags=1040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4> mtu 1500 index 2
            inet 192.1.1.201 netmask ffffff00 broadcast 192.1.1.255
    vmxnet1: flags=1040842<BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4> mtu 1500 index 3
            inet 192.1.1.202 netmask ffffff00 broadcast 192.1.1.255
            groupname fzu1
            ether 0:c:29:b3:21:dd   

solaris 双网卡绑定

1.查看物理网卡

首先查看系统中有多少块物理网卡,执行以下命令:
dladm show-link
bge0            type: non-vlan  mtu: 1500       device: bge0
bge1            type: non-vlan  mtu: 1500       device: bge1
bge2            type: non-vlan  mtu: 1500       device: bge2
bge3            type: non-vlan  mtu: 1500       device: bge3

2.查看正在使用网卡

然后查看有哪些网卡正在使用: ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
bge0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 59.37.54.108 netmask ffffffe0 broadcast 59.37.54.127
        ether 0:14: 4f : 2c :b3:90
bge1: flags=1000842<BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
        inet 0.0.0 .0 netmask 0
        ether 0:14: 4f : 2c :b3:91
bge2: flags=1000802<BROADCAST,MULTICAST,IPv4> mtu 1500 index 4
        inet 0.0.0.0 netmask 0
        ether 0:14: 4f : 2c :b3:92

3.停止需要绑定的网卡

看看是哪两个网卡要做绑定,先把他们停止
ifconfig bge1 unplumb
ifconfig bge2 unplumb

4.创建聚合链路

使用 dladm 创建聚合链路的虚拟网卡:
dladm create-aggr -d bge1 -d bge2 1
dladm 的命令语法如下:
dladm create-aggr -d interface -d interface [...] key
interface
表示要成为聚合一部分的接口的设备名称。
key
是标识聚合的编号。最小的密钥编号是 1 。不允许将零用作密钥。

5.配置IP信息

为刚配置好的虚拟网卡配置 IP ,如:
ifconfig aggr1 plumb 192.168.84.14 up

6.检查刚创建的聚合的状态

# dladm show-aggr
如果希望虚拟网卡的配置在系统重启之后仍然可以使用,则需要创建一个 /etc/hostname.aggr1 文件,文件内容为 IP 地址,总之,这个 aggr1 的网卡可以像普通网卡一样配置 IP 地址。

你可能感兴趣的:(职场,休闲,solaris的双网卡绑定)