4 Oracle Flex Cluster

Oracle Flex Clusterは、Oracle Clusterwareを多数のノードに拡張します。

この章の内容は次のとおりです。

4.1 Oracle Flex Clusterの概要

Oracle Flex Cluster構成でインストールされるOracle Grid Infrastructureは、スケーラブルで動的、強固なノード・ネットワークです。

Oracle Flex Clusterは、多数のノードを持つOracle Real Application Clusters (Oracle RAC)データベースなどの様々なアプリケーションにプラットフォームを提供します。Oracle Flex Clusterでは、高可用性のために調整および自動化が必要な他のサービス・デプロイメントのプラットフォームも提供されます。

Oracle Flex Cluster内のすべてのノードは、単一のOracle Grid Infrastructureクラスタに属します。このアーキテクチャでは、様々なサービス・レベル、負荷、障害のレスポンス、およびリカバリに対処するために、アプリケーション・ニーズに基づいてリソースのデプロイメントに対するポリシー決定が集中管理されます。

Oracle Flex Clusterには、ハブおよびスポーク・アーキテクチャに配置される2つのタイプのノード(ハブ・ノードおよびリーフ・ノード)が含まれます。Oracle Flex Cluster内のハブ・ノードの最大数は64です。リーフ・ノードの数は、さらに多くできます。ハブ・ノードおよびリーフ・ノードでは、様々なタイプのアプリケーションをホストできます。

ハブ・ノードは、接続が強固であり、共有ストレージに直接アクセスできる点で、Oracle Clusterwareの標準クラスタ構成におけるOracle Grid Infrastructureノードに類似しています。ハブ・ノードを使用して、読取り/書込みデータベース・インスタンスをホスティングします。

リーフ・ノードは、共有記憶域への直接アクセスが必要なく、かわりにハブ・ノードを介してデータを要求する点が、標準のOracle Grid Infrastructureノードと異なります。リーフ・ノードを使用して、読取り専用データベース・インスタンスをホスティングします。

注意:

同じプライマリ・データベースの読取り/書込みデータベース・インスタンスと読取り専用データベース・インスタンスは、Oracle Flex Clusterで共存できます。

ハブ・ノードは、クラスタ・メンバー・ノードとしてリーフ・ノードを一切必要とせずにOracle Flex Cluster構成で実行できますが、リーフ・ノードは最低1つのハブ・ノードを含むクラスタのメンバーである必要があります。

注意:

Oracle Flex Clusterをアップグレードする場合、最初にハブ・ノードをアップグレードし、アップグレード・プロセスの一環としてアップグレード済のハブ・ノードを起動しておくことをお薦めします。

リーダー・ノード

読取り専用モードで実行されるOracle RACデータベース・インスタンスをホスティングするためにリーフ・ノードを使用でき、これらのリーフ・ノードはリーダー・ノードになります。データがそのリーフ・ノードにキャッシュされるように大量のメモリーを持つノードをプロビジョニングすることで、パラレル問合せ操作のためにこれらのノードを最適化できます。

リーフ・ノードでは、ハブ・ノード間で発生するハートビート・メッセージとは異なる定期的なハートビート・メッセージを、関連付けられているハブ・ノードに送信します。ハブ・ノードの計画停止中、リーフ・ノードは、1つのハブ・ノードにのみ接続されている場合を除き、別のハブ・ノードへの接続を試行します。ハブ・ノードが削除されると、リーフ・ノードもクラスタから削除されます。

4.2 Oracle Flex Clusterの管理

CRSCTLを使用して、小さいクラスタまたは大きいクラスタのいずれかにOracle Grid Infrastructureを正常にインストールした後のOracle Flex Clusterを管理します。

この項には次のトピックが含まれます:

4.2.1 クラスタ・モードの変更

既存のOracle Clusterwareの標準クラスタをOracle Flex Clusterに変更できます。

注意:

  • クラスタ・モードを変更する場合、ダウンタイムが発生します。

  • Oracle Flex ClusterからのOracle Clusterwareの標準クラスタへの変更をサポートしていません。

  • Oracle Flex Clusterではグリッド・ネーミング・サービス(GNS)が必要です。

  • ゾーン委任は必要ありません。

4.2.1.1 Oracle Clusterwareの標準クラスタからのOracle Flex Clusterへの変更

CRSCTLを使用して、既存のOracle Clusterwareの標準クラスタからOracle Flex Clusterに変更します。

