これらのタスクを実行したあと、第 3 章「高可用性データベースの管理」を参照してください。
詳細については、『Sun Java System Application Server Enterprise Edition 8.1 2005Q2 リリースノート』を参照してください。
HADB の設定および構成を行う前に、環境が次の要件を満たしていることを確認してください。
IPv4 が有効になっていること。HADB は IPv4 のみをサポートしています。HADB に使用するインタフェースでは、IPv6 を無効にしてください。
ネットワーク (ルーター、スイッチ、およびホストのネットワークインタフェース) が、ユーザーデータグラムプロトコル (UDP) マルチキャスト用に構成されている必要があります。HADB ホストが複数のサブネットにまたがっている場合は、サブネット間で UDP マルチキャストメッセージを転送するように、サブネット間のルーターを設定してください。
HADB ホスト間、または HADB ホストと Application Server ホストの間に配置されているすべてのファイアウォールを、すべての UDP トラフィック (通常のトラフィックとマルチキャストトラフィックの両方) を許可するように設定してください。
hadbm createdomain、hadbm extenddomain、hadbm create,、または hadbm addnodes コマンドに含まれているホストには、DHCP (Dynamic Host Configuration Protocol) によって割り当てられた動的な IP アドレスを使用しないでください。
冗長性のあるネットワークを設定すると、単一のネットワーク障害が発生した場合でも、HADB を使用可能なままにできます。冗長性のあるネットワークを設定するには、次の 2 つの方法があります。
Solaris 9 では、ネットワークマルチパスを設定できます。
Windows Server 2003 を除くすべてのプラットフォームでサポートされている、二重ネットワークを設定します。
ネットワークマルチパスを設定する前に、『IP Network Multipathing Administration Guide』の「ネットワークマルチパスの管理」を参照してください。
ネットワークインタフェース障害検出時間を設定します。
HADB でマルチパスのフェイルオーバーを適切にサポートするには、/etc/default/mpathd 内の FAILURE_DETECTION_TIME パラメータで指定されているネットワークインタフェース障害検出時間が 1 秒 (1000 ミリ秒) を超えないようにする必要があります。元の値がこの値を超えている場合は、このファイルを編集して、このパラメータの値を 1000 に変更します。
FAILURE_DETECTION_TIME=1000 |
変更を有効にするには、次のコマンドを使用します。
pkill -HUP in.mpathd |
HADB で使用する IP アドレスを設定します。
『IP Network Multipathing Administration Guide』で説明されているように、マルチパスを使用するには、物理ネットワークインタフェースをマルチパスインタフェースグループにグループ化する必要があります。このようなグループ内の各物理インタフェースには、次の 2 つの IP アドレスが関連付けられています。
データの送信に使用される物理インタフェースアドレス。
Solaris の内部でのみ使用されるテストアドレス。
hadbm create --hosts を使用するときに、マルチパスグループの物理インタフェースアドレスを 1 つだけ指定します。
host1 および host2 という名前の2 つのホストマシンがあるとします。それぞれに 2 つの物理ネットワークインタフェースがある場合は、その 2 つのインタフェースを 1 つのマルチパスグループとして設定します。各ホストで、ifconfig -a を実行します。
host1 の出力は次のようになります。
bge0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 5 inet 129.159.115.10 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge0:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 5 inet 129.159.115.11 netmask ffffff00 broadcast 129.159.115.255 bge1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 6 inet 129.159.115.12 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge1:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 6 inet 129.159.115.13 netmask ff000000 broadcast 129.159.115.255 |
host2 の出力は次のようになります。
bge0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3 inet 129.159.115.20 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge0:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 3 inet 129.159.115.21 netmask ff000000 broadcast 129.159.115.255 bge1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 4 inet 129.159.115.22 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge1:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 4 inet 129.159.115.23 netmask ff000000 broadcast 129.159.115.255 |
この例では、両方のホスト上の物理ネットワークインタフェースが bge0 および bge1 のあとに表示されています。『IP Network Multipathing Administration Guide』で説明されているように、bge0:1 および bge1:1 のあとに表示されているのはマルチパステストインタフェースです。これは、ifconfig の出力では「非推奨」として指定されています。
この環境で HADB を設定するには、各ホストから 1 つの物理インタフェースアドレスを選択します。この例では、HADB は host1 の129.159.115.10 と、host2 の 129.159.115.20 の IP アドレスを使用しています。ホストあたり 1 つのデータベースノードを含むデータベースを作成するには、コマンド hadbm create --host を使用します。次に例を示します。
hadbm create --host 129.159.115.10,129.159.115.20 |
ホストあたり 2 つのデータベースノードを含むデータベースを作成するには、次のコマンドを使用します。
hadbm create --host 129.159.115.10,129.159.115.20, 129.159.115.10,129.159.115.20 |
どちらの場合も、マシン上のどちらのインタフェースをエージェントが使用するべきかを指定するために、host1 と host2 で別のパラメータを使用してエージェントを構成する必要があります。そのため、host1 では次のパラメータを使用します。
ma.server.mainternal.interfaces=129.159.115.10 |
また、host2 では次のパラメータを使用します。
ma.server.mainternal.interfaces=129.159.115.20 |
ma.server.mainternal.interfaces 変数については、「設定ファイル」を参照してください。
HADB が単一のネットワーク障害に耐えられるようにするには、オペレーティングシステム (たとえば、Solaris) でサポートされているならば IP マルチパスを使用します。Windows Server 2003 では、二重ネットワークを使用して HADB を構成しないでください。このオペレーティングシステムは、二重ネットワークでは正常に動作しません。
オペレーティングシステムに IP マルチパスが設定されておらず、HADB ホストに 2 枚の NIC が実装されている場合は、二重ネットワークを使用するように HADB を設定できます。すべてのホストについて、各ネットワークインタフェースカード (NIC) の IP アドレスを別の IP サブネットに配置する必要があります。
データベース内では、すべてのノードを単一のネットワークに接続するか、またはすべてのノードを 2 つのネットワークに接続する必要があります。
サブネット間のルーターは、サブネット間で UDP マルチキャストメッセージを転送するように設定する必要があります。
HADB データベースを作成するときは、–hosts オプションを使用して、各ノードに対して 2 つ (各 NIC IP アドレスに対して 1 つ) の IP アドレスまたはホスト名を指定します。各ノードについて、1 つ目の IP アドレスは net-0 上に、2 つ目の IP アドレスは net-1 上にあります。構文は次のようになります。同じノードに対するホスト名は正符号 (+) で区切ります。
--hosts=node0net0name+node0net1name ,node1net0name+node1net1name ,node2net0name+node2net1name , ...
たとえば、次の引数では 2 つのノードが作成され、それぞれに 2 つのネットワークインタフェースを持ちます。これらのノードの作成に、次のホストオプションが使用されます。
--hosts 10.10.116.61+10.10.124.61,10.10.116.62+10.10.124.62
これにより、ネットワークアドレスが次のように設定されます。
node0 には、10.10.116.61 と 10.10.124.61。
node1 には、10.10.116.62 と 10.10.124.62。
10.10.116.61 と 10.10.116.62、および 10.10.124.61 と 10.10.124.62 がそれぞれ同じサブネット上にあることに注目してください。
この例の場合、管理エージェントは同じサブネットを使用する必要があります。そのため、設定変数 ma.server.mainternal.interfaces を、たとえば、10.10.116.0/24 に設定する必要があります。この設定は、この例の両方のエージェントに使用できます。
HADB をインストールする前に、共有メモリーとセマフォを設定する必要があります。この手順は、使用しているオペレーティングシステムによって異なります。
ルートとしてログインします。
共有メモリーを設定します。
shmmax の値を、HADB ホストマシンの物理メモリーのサイズに設定します。共有メモリーセグメントの最大サイズは、HADB データベースバッファープールのサイズより大きくする必要があります。たとえば、主記憶が 2G バイト (16 進数で 0x8000000) のマシンの場合は、/etc/system ファイルに次の行を追加します。
set shmsys:shminfo_shmmax=0x80000000 set shmsys:shminfo_shmseg=20 |
Solaris 9 以降では、shmsys:shminfo_shmseg は廃止されています。
shminfo_shmmax をシステムの合計メモリーに設定します (16 進数の表記では、示されている値 0x80000000 が 2G バイトのメモリーを表します)。
記憶域サイズに対して 16 進数の値を用いて shmsys:shminfo_shmmax の値を指定します。ホストのメモリーを確認するには、次のコマンドを使用します。
prtconf | grep Memory |
セマフォを設定します。
/etc/system ファイルを確認して、セマフォ設定のエントリがないかどうか調べます。このファイルには、すでに semmni、semmns、および semmnu エントリが含まれている可能性があります。次に例を示します。
set semsys:seminfo_semmni=10 set semsys:seminfo_semmns=60 set semsys:seminfo_semmnu=30 |
エントリが存在する場合は、これらの値にそれぞれ、16、128、および 1000 を追加します。したがって、上の例のエントリは、次のように変更されます。
set semsys:seminfo_semmni=26 set semsys:seminfo_semmns=188 set semsys:seminfo_semmnu=1030 |
これらのエントリが /etc/system ファイルに含まれていない場合は、ファイルの最後に次のエントリを追加します。
set semsys:seminfo_semmni=16 set semsys:seminfo_semmns=128 set semsys:seminfo_semmnu=1000 |
コンピュータで最大 16 の HADB ノードを実行するには、この値で十分です。16 を超えるノードのセットアップについては、『Sun Java System Application Server Enterprise Edition 8.1 2005Q1 Performance Tuning Guide』の「HADB」の章を参照してください。
マシンを再起動します。
ルートとしてログインします。
ファイル /etc/sysctl.conf を編集します。
kernel.shmax および kernel.shmall パラメータを設定します。
kernel.shmax パラメータは、共有メモリーセグメントの最大サイズをバイト単位で定義します。kernel.shmall パラメータは、システムで一度に使用できるページ内の共有メモリーの合計容量を設定します。これらの両方のパラメータの値を、マシンの物理メモリーの総量に設定します。この値は、10 進数のバイト数で指定します。たとえば、物理メモリーが 512M バイトのマシンの場合は、次のように指定します。
kernel.shmmax=536870912 kernel.shmall=536870912 |
マシンを再起動します。次のコマンドを使用します。
sync; sync; reboot
Windows では、特別なシステム設定は必要ありません。ただし、既存の J2SE インストールを使用する場合は、JAVA_HOME 環境変数を J2SE がインストールされている場所に設定します。
HADB はシステムクロックに基づくタイムスタンプを使用するため、HADB ホストでクロックを同期化する必要があります。HADB はシステムクロックを使用して、タイムアウトの管理や、履歴ファイルに記録されるイベントへのタイムスタンプを行います。HADB は分散システムであるため、トラブルシューティングを行うには、すべての履歴ファイルをまとめて分析する必要があります。そのため、すべてのホストのクロックが同期化されていることが重要です。
稼働中の HADB システムでは、システムクロックを調整しないでください。それを行うと、オペレーティングシステムやその他のソフトウェアコンポーネントに問題が発生し、それにより HADB ノードのハングアップや再起動などの問題が次々に引き起こされる場合があります。クロックを前に戻すと、クロックが調整されたときに一部の HADB サーバープロセスがハングアップする場合があります。
クロックを同期化するには、次のようにします。
Solaris では、xntpd (ネットワークタイムプロトコルデーモン) を使用します。
Linux では、ntpd を使用します。
Windows では、Windows の NTPTime を使用します。
HADB で 1 秒を超えるクロック調整が検出されると、ノードの履歴ファイルにログ記録されます。次に例を示します。
NSUP INF 2003-08-26 17:46:47.975 Clock adjusted. Leap is +195.075046 seconds.
この節では、特定のファイルシステムでの HADB のいくつかの制限について説明します。
Red Hat Enterprise Linux 3.0 では、HADB は ext2 および ext3 ファイルシステムをサポートしています。Red Hat Enterprise Linux 2.1 では、HADB は ext2 ファイルシステムをサポートしています。
Solaris 上で Veritas File System を使用している場合、HADB は履歴ファイルに WRN: Direct disk I/O mapping failed というメッセージを書き込みます。このメッセージは、HADB がデータおよびログデバイスに対するダイレクト I/O (入出力) を作動させられないことを示しています。ダイレクト I/O によって、ディスクページ書き込みの CPU コストが削減されます。また、オペレーティングシステムで「ダーティー」データページを管理するためのオーバーヘッドも削減されます。
Veritas File System でダイレクト I/O を使用するには、次のいずれかの手順を実行します。
オプション mincache=direct でマウントされたファイルシステム上に、データデバイスとログデバイスを作成します。このオプションは、このファイルシステムで作成されたすべてのファイルに適用されます。詳細については、mount_vxfs(1M) コマンドを参照してください。
Veritas Quick 入出力ユーティリティーを使用して、ファイルシステムファイルに対する raw 入出力を行います。詳細については、『VERITAS File System 4.0 Administrator’s Guide for Solaris』を参照してください。
これらの設定は、Sun Java System Application Server ではテストされていません。