ポートへの排他的アクセスを Db2 メンバーが獲得できるようにするための NIC の指定

Db2 メンバーがリモート・クライアントやドライバーにサービスを提供するための特定のポートへの排他的アクセスを獲得できるようにする、1 つ以上のネットワーク・インターフェース・カード (NIC) を指定することができます。 特定のNICは、そのIP アドレス、または nicbinding.cfg ファイルのアドレスにマップされるホスト名によって指定できます。

始める前に

NIC に指定したホスト名または IP アドレスから完全修飾ホスト名が派生するため、リモート・クライアントまたはドライバーが指定値を使って正しい NIC を一意的に識別できることを確認してください。 リモートクライアントまたはドライバーは、DNSまたは/etc/hostsファイルを介して完全修飾ホスト名を解決しなければなりません。

nicbinding.cfg ファイルの値は、 Db2 サーバー構成に応じて、指定された IP アドレスまたは完全修飾ホスト名のいずれかとして、メンバーによってリモート・クライアントまたはドライバーに返されます (IP アドレスまたはホスト名のどちらが指定されているかは関係ありません)。 戻り値をメンバーに関する正しい場所にマップすることで、リモート・クライアントまたはドライバーはデータベースにアクセスできます。

このタスクについて

Db2 メンバーは、開始するときに、それが常駐するホスト上の 1 つ以上の NIC において特定の 1 つのポートへの排他的アクセスを獲得しようと試みます。 ある Db2 メンバーがホスト上のすべての NIC において特定のポートへの排他的アクセスを正常に獲得した場合、同じホストにある他のすべての Db2 インスタンスが別のポートを使ってリモート・クライアントまたはドライバーにサービスを提供するように構成する必要があります。

バージョン 10.5 フィックスパック 5 以降、Db2 メンバーが特定のポートへの排他的アクセスを獲得できるようにする 1 つ以上の NIC を指定できるようになりました。こうして同じポート番号をめぐる競合を防止できます。 このフィーチャーをインスタンス内の Db2 メンバーのサブセットに対して有効にすることも、すべてのメンバーに対して有効にすることもできます。

特定の NIC は、その IP アドレス、または nicbinding.cfg ファイル内のそのアドレスにマップされるホスト名によって指定できます。このファイルは、 C:\ProgramData\IBM\DB2\DB2COPY1\DB2\cfg ディレクトリーにある Windows の場合、 ~/sqllib/cfg ディレクトリー (または Db2 pureScale® 環境では ~/sqllib_shared/cfg ディレクトリー) にあります。 複数の NIC を指定するには、それらの NIC の IP アドレスにマップされるマルチホーム・ホスト名を使用します。 マルチホーム・ホスト とは、複数の NIC IP アドレスに DNS を介して 1 つのホスト名がマップされるようなホストです。

指定した NIC 上の指定したポートが既に別の Db2 インスタンスによって所有されている場合、あるいは指定したホスト名または IP アドレスがホスト上の有効な NIC を表していない場合、ペア化は無効と見なされ、Db2 メンバーの開始時に SQL5043N が返されます。


の制約事項

  • リモート・クライアントまたはドライバーのトラフィックを保守する目的で使用される Db2 メンバーごとに、その Db2 メンバーが常駐するホスト上で、クライアント/サーバー・トラフィックのために使用できる NIC が少なくとも 1 つ存在することを確認してください。
  • 単一メンバーからなる Db2 インスタンスの場合、1 つ以上の NIC を表す IP アドレスまたはホスト名を最大で 1 つ指定できます。 メンバー ID が 0 である場合は、メンバー ID がデフォルトで 0 になるため、メンバー ID なしで IP アドレスまたはホスト名を指定できます。
  • 複数メンバーからなる Db2 インスタンスの場合、1 つ以上の NIC を表す IP アドレスまたはホスト名を、メンバーごとに最大で 1 つ指定できます。

プロシージャー

テキスト・エディターを使用して、バインディング情報を nicbinding.cfg ファイルに追加します。
構成ファイルの各行は、1 つの Db2 メンバーとその NIC の間のバインディングを表します。
注: Windows オペレーティング・システムでは、バインドを有効にするために、 nicbinding.cfg ファイル内の各 IP アドレスの後に改行文字が必要です。 改行文字を追加するには、各行の最後に Enter キーを押します。
以下の例では、Db2 インスタンス内の 3 つのメンバーすべて (0、1、2) に関するバインディングが構成ファイルで定義されています。
0 9.1.2.1
1 9.1.2.2
2 host1.newyork.mycompany.com
特定のメンバーの項目がファイルに存在しない場合、そのメンバーは、それが常駐するホスト上のすべての NIC にバインドされます。 以下の例では、4 つのメンバーからなる Db2 インスタンス内の 3 つのメンバー (0、1、3) に関するバインディングが構成ファイルで定義されています。
0 host1
1 host2.chicago.mycompany.com
3 9.1.2.4
メンバー 2 はファイルで指定されていないため、それが常駐するホスト上のすべての NIC にバインドされます。

