zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    【TS】535- 7个超好用的 TypeScript 新功能
    【学习】一起加入重学 TypeScript 学习小组
    17.5W秒级交易峰值下的混合云弹性架构之路
    微服务架构:spring cloud之服务注册和服务发现
    消息队列服务RabbitMQ 和Kafka对比
    微服务架构:spring cloud简介
    2016 年度码云热门项目排行榜 TOP 10
    Netflix Conductor : 一个微服务的编排器
    Java 9的这一基本功能,你可能从未听过
    使用 Docker 搭建 Java Web 运行环境
  • 原文地址:https://www.cnblogs.com/cqubityj/p/6918221.html
Copyright © 2011-2022 走看看