ここでは、高可用性データベース (HADB) に関する既知の問題とその解決方法を示します。
ロードバランサプラグインの健全性検査により、バックグラウンド (負荷) で多数の接続と切断が生成されます。健全性検査の目的で、runDaemonMonitor スレッドが Application Server のリスナーごとに接続と切断を実行します。これにより、Enterprise Server で接続が飽和する場合があります。
新しい属性の monitor-interval-in-seconds を、loadbalancer.xml ファイルで使用できます。この属性を使用すると、ロードバランサプラグインに多数のリスナーが設定されている状況で、接続と切断のイベントの間に一時停止を挿入できます。一時停止のデフォルト値は 0 です。
2 つのサブネット上にダブルネットワークで設定された HADB は、Solaris SPARC 上では正常に動作します。しかし、一部のハードウェアプラットフォームでのオペレーティングシステムまたはネットワークドライバの問題が原因で、Solaris x86 および Linux プラットフォームではダブルネットワークを適切に処理できない場合があります。これにより、HADB について次の問題が発生します。
Linux では、メッセージ送信の際に HADB プロセスがブロックされることがある。これにより、HADB ノードが再起動し、ネットワークパーティションが発生する。
Solaris x86 では、ネットワーク障害が発生した場合、もう一方のネットワークインタフェースへの切り替えを妨げる問題が発生することがある。この問題は常に発生するとは限らないため、ネットワークが 1 つしかないよりも 2 つあった方が安全である。この問題は、Solaris 10 で部分的に解決されている。
トランキングがサポートされない。
Microsoft Windows 2003 では、HADB はダブルネットワークをサポートしていない (ID 5103186)。
新しいデータベースを作成すると、使用可能な共有メモリーセグメントが少なすぎるという、次のエラーで失敗することがあります。
HADB-E-21054: System resource is unavailable: HADB-S-05512: Attaching shared memory segment with key "xxxxx" failed, OS status=24 OS error message: Too many open files.
共有メモリーが設定されており、その設定が機能していることを確認します。特に、Solaris 8 では、/etc/system ファイルを調べて、変数 shmsys: shminfo_shmseg の値がホストあたりのノード数の 6 倍以上になっていることを確認します。
hadbm set を使用してデバイスまたはバッファーのサイズを増やす場合、管理システムは、データベースの作成やノードの追加の際にはリソースが利用可能かどうかをチェックしますが、デバイスまたはメインメモリーのバッファーサイズを変更するときには利用可能なリソースが十分にあるかどうかをチェックしません。
設定属性 devicesize または buffersize を増やす前に、すべてのホスト上にディスクおよびメモリーの空きスペースが十分にあることを確認してください。
同一のソフトウェアパッケージを、同じ名前で別のホストの別の位置で登録することはできません。次に例を示します。
hadbm registerpackage test --packagepath=/var/install1 --hosts europa11 Package successfully registered. hadbm registerpackage test --packagepath=/var/install2 --hosts europa12 hadbm:Error 22171: A software package has already been registered with the package name test. |
HADB は、データベースクラスタ内のノードをまたがる混在パスをサポートしません。HADB サーバーのインストールディレクトリ (---packagepath) は、すべての参加ホストについて同一にしてください。
複数のネットワークインタフェースを備えたホスト上で管理エージェントを実行している場合に、すべてのネットワークインタフェースが同じサブネット上に存在しないと、createdomain コマンドが失敗することがあります。
hadbm:Error 22020: The management agents could not establish a domain, please check that the hosts can communicate with UDP multicast. |
管理エージェントは、特に設定されていないかぎり、UDP マルチキャスト用の「最初の」インタフェース (java.net.NetworkInterface.getNetworkInterfaces() の結果で定義されている最初のインタフェース) を使用します。
もっとも良い解決法は、使用するサブネットを管理エージェントに通知することです。たとえば、設定ファイル内の ma.server.mainternal.interfaces を ma.server.mainternal.interfaces=10.11.100.0 に設定します。あるいは、サブネット間のルーターを、マルチキャストパケットをルーティングするように設定することもできます。このとき、管理エージェントはマルチキャストアドレス 228.8.8.8 を使用します。
管理エージェントの新しい設定を再試行する前に、管理エージェントリポジトリのクリーンアップが必要になる場合があります。ドメイン内のすべてのエージェントを停止し、管理エージェント設定ファイル中の repository.dr.path で指定したリポジトリディレクトリにある、すべてのファイルとディレクトリを削除します。この操作は、新しい設定ファイルを使用してエージェントを再起動する前に、すべてのホスト上で実行する必要があります。
Solaris 10 Opteron では、hadbm コマンドを使用して HADB を起動、停止、または再設定すると、次のいずれかのエラーで失敗またはハングアップする場合があります。
hadbm:Error 22009: The command issued had no progress in the last 300 seconds. HADB-E-21070: The operation did not complete within the time limit, but has not been cancelled and may complete at a later time. |
このエラーは、clu_noman_srv プロセスが使用するファイル (nomandevice) への読み取り/書き込みに不整合があった場合に発生することがあります。この問題は、HADB 履歴ファイルで次のメッセージを検索することにより検出できます。
n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 does not respond. n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Have not heard from it in 104.537454 sec. n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 did not start. |
問題を手動で再現できていないため、次の回避策はまだ検証されていません。ただし、影響を受けるノードに対してこのコマンドを実行すれば、問題は解決されます。
hadbm restartnode --level=clear nodeno dbname |
ノードのすべてのデバイスが再初期化されるわけではないことに注意してください。再初期化する前に、ノードの停止が必要になる場合があります。
複数の NIC カードが実装された、Solaris 8 を実行しているホスト上で起動されている場合、IPv6 と IPv4 が有効になったカードが混在していると、管理エージェントが例外「IPV6_MULTICAST_IF failed
環境変数 JAVA_OPTIONS を -Djava.net.preferIPv4Stack=true に設定します。次に例を示します。
export JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true" |
あるいは、この問題が発生しない Solaris 9 以降を使用します。
64 ビットバージョンの Red Hat Enterprise Linux 3.0 のバグにより、非同期 I/O の実行時に clu_trans_srv プロセスが中断できないモードになります。この場合、kill -9 が機能せず、オペレーティングシステムの再起動が必要になります。
Red Hat Enterprise Linux 3.0 の 32 ビットバージョンを使用します。
パスワードが hadb に格納されるときに、パスワード内の大文字は小文字に変換されます。
大文字を含むパスワードは使用しないでください。
以前の HADB バージョンにダウングレードすると、管理エージェントが各種のエラーコードで失敗する場合があります。
HADB データベースのダウングレードは可能ですが、リポジトリオブジェクトが変更されている場合は管理エージェントをダウングレードできません。ダウングレードのあとも、最新の HADB バージョンの管理エージェントを使用し続ける必要があります。
HADB c パッケージ (Solaris: SUNWhadbc、Linux: sun-hadb-c) バージョン <m.n.u-p> のインストールまたは削除に関しては、symlink /opt/SUNWhadb/<m> はいったん作成されると、そのあとは何も手を加えられません。そのため、切り離された symlink が存在することがあり得ます。
使用中の場合を除き、インストールの前またはアンインストールの後に symlink を削除します。
Solaris 10 では、大域ゾーンで ma-initd スクリプトを使用して管理エージェントを停止すると、ローカルゾーンの管理エージェントも停止されます。
管理エージェントを大域ゾーンとローカルゾーンの両方にインストールしないでください。
場合によっては、サーバー上のリソース競合の問題によって管理クライアントが切断されることがあります。再接続時、「hadbm: Error 22184: A password is required to connect to the management agent」という紛らわしいエラーメッセージが返されることがあります。
場合によっては、サーバー上のリソース競合の問題によって管理クライアントが切断されることがあります。再接続時、「hadbm: Error 22184: A password is required to connect to the management agent」という紛らわしいエラーメッセージが返されることがあります。
サーバー上にリソースに関する問題があるかどうかを確認し、適切な処置 (たとえば、リソースの追加) を取ってから、操作を再試行します。
Java Enterprise System を使用して (ルートとして) インストールすると、ルート以外のユーザーは HADB を管理できなくなります。
HADB を管理するには、常にルートとしてログインします。
0.0.0.0 のような IP アドレスを含む特殊用途のインタフェースを、管理エージェント内の HADB ノードが使用する有効なインタフェースとして登録するべきではありません。このようなインタフェースを登録すると、IP アドレスの代わりにホスト名を使用して hadbm create コマンドを発行するユーザーによってこのインタフェース上に HADB ノードが設定された場合に、問題が発生する場合があります。その場合、これらのノードは通信できなくなり、create コマンドはハングアップします。
複数のインタフェースを備えたホスト上で hadbm create を使用する場合は、DDN 形式を使用して IP アドレスを常に明示的に指定します。
Windows プラットフォームでは、特定の設定および負荷の下で、オペレーティングシステム内で多数の再構築の失敗が発生する場合があります。この問題は、20 を超えるノードが設定されている状況で、複数のテーブルスキャン (select *) を並列に実行している場合に発生しています。症状としては、トランザクションが頻繁に中止され、修復またはリカバリの完了に長い時間がかかるため、システムのさまざまな部分で頻繁なタイムアウトが発生していることが考えられます。
この問題を修正するには、Windows レジストリ変数 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters をデフォルトの 100 より大きい値に設定します。この値を 0x1000 (4096) に増やすことをお勧めします。詳細は、Microsoft サポートページの記事 811003 を参照してください。
cookie のパスが「/」と等価であった場合、持続タイプとしてインメモリーレプリケーションを使用する「/」以外のコンテキストルートに配備された高可用性 Web アプリケーションの cookie と干渉し、高可用性 Web アプリケーションが HTTP セッション状態をまったく保持できなくなります。この状況になる可能性のある 1 つの一般的なシナリオは、同じブラウザを使用して「/」に配備されている管理 GUI と高可用性 Web アプリケーションとの両方にアクセスしている場合です。
別のブラウザから「/」に配備されている Web アプリケーションにアクセスします。
SASL32.DLL および ZLIB.DLL は、Windows IIS 6 でロードバランサを使用する際に必要です。これらのファイルが現在 as-install/lib にありません。
2 つの DLL ファイルを手動で as-install/lib にコピーします。これらのファイルは次の場所からダウンロードできます。
http://download.java.net/javaee5/external/OS/aslb/jars/ |
OS は希望するプラットフォームを表し、次の値のいずれかになります。
SunOS
SunOS_X86
Linux
WINNT
大域ゾーンで Enterprise Server を高可用性パッケージとともにインストールまたはアンインストールすると、次の 2 つの問題が起きます。
HA パッケージがすべてのゾーンにインストールされます。これは望ましくありません。
アンインストール時に、HA、MQ、JDK パッケージがすべてのゾーンから削除されます。これも望ましくありません。
ルートローカルゾーンからインストールまたはアンインストールする場合には、この問題は起きません。
グルーバルゾーンではなくローカルルートゾーンからインストールまたはアンインストールを実行します。
「/」に配備された高可用性 Web アプリケーションは、持続タイプとしてインメモリーレプリケーションを使用している場合、HTTP セッションを保持できません。
インメモリーレプリケーションを持続タイプとして使用する高可用性 Web アプリケーションを「/」以外のコンテキストルートに配備します。このような Web アプリケーションを「/」で利用できるようにするには、Web アプリケーションが配備されている仮想サーバーの default-web-module として指定します。
Solaris 上で Apache 用の Enterprise Server ロードバランサをインストール中に、インストーラは apachectl スクリプトの LD_LIBRARY_PATH を更新します。しかし、インストーラは /usr/lib/mps パスを正しく書き込みません。Solaris の場合、LD_LIBRARY_PATH にこのパスがないと、Apache セキュリティーインスタンスは開始しません。
この問題は Solaris プラットフォームでのみ起きます。この問題を回避するために、LD_LIBRARY_PATH に /opt/SUNWappserver/appserver/lib/lbplugin/lib を追加します。
domain.xml に保存されている内容にかかわりなく、「クラスタ/インスタンス」一般情報ページで「ロードバランスの有効化」ボタンが常にオンになっています。
クラスタ化されたインスタンスの場合、「インスタンス」タブを選択し、表のプルダウンから「休止」アクションをクリックします。
スタンドアロンインスタンスの場合、インスタンスが実行中であることを確認してから、インスタンスの「一般」画面で「休止」ボタンをクリックします。
(Solaris のみ) HADB 導入済みの SPARC Solaris 10 に Enterprise Server v2.1.1 をインストール後に、Enterprise Server を開始して JES 5 UR 1 をレジストリサーバーとともにインストールしようとすると、次のエラーを受け取ることがあります。
Dependency Error: Installation can not proceed because the version of HA Session Store 4.4.3 detected on this host is incomplete , and a compatible version is required by Servervice Registry Deployment Support. |
Enterprise Server IFR が Solaris マシンにインストールされた状態で、JES 5 UR1 からレジストリサーバーをインストールすることは不可能です。次の JES5 UR1 配布ディレクトリから、pkgadd コマンドを使用して、手動でレジストリサーバーパッケージをインストールする必要があります。
path/OS/Products/registry-svr/Packages |
「(Internet Explorer 6 および 7 のみ)」ロードバランサ設定ファイル (loadbalancer.xml) を Internet Explorer 6 または 7 からエクスポートしようとすると、sun-loadbalancer_1_2.dtd DTD ファイルが見つからないことを示すエラーメッセージがブラウザに表示されます。
設定ファイルを保存するには、次の回避方法を使用します。
Internet Explorer の「ロードバランサ」ページで、「エクスポート」をクリックします。
「XML page cannot be displayed」メッセージが表示されます。
エラーフレームをクリックしてから、Internet Explorer で「ファイル」->「名前を付けて保存」を選択します。
loadbalancer.xml ファイルを選択したディレクトリに保存します。