5.24.4 Oracle VM RACクラスタ間のInfiniBandパーティションの構成

ここでは、Oracle VMで実行するOracle RACクラスタ間のInfiniBandパーティションを構成するステップについて説明します。

この一連の手順では、Oracle RACクラスタで多少のダウンタイムが発生します。新しいインタフェースを使用するためにOracle RACクラスタを再起動すると、停止時間が発生します。

このタスクの開始前に、ファイルcreate_pkeys.tarをダウンロードして抽出しておきます。このファイルは、「ExadataでのOVM RACクラスタ間のInfiniBandパーティションの実装(My Oracle SupportのドキュメントID 2075398.1)」からダウンロードできます。このファイルは、管理ドメイン(dom0)ノードのいずれかにダウンロードする必要があります。これは、この手順のすべてのスクリプトを実行するために使用するノードです。この手順では、このノードをdriver_dom0と表記します。

ファイルを抽出すると、3つのファイルが表示されます:

  • create_pkeys_on_switch.sh
  • run_create_pkeys.sh
  • create_pkey_files.sh
  1. pkeyインタフェースによって使用されるIPアドレスを割り当てます。

    クラスタにInfiniBandパーティションが実装されたときに、クラスタpkeyインタフェースおよびストレージpkeyインタフェースで使用される各Oracle VM RACクラスタのIPアドレスとネットマスクのセットを計画して割り当てます。

    具体例は、トピック「InfiniBandパーティションのネットワーク構成について」を参照してください。

  2. InfiniBandスイッチで、クラスタウェアで使用する専用パーティション(クラスタpkey)を作成します。また、Oracle RACクラスタ・ノードとストレージ・セルとの通信のために、すべてのOracle VM RACクラスタおよびストレージ・セルで使用する1つのパーティション(ストレージpkey)を作成します。

    サブネット・マネージャで簡単にパーティションを識別する手段として、各パーティションにpkeyを割り当てます。pkeyは15ビットの整数です。値0x0001と値0x7fffは、デフォルト・パーティションです。pkeyには、0x0002から0x7ffeまでの値を使用してください。

    1. rootユーザーに対して、driver_dom0管理ドメイン(dom0)ノードからInfiniBandファブリックのすべてのスイッチへのパスワードなしのssh等価を有効にします。

      次のようなコマンドを使用します。ib_switch_listはファブリックのすべてのInfiniBandスイッチのリストが含まれているファイルを表します(各スイッチ名は個別の行で示されています)。

      # dcli –g ib_switch_list -l root –k
    2. driver_dom0からスクリプトcreate_pkeys_on_switch.shを実行して、InfiniBandスイッチでパーティション・キーを作成および構成します。

      ノート:

      スクリプトcreate_pkeys_on_switch.shの実行ごとに、1つのパーティションが作成されます。作成するパーティションごとにスクリプトを1回実行する必要があります。たとえば、2つのOracle VM RACクラスタを含む環境に、1つのストレージ・パーティションと2つのクラスタ・パーティション(Oracle RACクラスタごとに1つ)の合計3つのパーティションを作成するとします。この例では、create_pkeys_on_switch.shを3回実行する必要があります。

      このスクリプトは、1つのノード(driver_dom0)のみで実行する必要があります。このスクリプトでは、入力として指定したすべてのスイッチにパーティションが作成されます。

    3. スクリプトの実行後、すべてのスイッチにパーティションが作成されたことを確認します。
      # /usr/local/sbin/smpartition list active no-page

      次の出力例には、デフォルトのパーティション(0x0001および0x7fff)と、追加のパーティション(0x0004)が示されています。pkeyが0x0004のパーティションは、IPoIB用に構成されていて、そのパーティションの完全なメンバーシップが割り当てられた2つのメンバー・ポートがあります。

      # Sun DCS IB partition config file
      #! version_number : 1
      #! version_number : 12
      Default=0x7fff, ipoib :
      ALL_CAS=full,
      ALL_SWITCHES=full,
      SELF=full;
      SUN_DCS=0x0001, ipoib :
      ALL_SWITCHES=full;
       = 0x0004,ipoib: 
      0x0021280001cf3787=full, 
      0x0021280001cf205b=full; 

      この段階で、すべての必要なパーティションを作成したことを確認します。

  3. Oracle VM RACノードとストレージ・セルでは、新しいIP over InfiniBand (IPoIB)インタフェース用のすべての関連ネットワーク構成ファイルを生成します。

    パーティションごとに、新しいIPoIBネットワーク・インタフェースが必要です。

    このステップでは、Oracle RACクラスタ・ノードに次の変更を加えます。

    • 次のファイルを変更します:

      • /etc/sysconfig/network-scripts/ifcfg-ib0
      • /etc/sysconfig/network-scripts/ifcfg-ib1
    • 次のファイルを削除します:

      • /etc/sysconfig/network-scripts/rule-ib0
      • /etc/sysconfig/network-scripts/rule-ib1
      • /etc/sysconfig/network-scripts/route-ib0
      • /etc/sysconfig/network-scripts/route-ib1
    • /etc/sysconfig/network-scriptsに次の新しいファイルを作成します。

      • ifcfg-clib0、ifcfg-clib1
      • rule-clib0、rule-clib1
      • route-clib0、route-clib1
      • ifcfg-stib0、ifcfg-stib1
      • rule-stib0、rule-stib1
      • route-stib0、route-stib1

    ノート:

    このステップが失敗した場合は、このステップを再実行する前に次の作業を行います。

    • すべてのファイルを/etc/sysconfig/network-scripts/backup-for-pkeysから/etc/sysconfig/network-scriptsにリストアします。
    • このステップでリストされる、新しく作成したファイルを削除します。
    1. driver_dom0ノードから、パーティション・キーについて構成する必要があるすべてのOracle RACクラスタ・ノードとストレージ・セルに向けたパスワードなしのsshが設定されていることを確認します。
    2. run_create_pkeys.shcreate_pkey_files.shが実行可能になっていて、driver_dom0の同じディレクトリ内にあることを確認します。
    3. run_create_pkeys.shを実行します。

      クラスタ・ノードについては、node_typeの値がcomputeのすべてのクラスタ・ノードに対して、スクリプトを合計4回実行する必要があります。

      このスクリプトの構文は次のとおりです。

      run_create_pkeys.sh node_name interface_name pkey_id 
      node_type pkey_ipaddr pkey_netmask pkey_interfaceType
      • node_nameでは、クラスタ・ノードを指定します。
      • interface_nameは、ib0またはib1のどちらかです。
      • pkey_idでは、0x接頭辞なしのpkeyを指定します。ここで使用している値は、ステップ2で入力したクラスタのpkey_id値から導出されるクラスタのパーティション・キーです。
      • node_typeは、computeまたはcellのどちらかです。
      • pkey_ipaddrでは、IPアドレスを指定します。
      • pkey_netmaskでは、CIDR形式(たとえば、/21)のネットマスクを指定します。
      • pkey_interfaceTypeは、計算ノード・タイプの場合はclusterまたはstorage、セル・ノード・タイプの場合はstorageです。

      ノート:

      クラスタpkeyインタフェースのpkey_ipaddrpkey_netmaskは、ストレージpkeyインタフェースのpkey_ipaddrpkey_netmaskとは別のサブネット上に存在している必要があります。

      次のコマンドを使用すると、ステップ2で入力したpkey_idの値から、run_create_pkeys.shスクリプトに使用するパーティション・キーの値を導出できます。

      FinalHexValue=$(echo "obase=16;ibase=2;$(expr 1000000000000000 
      + $(echo "obase=2;ibase=16;$(echo $HexValue|tr [:lower:] [:upper:])"|bc))"
      |bc|tr [:upper:] [:lower:])

      FinalHexValueは、ここのコマンドで入力する値です。HexValueは、ステップ2pkey_idに入力した値です。

      次の表は、クラスタ・ノードに対する4回の実行の入力例を示しています。

      表5-4 クラスタ・ノードに対する4回の実行

      実行 インタフェース名 pkey_id node_type pkey_ipaddress pkey_netmask pkey_interfaceType

      1

      ib0

      a000

      compute

      192.168.12.153

      /21

      cluster

      2

      ib1

      a000

      compute

      192.168.12.154

      /21

      cluster

      3

      ib0

      aa00

      compute

      192.168.114.15

      /20

      storage

      4

      ib1

      aa00

      compute

      192.168.114.16

      /20

      storage

      この例に示すように、スクリプトの実行のたびに「実行」列で示した値を使用します。この例のvm-guest-1は、クラスタ・ノードの名前です。

      # ./run_create_pkeys.sh vm-guest-1 ib0 a000 compute 192.168.12.153 /21 cluster
      

    この段階で、すべての必須のネットワーク・ファイル(このステップの最初に示したもの)は、Oracle VM RACクラスタ・ノードの新しいpkey対応ネットワーク・インタフェース向けに作成されています。

    また、再起動時に新しいネットワーク・インタフェースを使用するように、Oracle Grid Infrastructureも変更されています。コマンド$GRID_HOME/bin/oifcfg getifの出力では、クラスタ・インターコネクトに使用されるインタフェースのリストにclib0clib1が示されている必要があります。

  4. Oracle ASMおよびOracle RAC CLUSTER_INTERCONNECTSパラメータを変更します。
    1. Oracle RACクラスタ内のOracle ASMインスタンスごとに、SYSとしてSQL*Plusを使用してログインし、次のコマンドを実行します。
      ALTER SYSTEM SET cluster_interconnects='<cluster_pkey_IP_address_of_ib0>:
      <cluster_pkey_IP_address_of_ib1>' scope=spfile  sid='<name_of_current_ASM_instance>';

      次に例を示します:

      ALTER SYSTEM SET cluster_interconnects='192.168.12.153:192.168.12.154'
        scope=spfile  sid='+ASM1';
    2. Oracle RACクラスタ内のデータベース・インスタンスごとに、SQL*Plusを使用してログインし、Oracle RACインスタンスに対して同じコマンドを実行します。

      次に例を示します:

      ALTER SYSTEM SET cluster_interconnects='192.168.12.153:192.168.12.154'
        scope=spfile  sid='RACDB1';
    3. すべてのOracle RACクラスタ・ノードでCRS自動起動を停止して無効化します。
      # Grid_home/bin/crsctl stop crs
      
      # Grid_home/bin/crsctl disable crs

    この段階で、Oracle Grid Infrastructure、Oracle ASMインスタンスおよびOracle Databaseインスタンスが、新しく作成したネットワーク・インタフェースを使用するように変更されています。

  5. すべてのクラスタ・ノード(ユーザー・ドメイン)のcellip.oracellinit.oraを変更します。

    クラスタのいずれかのデータベース・サーバー・ノード(Oracle VM RACクラスタの場合はユーザー・ドメイン)で、次のステップを実行します。

    1. cellip.oraファイルとcellinit.oraファイルのバックアップを作成します。
      # cd /etc/oracle/cell/network-config
      # cp cellip.ora cellip.ora-bak
      # cp cellinit.ora cellinit.ora-bak
    2. cellip.ora-bakファイルに変更を加えることで、既存のIPアドレスをステップ7で設定するすべてのストレージ・セルの2つのストレージpkey IPアドレスに置き換えます。
      この2つのIPアドレスは、セミコロン(;)で区切ります。
    3. rootユーザーに対して、このクラスタ・ノードからすべてのクラスタ・ノードに向けたssh等価が設定されていることを確認します。
    4. すべてのクラスタ・ノードでcellip.oraファイルを置き換えます。

      次のコマンドを使用して、すべてのクラスタ・ノードでcellip.oraファイルのバックアップを作成してから置き換えます。この例のcluster_nodesは、Oracle VM RACクラスタのすべてのOracle RACクラスタ・ノードの名前が含まれているファイルを表します(各ノードは個別の行で示されています)。

      # /usr/local/bin/dcli -g cluster_nodes –l root 
      "/bin/cp /etc/oracle/cell/network-config/cellip.ora /e
      tc/oracle/cell/network-config/cellip-orig.ora"
      
      # /usr/local/bin/dcli -g cluster_nodes –l root –f celli
      p.ora-bak –d /etc/oracle/cell/network-config/cellip.ora
      
    5. /etc/oracle/cell/network-config/cellinit.ora-bakファイルを手動で編集して、既存のIPアドレスとネットマスクを、ステップ3で使用したクラスタ・ノードの2つのストレージpkey IPアドレスとネットマスクに置き換えます。
    6. rootユーザーに対して、このクラスタ・ノードからすべてのクラスタ・ノードに向けたssh等価が設定されていることを確認します。
    7. すべてのクラスタ・ノードでcellinit.oraファイルを置き換えます。

      このIPアドレスとネットマスクは、ステップ3の3回目と4回目の実行で使用されたものです。

      次のコマンドを使用して、すべてのクラスタ・ノードでcellinit.oraファイルのバックアップを作成してから置き換えます。この例のcluster_nodesは、Oracle VM RACクラスタのすべてのOracle RACクラスタ・ノードの名前が含まれているファイルを表します(各ノードは個別の行で示されています)。

      # /usr/local/bin/dcli -g cluster_nodes –l root 
      "/bin/cp /etc/oracle/cell/network-config/cellinit.ora /e
      tc/oracle/cell/network-config/cellinit-orig.ora"
      
      # /usr/local/bin/dcli -g cluster_nodes –l root –f cellini
      t.ora-bak –d /etc/oracle/cell/network-config/cellinit.ora
      
  6. 管理ドメイン(dom0)で、各ユーザー・ドメインのユーザー・ドメイン構成ファイルを、そのユーザー・ドメインに該当するパーティション・キーを使用するように変更します。

    管理ドメインのすべての関連vm.cfgファイルを変更します。このステップはOracle VM環境にのみ適用できます。すべての管理ドメインにログインして、ステップ2で作成したパーティション・キーが含まれるように、/EXAVMIMAGES/GuestImages/user_domain_name/vm.cfgを手動で編集します。

    たとえば、次の行を変更します。

    ib_pkeys = [{'pf':'40:00.0','port':'1','pkey':['0xffff'
    ,]},{'pf':'40:00.0','port':'2','pkey':['0xffff',]},]

    変更後:

    ib_pkeys = [{'pf':'40:00.0','port':'1','pkey':['0xa000'
    ,'0xaa00',]},{'pf':'40:00.0','port':'2','pkey':['0xa000
    ','0xaa00',]},]

    この例では、0xa000はステップ2で入力したクラスタのpkey_idから導出されるクラスタのパーティション・キーです。また、0xaa00はストレージのpkey_id値から導出されるストレージのパーティション・キーです。

    次のコマンドを使用して、ステップ2で入力したpkey_idの値からvm.cfgで使用するパーティション・キーの値を導出します。

    FinalHexValue=$(echo "obase=16;ibase=2;$(expr 100000000
    0000000 + $(echo "obase=2;ibase=16;$(echo $HexValue|tr 
    [:lower:] [:upper:])"|bc))"|bc|tr [:upper:] [:lower:])

    FinalHexValueは、vm.cfgに入力する値です。また、HexValueは、ステップ2pkey_idに対して入力した値です。

    ノート:

    環境に複数のOracle VM RACクラスタがある場合、次の2つのステップ(ステップ7とステップ8)は、すべてのOracle VM RACクラスタに対してステップ3からステップ6を実行した後で、1回のみ実行する必要があります。
  7. 新しく作成したIPoIBインタフェースを使用するようにストレージ・セルを変更します。
    1. run_create_pkeys.shcreate_pkey_files.shが使用可能になっていて、前のステップで使用したものと同じdriver_dom0ノードの同じディレクトリに存在することを確認します。
    2. driver_dom0から、パティション・キーの構成が必要になるすべてのストレージ・セルへのパスワードなしのsshが設定されていることを確認します。
    3. run_create_pkeys.shを実行します。

      ストレージ・サーバーの場合は、node_typeの値がcellのすべてのストレージ・サーバーにスクリプトを2回実行する必要があります。

      このスクリプトの構文は次のとおりです。

      run_create_pkeys.sh node_name interface_name pkey_id 
      node_type pkey_ipaddr pkey_netmask pkey_interfaceType
      • node_nameでは、ストレージ・サーバーを指定します。
      • interface_nameは、ib0またはib1のどちらかです。
      • pkey_idでは、0x接頭辞なしのpkeyを指定します。ここで使用している値は、ステップ2で入力したストレージのpkey_id値から導出されるクラスタのパーティション・キーです。
      • node_typeは、computeまたはcellのどちらかです。
      • pkey_ipaddrでは、IPアドレスを指定します。
      • pkey_netmaskでは、CIDR形式(たとえば、/21)のネットマスクを指定します。
      • pkey_interfaceTypeは、計算ノード・タイプの場合はclusterまたはstorage、セル・ノード・タイプの場合はstorageです。

      次のコマンドを使用すると、ステップ2で入力したpkey_idの値から、run_create_pkeys.shスクリプトに使用するパーティション・キーの値を導出できます。

      FinalHexValue=$(echo "obase=16;ibase=2;$(expr 1000000000000000 
      + $(echo "obase=2;ibase=16;$(echo $HexValue|tr [:lower:] [:upper:])"|bc))"
      |bc|tr [:upper:] [:lower:])

      FinalHexValueは、ここのコマンドで入力する値です。HexValueは、ステップ2pkey_idに入力した値です。

      次の表は、ストレージ・サーバーに対する2回の実行の入力例を示しています。

      表5-5 ストレージ・サーバーに対する2回の実行

      実行 インタフェース名 pkey_id node_type pkey_ipaddress pkey_netmask pkey_interfaceType

      1

      ib0

      aa00

      cell

      192.168.114.1

      /20

      storage

      2

      ib1

      aa00

      cell

      192.168.114.2

      /20

      storage

      この例に示すように、スクリプトの実行のたびに「実行」列で示した値を使用します。この例のcell01は、ストレージ・サーバーの名前です。

      # ./run_create_pkeys.sh cell01 ib0 aa00 cell 192.168.114.1 /20 storage
      

      ノート:

      スクリプトからの次のメッセージは無視できます。このタスクの最後にストレージを再起動すると、次の問題が処理されます。

      Network configuration altered. Please issue the following commands 
      as root to restart the network and open IB stack: 
        service openibd restart
        service network restart
      A restart of all services is required to put new network configuration into 
      effect. MS-CELLSRV communication may be hampered until restart.

    この段階で、ストレージ・サーバー(セル)は再起動時に新しいネットワーク・インタフェースを使用するように変更されています。

  8. 各ストレージ・サーバーの/opt/oracle.cellos/cell.confファイルを変更して、ストレージ・サーバーを再起動します。
    1. /opt/oracle.cellos/cell.confファイルのバックアップを作成します。
      # cd /opt/oracle.cellos
      # cp cell.conf cell.conf-prepkey
    2. /opt/oracle.cellos/cell.confのPkey構成の行を変更します。

      次の行を変更します:

      <Pkeyconfigured>no</Pkeyconfigured>

      変更後:

      <Pkeyconfigured>yes</Pkeyconfigured>

      2つのプライベート・インタフェース、ib0とib1について、次の行を変更します。

      <IP_enabled>yes</IP_enabled>

      変更後:

      <IP_enabled>no</IP_enabled>
    3. すべてのOracle VM RACノードでOracle Grid Infrastructureが停止していることを確認します。
    4. すべてのストレージ・セル・サーバーを再起動します。
      # shutdown -r now
    5. 新しいpkey対応ネットワーク・インタフェースが使用されていることを確認します。
      # cellcli -e list cell detail | egrep 'interconnect|ipaddress'

      出力には、新しいpkey対応インタフェース(stib0stib1)が新しいIPアドレスのセットとともに表示されます。

  9. Oracle RACクラスタを再起動します。
    1. 各ユーザー・ドメイン・ノードの対応する管理ドメインにログインします。
    2. 次のコマンドを実行します。
      # xm shutdown user_domain_name
      
      # xm create /EXAVMIMAGES/GuestImages/user_domain_name/vm.cfg
  10. すべてのクラスタ・ノードでOracle Grid Infrastructureスタックを起動して、完全に起動されていることを確認します。
    1. すべてのOracle RACクラスタ・ノードでOracle Grid Infrastructureスタックを起動して、自動起動を有効にします。
      # $GRID_HOME/bin/crsctl start crs
      
      # $GRID_HOME/bin/crsctl enable crs
    2. すべてのノードでOracle Grid Infrastructureを起動したら、新しく構成したpkeyインタフェースを使用するようにcluster_interconnectsパラメータが設定されていることを確認します。

      データベース・インスタンスにログインして、次の問合せを実行します。

      SQL> SELECT inst_id, value FROM gv$parameter 
      WHERE name = 'cluster_interconnects'
    3. Oracle Cluster Registry (OCR)から古いクラスタ・インターコネクト・インタフェースを削除します。
      # Grid_home/bin/oifcfg delif –global ib0/<old subnet>
      
      # Grid_home/bin/oifcfg delif –global ib1/<old subnet>