次の手順を実行します。

  1. 次のコマンドを実行して、クラスタの現在のモードを判断します。

    $ crsctl get cluster mode status
  2. 次のコマンドを実行して、グリッド・ネーミング・サービス(GNS)が固定VIPで構成されているかを確認します。

    $ srvctl config gns

    この手順は、GNSが固定のVIPで構成されていない場合は失敗します。GNSがない場合、次のようにrootとして1つ作成します。

    # srvctl add gns -vip vip_name | ip_address

    次のコマンドをrootとして実行して、GNSを起動します。

    # srvctl start gns
  3. Oracle Automatic Storage Management Configuration Assistant (ASMCA)を使用して、クラスタでOracle Flex ASMを有効にしてからクラスタ・モードを変更します。

  4. rootとして次のコマンドを実行して、クラスタのモードがOracle Flex Clusterになるよう変更します。

    # crsctl set cluster mode flex
  5. クラスタの各ノードでrootとして次のコマンドを実行し、Oracle Clusterwareを停止します。

    # crsctl stop crs
  6. クラスタの各ノードでrootとして次のコマンドを実行し、Oracle Clusterwareを起動します。

    # crsctl start crs -wait

    注意:

    進捗状況およびステータス・メッセージを表示するには、-waitオプションを使用します。

4.2.2 ノード・ロールの変更

構成されているノードのロールは、それがハブ・ノードであるかリーフ・ノードであるかにかかわらずローカルに保存され、インストールのはじめに設定されます。

起動時に、ノードは前回構成されたロールでの起動を試みます。

CRSCTLを使用して、次の手順でノードのロールを変更します。

  1. 次のコマンドを実行して、ローカル・ノードの現在のロールを判断します。
    $ crsctl get node role config
  2. 次のコマンドをrootとして実行して、ローカル・ノードのロールを変更します。
    # crsctl set node role {hub | leaf}

    注意:

    リーフ・ノードをハブ・ノードに変更する場合、VIPがすでにノードに存在していない場合は、srvctl add vipを実行してVIPを追加する必要がある場合があります。VIPを持つのにリーフ・ノードは必要ありません。

    DHCP割当てVIPを含むクラスタをインストールした場合、手動でVIPを追加する必要はありません。

  3. rootとして、ロールを変更したノードのOracle高可用性サービスを、次のように停止します。
    # crsctl stop crs
  4. リーフ・ノードをハブ・ノードに変更している場合は、次のようにOracle ASMフィルタ・ドライバをrootとして構成します。
    # $ORACLE_HOME/bin/asmcmd afd_configure
  5. rootとして、ロールを変更したノードのOracle高可用性サービスを、次のように再起動します。
    # crsctl start crs -wait

    注意:

    進捗状況およびステータス・メッセージを表示するには、-waitオプションを使用します。

  6. ローカル・ノードで手順3および5を実行します。

4.3 Oracle拡張クラスタ

1つのOracle RACクラスタを、地理的に離れ、それぞれ独自の記憶域を備えた2つ以上のサイトにわたって拡張できます。いずれかのサイトに障害が発生すると、他のサイトがアクティブ・スタンバイとして機能します。

Oracle ASMとOracle Databaseスタックは、いずれも、通常、データ・センターのエンタープライズ・クラスの共有記憶域を使用するように設計されています。ただし、ファイバ・チャネル・テクノロジにより、計算リソースと記憶域リソースを2つ以上のデータ・センターにわたって分散でき、それらを計算および記憶域のそれぞれのニーズに従ってイーサネット・ケーブルやファイバ・チャネルを介して接続できます。

Oracle拡張クラスタは、Oracle Grid Infrastructureをインストールするときに構成できますが、インストール後も、ConvertToExtendedスクリプトを使用して構成できます。CRSCTLを使用して、Oracle拡張クラスタを管理します。

4.3.1 Oracle拡張クラスタの構成

この手順は、Oracle Grid Infrastructure 12c リリース2 (12.2)以上とともにインストールされたか、後でこのリリースに更新され、通常は1つのサイト(デフォルト・サイト)のみで構成されるクラスタの場合にのみサポートされます。

注意:

この手順では、クラスタ内のすべてのノードがアクセス可能である必要があります。データベース・アクセスが中断すると、クラスタも停止します。
1つまたは複数のディスク・グループおよび複数の障害グループを含むOracle拡張クラスタを構成できます。ConvertToExtendedスクリプトを使用して、複数のデータ・サイトを作成し、1つのノードを各データ・サイトに関連付けることができます。すべてのOracle Flex ASM記憶域は、既存のディスク・グループを拡張ディスク・グループに変換するメカニズムがないため、デフォルトのクラスタ・サイトに関連付けられたままとなります。クラスタをOracle拡張クラスタに変換した後、投票ファイル・メンバーシップは階層化されず、フラットなままとなります。
サイト固有の階層的な投票ファイル・アルゴリズムを利用するには、拡張ディスク・グループを追加し、投票ファイルを拡張ディスク・グループに移行することも必要となります。
次のように、CRSCTLを使用してクラスタを問い合せ、その拡張ステータスを判別します。
$ crsctl get cluster extended
CRS-6579: The cluster is 'NOT EXTENDED'
$ crsctl query cluster site –all
Site 'crsclus' identified by '7b7b3bef4c1f5ff9ff8765bceb45433a' in state 'ENABLED',
 and contains nodes 'node1,node2,node3,node4', and disks ''.

