Sun Java System Application Server Enterprise Edition 8.1 2005Q2 高可用性 (HA) 管理ガイド

HADB の設定の準備

ここで説明する内容は次のとおりです。

前提条件

HADB の設定および構成を行う前に、環境が次の要件を満たしていることを確認してください。

ネットワーク冗長性の設定

冗長性のあるネットワークを設定すると、単一のネットワーク障害が発生した場合でも、HADB を使用可能なままにできます。冗長性のあるネットワークを設定するには、次の 2 つの方法があります。

ネットワークマルチパスの設定

ネットワークマルチパスを設定する前に、『IP Network Multipathing Administration Guide』の「ネットワークマルチパスの管理」を参照してください。

Procedureすでに IP マルチパスを使用している HADB ホストマシンを設定するには

  1. ネットワークインタフェース障害検出時間を設定します。

    HADB でマルチパスのフェイルオーバーを適切にサポートするには、/etc/default/mpathd 内の FAILURE_DETECTION_TIME パラメータで指定されているネットワークインタフェース障害検出時間が 1 秒 (1000 ミリ秒) を超えないようにする必要があります。元の値がこの値を超えている場合は、このファイルを編集して、このパラメータの値を 1000 に変更します。


    FAILURE_DETECTION_TIME=1000

    変更を有効にするには、次のコマンドを使用します。


    pkill -HUP in.mpathd
  2. HADB で使用する IP アドレスを設定します。

    IP Network Multipathing Administration Guide』で説明されているように、マルチパスを使用するには、物理ネットワークインタフェースをマルチパスインタフェースグループにグループ化する必要があります。このようなグループ内の各物理インタフェースには、次の 2 つの IP アドレスが関連付けられています。

    • データの送信に使用される物理インタフェースアドレス。

    • Solaris の内部でのみ使用されるテストアドレス。

    hadbm create --hosts を使用するときに、マルチパスグループの物理インタフェースアドレスを 1 つだけ指定します。


例 2–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

これにより、ネットワークアドレスが次のように設定されます。

10.10.116.6110.10.116.62、および 10.10.124.6110.10.124.62 がそれぞれ同じサブネット上にあることに注目してください。

この例の場合、管理エージェントは同じサブネットを使用する必要があります。そのため、設定変数 ma.server.mainternal.interfaces を、たとえば、10.10.116.0/24 に設定する必要があります。この設定は、この例の両方のエージェントに使用できます。

共有メモリーとセマフォの設定

HADB をインストールする前に、共有メモリーとセマフォを設定する必要があります。この手順は、使用しているオペレーティングシステムによって異なります。

ProcedureSolaris で共有メモリーとセマフォを設定するには

  1. ルートとしてログインします。

  2. 共有メモリーを設定します。

    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

  3. セマフォを設定します。

    /etc/system ファイルを確認して、セマフォ設定のエントリがないかどうか調べます。このファイルには、すでに semmnisemmns、および 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」の章を参照してください。

  4. マシンを再起動します。

ProcedureLinux で共有メモリーを設定するには

  1. ルートとしてログインします。

  2. ファイル /etc/sysctl.conf を編集します。

  3. kernel.shmax および kernel.shmall パラメータを設定します。

    kernel.shmax パラメータは、共有メモリーセグメントの最大サイズをバイト単位で定義します。kernel.shmall パラメータは、システムで一度に使用できるページ内の共有メモリーの合計容量を設定します。これらの両方のパラメータの値を、マシンの物理メモリーの総量に設定します。この値は、10 進数のバイト数で指定します。たとえば、物理メモリーが 512M バイトのマシンの場合は、次のように指定します。


    kernel.shmmax=536870912
     kernel.shmall=536870912
  4. マシンを再起動します。次のコマンドを使用します。

    sync; sync; reboot

Windows の場合の手順

Windows では、特別なシステム設定は必要ありません。ただし、既存の J2SE インストールを使用する場合は、JAVA_HOME 環境変数を J2SE がインストールされている場所に設定します。

システムクロックの同期

HADB はシステムクロックに基づくタイムスタンプを使用するため、HADB ホストでクロックを同期化する必要があります。HADB はシステムクロックを使用して、タイムアウトの管理や、履歴ファイルに記録されるイベントへのタイムスタンプを行います。HADB は分散システムであるため、トラブルシューティングを行うには、すべての履歴ファイルをまとめて分析する必要があります。そのため、すべてのホストのクロックが同期化されていることが重要です。

稼働中の HADB システムでは、システムクロックを調整しないでください。それを行うと、オペレーティングシステムやその他のソフトウェアコンポーネントに問題が発生し、それにより HADB ノードのハングアップや再起動などの問題が次々に引き起こされる場合があります。クロックを前に戻すと、クロックが調整されたときに一部の HADB サーバープロセスがハングアップする場合があります。

クロックを同期化するには、次のようにします。

HADB で 1 秒を超えるクロック調整が検出されると、ノードの履歴ファイルにログ記録されます。次に例を示します。

NSUP INF 2003-08-26 17:46:47.975 Clock adjusted.
 Leap is +195.075046 seconds.

ファイルシステムのサポート

この節では、特定のファイルシステムでの HADB のいくつかの制限について説明します。

Red Hat Enterprise Linux

Red Hat Enterprise Linux 3.0 では、HADB は ext2 および ext3 ファイルシステムをサポートしています。Red Hat Enterprise Linux 2.1 では、HADB は ext2 ファイルシステムをサポートしています。

Veritas File System

Solaris 上で Veritas File System を使用している場合、HADB は履歴ファイルに WRN: Direct disk I/O mapping failed というメッセージを書き込みます。このメッセージは、HADB がデータおよびログデバイスに対するダイレクト I/O (入出力) を作動させられないことを示しています。ダイレクト I/O によって、ディスクページ書き込みの CPU コストが削減されます。また、オペレーティングシステムで「ダーティー」データページを管理するためのオーバーヘッドも削減されます。

Veritas File System でダイレクト I/O を使用するには、次のいずれかの手順を実行します。


注 –

これらの設定は、Sun Java System Application Server ではテストされていません。