相互引き受け モードでは、ある 1 つのプロセッサーは、 区分データベース構成のもう 1 つのインスタンスまたは他の区画を実行する一方で、 単一区画データベース・インスタンスまたは区分データベースの区画をフェールオーバーします。 ホット・スタンドバイ構成の場合と同様、インストール・パス、 インスタンス・ディレクトリー、およびデータベースは、 フェールオーバー処理に関係する可能性のある各プロセッサーからアクセスできるものでなければなりません。 インストール・パスとインスタンス・パスは、共用ファイル・システムに置くか、 別個のファイル・システムにミラーリングすることができます。
インスタンスのフェールオーバーについて相互引き受け戦略を使用するときは、 両方のインスタンスを同じプロセッサーで同時に実行できるような方式で、 インスタンスを定義する必要があります。 実際のインストール要件およびインスタンスの作成に関する詳細については、 HACMP for AIX, Version 4.2: Installation Guide (SC23-1940) を参照してください。
以下の例ではそれぞれ、サンプル・スクリプトが、(DB2 (AIX 版) のインストールの) sqllib/samples/hacmp の中に格納されています。
次に示す相互インスタンス・フェールオーバー・シナリオは、 "node10" および "node20" と呼ばれる 2 つのプロセッサーからなる HACMP システムによって 構成されています。
2 つのインスタンス "db2inst1" と "db2inst2" は、 共用ファイル・システムの単一のインストール・パスから作成されます。 インスタンス "db2inst1" は/u/db2inst1 で作成され、 インスタンス "db2inst2" は /u/db2inst2 で作成されます。 これらのパスはどちらも、 両方のプロセッサーでアクセスできる共用ファイル・システム上にあります。 インスタンスはそれぞれ、固有のパスをもつ単一データベースをもっており、やはり、 両方のプロセッサーでアクセスできる共用リソース上に置かれています。
どちらのインスタンスも、リモート・クライアントから TCP/IP プロトコルでアクセスされます。 "db2inst1" は、サービス名 "db2inst1_port" (ポート番号 5500) を使用し、 "db2inst2" は、サービス名 "db2inst2_port" (ポート番号 5550) を使用します。 "db2inst1" インスタンスにアクセスするリモート・クライアントは、 "node10" をホスト名として使用して、 それらのノード・ディレクトリーにこのインスタンスをカタログしてもっています。 "db2inst2" インスタンスにアクセスするリモート・クライアントは、 "node20" をホスト名として使用して、 それらのノード・ディレクトリーにこのインスタンスをカタログしてもっています。 通常の操作条件では、"db2inst1" は "node10" 上で実行され、 "db2inst2" は "node20" 上で実行されます。 "node10" が故障した場合には、 フェールオーバー・スクリプトが "db2inst1" を "node20" で開始し、 "node10" と関連する外部 IP アドレスが "node20" に切り換えられます。 フェールオーバー・スクリプトによってインスタンスが開始され、 データベースが再始動されると、リモート・クライアントは、 あたかも "node10" で実行されているように、 このインスタンスの内部のデータベースに接続することができます。
サンプル・スクリプト:
hacmp-s4.sh
区分データベース・サーバー環境での区画の相互フェールオーバーでは、 フェールオーバー・プロセッサー上の論理ノードとして、 区画のフェールオーバーが起こるようにする必要があります。 たとえば、相互引き受け用に構成された 2 つのプロセッサーからなる HACMP クラスターの別個のプロセッサーで実行されている区分データベース・サーバーに 2 つの区画がある場合は、 それらの区画は論理ノードとしてフェールオーバーする必要があります。 それぞれのノードの省略時の区画は、論理ノード 0 として定義されている必要があります。 このことは、あるプロセッサーから別のプロセッサーに区画がフェールオーバーするとき、 その区画は直接のリモート通信プロトコルの listener をもたない論理ノードとして開始されることを意味しています。 そのような区画を調整プログラム・ノードとして使用することはできません。
相互区画引き受けとしてシステムを構成するときに、ほかに考慮すべき 1 つの重要な事項は、 ローカル区画データベース・パスに関することです。 区分データベース環境でデータベースが作成されるときは、 複数の区分データベース・サーバーによって共用されないルート・パス上に作成されます。 たとえば、次のコマンドを考えてみます。
CREATE DATABASE db_a1 ON /dbpath
このコマンドはインスタンス "db2inst" で実行され、 データベース db_a1 を /dbpath で作成します。 それぞれのデータベース区画は、 /dbpath/db2inst/nodexxxx の下にあるローカルのファイル・システム上に作成されます。 ここで、xxxx は、ノード番号を表します。 HACMP フェールオーバーでは、 他のプロセッサーですでに使用されている /dbpath ファイル・システムをマウントしようとします。 したがって、フェールオーバー・スクリプトは、 異なる論理ポイントの下にファイル・システムをマウントして、 そのファイル・システムから該当の /dpath/db2inst/nodexxxx パスへのシンボリック・リンクを セットアップする必要があります。
以下に、フェールオーバーの前と後の db2nodes.cfg ファイルの一部を示します。 この例では、ノード番号 2 が HACMP マシンのプロセッサー 1 で実行されています。 このマシンはホスト名とネット名の両方が "node201" です。 ノード番号 3 が HACMP マシンのプロセッサー 2 で実行されています。 このマシンはホスト名とネット名の両方が "node202" です。
前: 1 node101 0 node101 2 node201 0 node201 <= HACMP 3 node202 0 node202 <= HACMP 4 node301 0 node301 db2start nodenum 2 restart hostname node202 port 1 netname node202 後: 1 node101 0 node101 2 node202 1 node202 <= HACMP 3 node202 0 node202 <= HACMP 4 node301 0 node301
フェールオーバーのあとで、 調整プログラムとしてのノード番号 2 に直接アクセスしようとしているリモート・クライアントは、データベースのノード・エントリーを再カタログして、 フェールオーバー・ノードを指し示すようにする必要があります。 調整プログラム・ノードで相互フェールオーバー・シナリオを使用することはお勧めしません。 ご使用の調整プログラム・ノードで冗長度が必要な場合は、 ホット・スタンドバイ構成を使用してください。
サンプル・スクリプト:
hacmp-s5.sh