• 検索結果がありません。

HA シングルトンデプロイメント

第 6 章 WEB アプリケーションのクラスター化

6.5. HA シングルトンデプロイメント

4. ServiceActivator クラスの名前 (例:

org.jboss.as.quickstarts.ha.singleton.service.SingletonServiceActivator) が含まれ る、org.jboss.msc.service.ServiceActivator という名前のファイルを META-INF/services/

ディレクトリーに作成します。

完全な作業例は、JBoss EAP に同梱される ha-singleton-service クイックスタートを参照してくださ い。このクイックスタートには、バックアップサービスでインストールされるシングルトンサービスを 実証する 2 つ目の例も含まれています。バックアップサービスは、シングルトンサービスの実行用に選 択されていないすべてのノード上で実行されます。また、このクイックスタートは異なる選択ポリシー の設定方法についても実証します。

Maven WAR プラグインがすでに存在する場合、プラグインを META-INF ディレクトリー (**/src/main/webapp/META-INF) に移行できます。

手順 手順

アプリケーションが EAR ファイルにデプロイされている場合は、jboss-all.xml ファイル内に ある singleton-deployment.xml 記述子または singleton- deployment 要素を META-INF ディ レクトリーの最上位に移動します。

:

シングルトンデプロイメント記述子 シングルトンデプロイメント記述子

アプリケーションデプロイメントを WAR ファイルまたは JAR ファイルとして追加するに は、singleton-deployment.xml 記述子をアプリケーションアーカイブの /META-INF ディレク トリーの最上位に移動します。

:

特定のシングルトンポリシーを使用したシングルトンデプロイメント記述子 特定のシングルトンポリシーを使用したシングルトンデプロイメント記述子

オプション: jboss-all.xml ファイルで singleton-deployment を定義するには、jboss-all.xml 記述子をアプリケーションアーカイブの /META-INF ディレクトリーの最上位に移動します。

: jboss-all.xml

での での

singleton-deployment

の定義 の定義

オプション: singleton ポリシーを使用して jboss-all.xml ファイルで singleton-deployment を 定義します。jboss-all.xml 記述子をアプリケーションアーカイブの /META-INF ディレクト リーの最上位に移動します。

:

特定のシングルトンポリシーを使用した 特定のシングルトンポリシーを使用した

jboss-all.xml

での での

singleton-deployment

の の 定義

定義

シングルトンデプロイメントの作成 シングルトンデプロイメントの作成

JBoss EAP は、以下の 2 つの選択ポリシーを提供します。

単純な選択ポリシー

simple-election-policy は position 属性で示された特定のメンバーを選択します (該当するア プリケーションがデプロイされます)。position 属性は、降順の経過時間でソートされた候補の リストから選択するノードのインデックスを決定します (0 は最も古いノード、1 は 2 番目に古

<?xml version="1.0" encoding="UTF-8"?>

<singleton-deployment xmlns="urn:jboss:singleton-deployment:1.0"/>

<?xml version="1.0" encoding="UTF-8"?>

<singleton-deployment policy="my-new-policy" xmlns="urn:jboss:singleton-deployment:1.0"/>

<?xml version="1.0" encoding="UTF-8"?>

<jboss xmlns="urn:jboss:1.0">

<singleton-deployment xmlns="urn:jboss:singleton-deployment:1.0"/>

</jboss>

<?xml version="1.0" encoding="UTF-8"?>

<jboss xmlns="urn:jboss:1.0">

<singleton-deployment policy="my-new-policy" xmlns="urn:jboss:singleton-deployment:1.0"/>

</jboss>

いノード、-1 は最も新しいノード、-2 は 2 番目に新しいノードを示します)。指定された位置 が候補の数を超えると、モジュロ演算が適用されます。

:

管理 管理

CLI

を使用して を使用して

simple-election-policy

で新しいシングルトンポリシーを作成 で新しいシングルトンポリシーを作成 し、位置を

し、位置を

-1

に設定 に設定

batch

/subsystem=singleton/singleton-policy=my-new-policy:add(cache-container=server)

/subsystem=singleton/singleton-policy=my-new-policy/election-policy=simple:add(position=-1) run-batch

注記 注記

新しく作成されたポリシー my-new-policy をデフォルトとして設定するには、

以下のコマンドを実行します。

/subsystem=singleton:write-attribute(name=default, value=my-new-policy)

: standalone-ha.xml

で位置を で位置を

-1

として として

simple-election-policy

を設定 を設定

ランダムな選択ポリシー

random-election-policy は、該当するアプリケーションがデプロイされるランダムなメンバー を選択します。

:

管理 管理

CLI

を使用して を使用して

random-election-policy

で新しいシングルトンポリシーを作成 で新しいシングルトンポリシーを作成

batch

/subsystem=singleton/singleton-policy=my-other-new-policy:add(cache-container=server) /subsystem=singleton/singleton-policy=my-other-new-policy/election-policy=random:add() run-batch

