5.24.4 Oracle VM RACクラスタ間のInfiniBandパーティションの構成
ここでは、Oracle VMで実行するOracle RACクラスタ間のInfiniBandパーティションを構成するステップについて説明します。
このタスクの開始前に、ファイルcreate_pkeys.tarをダウンロードして抽出しておきます。このファイルは、「ExadataでのOVM RACクラスタ間のInfiniBandパーティションの実装(My Oracle SupportのドキュメントID 2075398.1)」からダウンロードできます。このファイルは、管理ドメイン(dom0)ノードのいずれかにダウンロードする必要があります。これは、この手順のすべてのスクリプトを実行するために使用するノードです。この手順では、このノードをdriver_dom0と表記します。
ファイルを抽出すると、3つのファイルが表示されます:
create_pkeys_on_switch.shrun_create_pkeys.shcreate_pkey_files.sh
- pkeyインタフェースによって使用されるIPアドレスを割り当てます。
クラスタにInfiniBandパーティションが実装されたときに、クラスタpkeyインタフェースおよびストレージpkeyインタフェースで使用される各Oracle VM RACクラスタのIPアドレスとネットマスクのセットを計画して割り当てます。
具体例は、トピック「InfiniBandパーティションのネットワーク構成について」を参照してください。
- InfiniBandスイッチで、クラスタウェアで使用する専用パーティション(クラスタpkey)を作成します。また、Oracle RACクラスタ・ノードとストレージ・セルとの通信のために、すべてのOracle VM RACクラスタおよびストレージ・セルで使用する1つのパーティション(ストレージpkey)を作成します。
サブネット・マネージャで簡単にパーティションを識別する手段として、各パーティションにpkeyを割り当てます。pkeyは15ビットの整数です。値
0x0001と値0x7fffは、デフォルト・パーティションです。pkeyには、0x0002から0x7ffeまでの値を使用してください。rootユーザーに対して、driver_dom0管理ドメイン(dom0)ノードからInfiniBandファブリックのすべてのスイッチへのパスワードなしのssh等価を有効にします。次のようなコマンドを使用します。ib_switch_listはファブリックのすべてのInfiniBandスイッチのリストが含まれているファイルを表します(各スイッチ名は個別の行で示されています)。
# dcli –g ib_switch_list -l root –k- 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)のみで実行する必要があります。このスクリプトでは、入力として指定したすべてのスイッチにパーティションが作成されます。
- スクリプトの実行後、すべてのスイッチにパーティションが作成されたことを確認します。
# /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;この段階で、すべての必要なパーティションを作成したことを確認します。
- 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-clib1rule-clib0、rule-clib1route-clib0、route-clib1ifcfg-stib0、ifcfg-stib1rule-stib0、rule-stib1route-stib0、route-stib1
ノート:
このステップが失敗した場合は、このステップを再実行する前に次の作業を行います。
- すべてのファイルを
/etc/sysconfig/network-scripts/backup-for-pkeysから/etc/sysconfig/network-scriptsにリストアします。 - このステップでリストされる、新しく作成したファイルを削除します。
- driver_dom0ノードから、パーティション・キーについて構成する必要があるすべてのOracle RACクラスタ・ノードとストレージ・セルに向けたパスワードなしのsshが設定されていることを確認します。
run_create_pkeys.shとcreate_pkey_files.shが実行可能になっていて、driver_dom0の同じディレクトリ内にあることを確認します。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_interfaceTypenode_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_ipaddrとpkey_netmaskは、ストレージpkeyインタフェースのpkey_ipaddrとpkey_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は、ステップ2でpkey_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の出力では、クラスタ・インターコネクトに使用されるインタフェースのリストにclib0とclib1が示されている必要があります。 -
- Oracle ASMおよびOracle RAC
CLUSTER_INTERCONNECTSパラメータを変更します。- 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'; - Oracle RACクラスタ内のデータベース・インスタンスごとに、SQL*Plusを使用してログインし、Oracle RACインスタンスに対して同じコマンドを実行します。
次に例を示します:
ALTER SYSTEM SET cluster_interconnects='192.168.12.153:192.168.12.154' scope=spfile sid='RACDB1'; - すべてのOracle RACクラスタ・ノードでCRS自動起動を停止して無効化します。
# Grid_home/bin/crsctl stop crs # Grid_home/bin/crsctl disable crs
この段階で、Oracle Grid Infrastructure、Oracle ASMインスタンスおよびOracle Databaseインスタンスが、新しく作成したネットワーク・インタフェースを使用するように変更されています。
- Oracle RACクラスタ内のOracle ASMインスタンスごとに、SYSとしてSQL*Plusを使用してログインし、次のコマンドを実行します。
- すべてのクラスタ・ノード(ユーザー・ドメイン)の
cellip.oraとcellinit.oraを変更します。クラスタのいずれかのデータベース・サーバー・ノード(Oracle VM RACクラスタの場合はユーザー・ドメイン)で、次のステップを実行します。
cellip.oraファイルとcellinit.oraファイルのバックアップを作成します。# cd /etc/oracle/cell/network-config # cp cellip.ora cellip.ora-bak # cp cellinit.ora cellinit.ora-bakcellip.ora-bakファイルに変更を加えることで、既存のIPアドレスをステップ7で設定するすべてのストレージ・セルの2つのストレージpkey IPアドレスに置き換えます。この2つのIPアドレスは、セミコロン(;)で区切ります。rootユーザーに対して、このクラスタ・ノードからすべてのクラスタ・ノードに向けたssh等価が設定されていることを確認します。- すべてのクラスタ・ノードで
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 /etc/oracle/cell/network-config/cellinit.ora-bakファイルを手動で編集して、既存のIPアドレスとネットマスクを、ステップ3で使用したクラスタ・ノードの2つのストレージpkey IPアドレスとネットマスクに置き換えます。rootユーザーに対して、このクラスタ・ノードからすべてのクラスタ・ノードに向けたssh等価が設定されていることを確認します。- すべてのクラスタ・ノードで
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
- 管理ドメイン(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は、ステップ2でpkey_idに対して入力した値です。 - 新しく作成したIPoIBインタフェースを使用するようにストレージ・セルを変更します。
run_create_pkeys.shとcreate_pkey_files.shが使用可能になっていて、前のステップで使用したものと同じdriver_dom0ノードの同じディレクトリに存在することを確認します。- driver_dom0から、パティション・キーの構成が必要になるすべてのストレージ・セルへのパスワードなしのsshが設定されていることを確認します。
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_interfaceTypenode_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は、ステップ2でpkey_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.
この段階で、ストレージ・サーバー(セル)は再起動時に新しいネットワーク・インタフェースを使用するように変更されています。
- 各ストレージ・サーバーの
/opt/oracle.cellos/cell.confファイルを変更して、ストレージ・サーバーを再起動します。/opt/oracle.cellos/cell.confファイルのバックアップを作成します。# cd /opt/oracle.cellos # cp cell.conf cell.conf-prepkey/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>- すべてのOracle VM RACノードでOracle Grid Infrastructureが停止していることを確認します。
- すべてのストレージ・セル・サーバーを再起動します。
# shutdown -r now - 新しいpkey対応ネットワーク・インタフェースが使用されていることを確認します。
# cellcli -e list cell detail | egrep 'interconnect|ipaddress'出力には、新しいpkey対応インタフェース(
stib0とstib1)が新しいIPアドレスのセットとともに表示されます。
- Oracle RACクラスタを再起動します。
- 各ユーザー・ドメイン・ノードの対応する管理ドメインにログインします。
- 次のコマンドを実行します。
# xm shutdown user_domain_name # xm create /EXAVMIMAGES/GuestImages/user_domain_name/vm.cfg
- すべてのクラスタ・ノードでOracle Grid Infrastructureスタックを起動して、完全に起動されていることを確認します。
- すべてのOracle RACクラスタ・ノードでOracle Grid Infrastructureスタックを起動して、自動起動を有効にします。
# $GRID_HOME/bin/crsctl start crs # $GRID_HOME/bin/crsctl enable crs - すべてのノードでOracle Grid Infrastructureを起動したら、新しく構成したpkeyインタフェースを使用するように
cluster_interconnectsパラメータが設定されていることを確認します。データベース・インスタンスにログインして、次の問合せを実行します。
SQL> SELECT inst_id, value FROM gv$parameter WHERE name = 'cluster_interconnects' - Oracle Cluster Registry (OCR)から古いクラスタ・インターコネクト・インタフェースを削除します。
# Grid_home/bin/oifcfg delif –global ib0/<old subnet> # Grid_home/bin/oifcfg delif –global ib1/<old subnet>
- すべてのOracle RACクラスタ・ノードでOracle Grid Infrastructureスタックを起動して、自動起動を有効にします。