前述の例では、4つのノード(node1node2node3およびnode4)と1つのディスク・グループ(datadg)が含まれるcrsclusというクラスタを識別します。このクラスタには構成済のサイトが1つ含まれます。

一部のOracle Flex ASMインスタンス、cssdおよびcrsdがクラスタ・モードを拡張ではないとみなす一方で、他のコンポーネントがクラスタ・モードを拡張であるとみなすことを回避するために、Oracle Clusterwareスタックを停止します。グリッド・プラグ・アンド・プレイ・デーモン(gpnpd)をオンラインのままにする利点は、プロファイルがリモート・ノードで更新されることです。Oracle Clusterwareスタックを次回起動したときに、クラスタ・モードが拡張されます。
# crsctl stop cluster -all
  1. クラスタ内の最初のノードで、次のコマンドを実行します。
    $ rootcrs.sh -converttoextended -firstnode -sites site_list -site site_name
  2. crsctl check cssを実行して、クラスタ同期サービス(CSS)がいずれのリモート・ノードでも実行されていないことを確認します。
  3. サイトおよびサイトGUIDを生成します。チェックポイントをこの情報で更新し、クラスタ内の残りのノードにコピーします。
  4. 次のコマンドを使用して、グリッド・プラグ・アンド・プレイ・プロファイルを更新し、ext_modeをTRUEに設定します。
    $ cd $Grid_home/gpnp/host_name/profiles/peer
    
    $ gpnptool getpval -p=profile.xml -prf_sq -o=temp_file // run_gpnptool_getpval()
    $ gpnptool edit -p=profile.xml -asm_ext="" prf_sq=seq+1 -o=profile_ext.xml

    注意:

    prf_sqの値は、ProfileSequenceキーの現在のプロファイル内の値よりも大きい必要があります。
    $ gpnptool sign -p=profile_ext.xml -o=profile_ext_sign.xml
    $ mv profile_ext_sign.xml profile.xml
    $ gpnptool put -p=profile.xml
  5. 次のように、サイトをローカル構成に追加します。
    $ crsctl add crs site site_name -guid site_guid -local
  6. 次のように、サイトをグローバル構成に追加します(そのためにはOCRが実行中である必要があります)。
    $ crsctl add crs site site_name -guid site_guid
  7. 次のように、このノードのローカル構成でサイトへのマッピングを更新します。
    $ crsctl modify cluster site site_name –n local_host -local
  8. 次のように、ノードからサイトへのマッピングを更新します。
    $ crsctl modify cluster site site_name –n host1, host2, ...
  9. 次のように、Oracle高可用性サービス・スタックを停止してから起動します。
    # crsctl stop crs
    # crsctl start crs
クラスタ内の残りのノードで、次を実行します。
  1. 次のように、クラスタを特定のノードに拡張します。

    $ rootcrs.sh -converttoextended -site site_name
  2. CSSがいずれのリモート・ノードでも実行されていないことを確認します。

  3. 前述のチェックポイント情報を使用して、新しいサイトおよびサイトGUIDを参照します。

  4. 次のように、サイトをローカル構成に追加します。

    $ crsctl add crs site site_name -guid site_guid -local
  5. 次のように、このノードのローカル構成でサイトへのマッピングを更新します。

    $ crsctl modify cluster site site_name –n local_host -local
  6. 次のように、Oracle高可用性サービス・スタックを停止してから起動します。

    # crsctl stop crs
    # crsctl start crs
Oracle拡張クラスタの構成が完了したら、次のコマンドを実行して、構成を検証します。
$ crsctl get cluster extended
CRS-XXXX: The cluster is 'EXTENDED'

$ crsctl query cluster site –all
Site 'crsclus' identified by '7b7b3bef4c1f5ff9ff8765bceb45433a' is 'ONLINE', and 
contains nodes '', and disks ''.
Site 'ny' identified by '888b3bef4c1f5ff9ff8765bceb45433a' is 'ONLINE', and \
contains nodes 'node1,node2', and disks ''.
Site 'nj' identified by '999b3bef4c1f5ff9ff8765bceb45433a' is 'ONLINE', and \
contains nodes 'node3,node4', and disks ''.

前述のコマンド例の出力は、コマンドを実行したときにCRSCTLによって表示される内容と似ています。