14.3. コンテナーレベルのロック
概要
コンテナーレベルのロッキングによって、より高速なフェイルオーバーのパフォーマンスを提供するためにバンドルをセカンダリーカーネルインスタンスに事前ロードできます。コンテナーレベルのロックは、単純なファイルと JDBC の両方のロックメカニズムでサポートされています。
コンテナーレベルのロックの設定
コンテナーレベルのロッキングを実装するには、プライマリー/セカンダリー設定の各システムの etc/system.properties
ファイルに以下を追加します。
例14.7 コンテナーレベルのロック設定
karaf.lock=true karaf.lock.level=50 karaf.lock.delay=10000
karaf.lock.level
プロパティーでは、Red Hat Fuse インスタンスが OSGi コンテナーを起動するために起動プロセスをどこまで実行するかを示します。同等かそれ以下の開始レベルが割り当てられたバンドルも、その Fuse インスタンスで開始されます。
バンドルの開始レベルは、BundleName.jar=level
形式で、etc/startup.properties
に指定されます。コアシステムバンドルのレベルは 50 未満ですが、ユーザーバンドルのレベルは 50 を超えています。
開始レベル | 動作 |
---|---|
1 | コールドスタンバイインスタンス。コアバンドルはコンテナーにロードされません。セカンダリーインスタンスは、ロックが取得されるまで待ち、サーバーを開始します。 |
<50 | ホットスタンバイインスタンス。コアバンドルがコンテナーにロードされます。セカンダリーインスタンスは、ロックが取得されるまで待ち、ユーザーレベルバンドルを開始します。コンソールは、このレベルで各セカンダリーインスタンスに対してアクセス可能です。 |
>50 | ユーザーバンドルが開始されるため、この設定はお勧めしません。 |
ポートの競合回避
同じホストでホットスペアを使用する場合は、JMX リモートポートを一意の値に設定してバインドの競合を回避する必要があります。fuse
起動スクリプト (または子インスタンス上の karaf
スクリプト) を編集して、以下が含まれるようにすることができます。
DEFAULT_JAVA_OPTS="-server $DEFAULT_JAVA_OPTS -Dcom.sun.management.jmxremote.port=1100 -Dcom.sun.management.jmxremote.authenticate=false"