仮想 IP (VIP) アドレス
仮想 IP (VIP) アドレスを使用したり、ホスト名を VIP にマップしたりすることで、NIC を識別できます。 VIP をホスト上の任意の NIC IP アドレスにマップすることができます。 ネットワーク障害が発生した場合、VIP は、同じホストまたは別のホストにある別の NIC の IP アドレスにマップ可能です。 以下の例では、3 つのペアのいずれか 1 つを使用して、この Db2 インスタンスを NIC にバインドできます。
0 9.2.3.2 -> static IP address of the NIC
0 9.2.3.9 -> virtual IP address (VIP) associated with another NIC on the same system
0 host3   -> network interface host name mapped to the VIP
パーティション・データベース・インスタンス
  • パーティション・データベース・インスタンスのメンバー 0、3、および 6 が host67、host68、および host77 に常駐しています。 3 つのすべてのメンバーは論理ポート番号 0 を持っています。つまり、リモート・クライアントまたはドライバーのトラフィックを処理するために TCP/IP または SSL リスナーを使ってこれらすべてをセットアップできます。
  • host67では、 NIC4、 NIC5とNIC6 はメンバー 0 にマップされます。 ホスト名 host67m1 は、これら3つのNIC のIPアドレスにマップされます。
  • host68では、 NIC5とNIC6 はメンバー3にマップされます。 ホスト名 host68m1 は、これら2つのNICのIP アドレスにマップされます。
  • host77では、NIC6 はメンバー6にマップされます。 ホスト名 host77e3 は、NIC6 (9.2.5.6) の IP アドレスにマップされます。
host67 および host68 ではリモート・クライアント/サーバー・トラフィック用に複数の NIC がメンバー 0 および 3 によって使用されるため、以下の例に示すように、マルチホーム・ホスト名を使って NIC へのメンバーのバインディングを確立する必要があります。
0 host67m1
3 host68m1
6 host77e3
メンバー 6 に関しては、host77e3 の代わりに静的 IP アドレス 9.2.5.6 を使用できます。
Db2 pureScale インスタンス
  • Db2 pureScale インスタンスのメンバー 0、1、および 2 は、 host67、 host68、および host77に存在します。 リモート・クライアントまたはドライバーのトラフィックを処理するよう 3 つのすべてのメンバーをセットアップできます。
  • host67では、NIC3 はメンバー 0 にマップされます。 NIC3のIP アドレスは9.2.3.3です。
  • host68では、NICはNIC3 とよばれ、メンバー1にマップされます。 ホスト名 host68e2 は、 NIC3 (9.2.4.3) の IP アドレスにマップされます。
  • host77では、NIC2はメンバー2にマップされます。 ホスト名 host77e1は、NIC2 (9.2.5.2)のIP アドレスにマップされます。
以下の例は、この Db2 pureScale インスタンスのメンバー 0、1、および 2 を NIC にバインドする方法を示しています。
0 9.2.3.3
1 host68e2
2 host77e1
メンバー 1 に関しては host68e2 の代わりに静的 IP アドレス 9.2.4.3 を、メンバー 2 に関しては host77e1 の代わりに静的 IP アドレス 9.2.5.2 をそれぞれ使用できます。

次の作業

MON_GET_INSTANCE 表関数を使用すると、特定のメンバーの NIC バインディング情報を取得できます。 以下の例の照会により、Db2 メンバー ID、および nicbinding.cfg ファイルで指定されたホスト名または IP アドレスが返されます。
db2
  "select MEMBER,
     substr(NETWORK_INTERFACE_BOUND,1,16)
       as NETWORK_INTERFACE_ID
     from table(MON_GET_INSTANCE(-2))"

MEMBER NETWORK_INTERFACE_ID
------ --------------------
     1 host67e1  
     0 9.2.3.3           

2 record(s) selected.
また、オペレーティング・システム・コマンドを使用して、NIC バインディングとポートの使用をモニターすることもできます。 詳細については、「誰が私のポートを使用していますか?」を参照してください。 (AIX®、 Linux®、Windows の例)