: standalone-ha.xml

を使用した を使用した

random-election-policy

の設定 の設定

注記 注記

<subsystem xmlns="urn:jboss:domain:singleton:1.0">

<singleton-policies default="my-new-policy">

<singleton-policy name="my-new-policy" cache-container="server">

<simple-election-policy position="-1"/>

</singleton-policy>

</singleton-policies>

</subsystem>

<subsystem xmlns="urn:jboss:domain:singleton:1.0">

<singleton-policies default="my-other-new-policy">

<singleton-policy name="my-other-new-policy" cache-container="server">

<random-election-policy/>

</singleton-policy>

</singleton-policies>

</subsystem>

注記 注記

ポリシーを追加する前に、cache-container の default-cache 属性を定義する必 要があります。定義しないと、カスタムキャッシュコンテナーを使用する場合 に、エラーメッセージが表示されることがあります。

設定 設定

また、シングルトン選択ポリシーを使用して、クラスターの 1 つ以上のメンバーの優先順位を指定する こともできます。優先順位は、ノード名またはアウトバウンドソケットバインド名を使用して定義でき ます。ノードの優先順位は、常に選択ポリシーの結果よりも優先されます。

:

管理 管理

CLI

を使用した既存のシングルトンポリシーの優先順位の指定 を使用した既存のシングルトンポリシーの優先順位の指定

/subsystem=singleton/singleton-policy=foo/election-policy=simple:list-add(name=name-preferences, value=nodeA)

/subsystem=singleton/singleton-policy=bar/election-policy=random:list-add(name=socket-binding-preferences, value=binding1)

:

管理 管理

CLI

を使用して を使用して

simple-election-policy

および および

name-preferences

で新しいシングルトン で新しいシングルトン ポリシーを設定

ポリシーを設定

batch

/subsystem=singleton/singleton-policy=my-new-policy:add(cache-container=server)

/subsystem=singleton/singleton-policy=my-new-policy/election-policy=simple:add(name-preferences=

[node1, node2, node3, node4]) run-batch

注記 注記

新しく作成されたポリシー my-new-policy をデフォルトとして設定するには、以下のコ マンドを実行します。

/subsystem=singleton:write-attribute(name=default, value=my-new-policy)

: standalone-ha.xml

を使用した を使用した

socket-binding-preferences

での での

random-election-policy

の設 の設 定

クォーラムの定義 クォーラムの定義

ネットワークパーティションは、シングルトンデプロイメントに対して特に問題となります。これは、

同時に実行する同じデプロイメントに対して複数のシングルトンプロバイダーをトリガーできるためで

<subsystem xmlns="urn:jboss:domain:singleton:1.0">

<singleton-policies default="my-other-new-policy">

<singleton-policy name="my-other-new-policy" cache-container="server">

<random-election-policy>

<socket-binding-preferences>binding1 binding2 binding3 binding4</socket-binding-preferences>

</random-election-policy>

</singleton-policy>

</singleton-policies>

</subsystem>

す。このような状況を回避するために、シングルトンポリシーはシングルトンプロバイダーの選択が行 われる前に、最小数のノードが存在することを必要とするクォーラムを定義できます。典型的なデプロ イメントでは、N/2 + 1 をクォーラムとして使用します (ここで、N は予想されるクラスターサイズで す)。この値は実行時に更新でき、対応するシングルトンポリシーを使用するすべてのシングルトン サービスに即時反映されます。

: standalone-ha.xml

ファイルでのクォーラム宣言 ファイルでのクォーラム宣言

:

管理 管理

CLI

を使用したクォーラム宣言 を使用したクォーラム宣言

/subsystem=singleton/singleton-policy=foo:write-attribute(name=quorum, value=3)

シングルトンデプロイメントを使用したクラスター全体のシングルトンとしてアプリケーションにパッ ケージ化されたサービスの完全な作業例は、JBoss EAP に同梱される ha-singleton-deployment ク イックスタートを参照してください。

CLI を使用したプライマリーシングルトンサービスプロバイダーの決定を使用したプライマリーシングルトンサービスプロバイダーの決定

singleton サブシステムは、特定のシングルトンポリシーから作成された各シングルトンデプロイメン

トまたはサービスのランタイムリソースを公開します。これは、CLI を使用したプライマリーシングル トンプロバイダーの判断に役立ちます。

現在シングルトンプロバイダーとして動作するクラスターメンバーの名前を表示できます。例を以下に 示します。

/subsystem=singleton/singleton-policy=default/deployment=singleton.jar:read-attribute(name=primary-provider)

{

"outcome" => "success", "result" => "node1"

}

また、シングルトンデプロイメントまたはサービスがインストールされているノードの名前を表示する こともできます。例を以下に示します。

/subsystem=singleton/singleton-policy=default/deployment=singleton.jar:read-attribute(name=providers)

{

"outcome" => "success", "result" => [

"node1", "node2"

] }