Sun GlassFish Communications Server 1.5 高可用性 (HA) 管理ガイド

第 3 章 Communications Server でのクラスタの設定

この章では、Communications Server クラスタの使用法について説明します。次の節で構成されています。

クラスタの概要

クラスタは、同じアプリケーション、リソース、および設定情報を共有するサーバーインスタンスの集まりに名前を付けたものです。異なるマシン上のサーバーインスタンスを 1 つの論理クラスタにまとめ、それらのインスタンスを 1 つの単位として管理できます。マルチマシンクラスタのライフサイクルは、DAS を使用して容易に制御できます。

インスタンスはクラスタにグループ化できます。アプリケーションを単一配備のクラスタのすべてのインスタンスに分散できます。クラスタは動的です。インスタンスが追加または削除されると、変更は自動的に処理されます。

クラスタにより、水平方向のスケーラビリティー、負荷分散、およびフェイルオーバー保護が使用可能になります。定義により、クラスタ内のすべてのインスタンスに対してリソースとアプリケーションの設定は同じになります。あるサーバーインスタンスまたはクラスタ内のあるマシンに障害が起きると、ロードバランサは障害を検出し、障害の起きたインスタンスからクラスタ内のほかのインスタンスにトラフィックをリダイレクトし、ユーザーセッションの状態を回復します。クラスタ内のすべてのインスタンス上には同一のアプリケーションとリソースがあるため、インスタンスはクラスタ内のほかのどのインスタンスにも処理を継続させることができます。

クラスタインスタンスはリングトポロジの形式に構成されています。リング内の各メンバーは、リング内の次のメンバー (レプリカパートナー) にインメモリー状態データを送信し、前のメンバーから状態データを受信します。いずれかのメンバーで状態データが更新されると、リング全体でレプリケートされます。リングトポロジでメンバーに障害が発生すると、リングは切断されます。グループ管理サービス (GMS) で、メンバーの障害を認識できます。その場合、レプリケーションフレームワークはクラスタのトポロジを作り直して、メンバーにその変更を通知します。メンバーはそのレプリカパートナーが消えたことを認識すると、稼働中のメンバーから新しいパートナーを選択します。

グループ管理サービス

グループ管理サービス (GMS) は、クラスタ内のインスタンスに対して有効になっている基盤コンポーネントです。GMS を有効にすると、クラスタインスタンスで障害が発生した場合にクラスタおよびドメイン管理サーバー (DAS) が障害を認識し、障害発生時に必要な処理を実行することができます。Communications Server の多くの機能は、GMS に依存します。たとえば、GMS は IIOP フェイルオーバー、インメモリーレプリケーション、トランザクションサービス、およびタイマーサービスの各機能によって使用されます。

クラスタ内の複数のサーバーインスタンスが異なるマシンに配置されている場合は、それらのマシンが同じサブネット上にあることを確認してください。


注 –

GMS 機能は開発者プロファイルでは利用できません。クラスタプロファイルおよびエンタープライズプロファイルでは、デフォルトで GMS が有効です。


GMS は Shoal フレームワークの中心的なサービスです。Shoal の詳細については、Project Shoal ホームページを参照してください。

Procedureクラスタに対して GMS を有効または無効にする

  1. ツリーコンポーネントで、「クラスタ」を選択します。

  2. クラスタの名前をクリックします。

  3. 「一般情報」で、必要に応じて「ハートビート有効」チェックボックスが選択または選択解除されていることを確認します。

    • GMS を有効にするには、「ハートビート有効」チェックボックスが選択されていることを確認します。

    • GMS を無効にするには、「ハートビート有効」チェックボックスが選択解除されていることを確認します。

  4. GMS を有効にしており、GMS で使用するデフォルトのポートおよび IP アドレスを変更する必要がある場合は、これらの設定値を変更します。

  5. 「保存」をクリックします。

GMS の設定

使用環境に合わせて GMS を設定します。これは、GMS が障害を確認する頻度を決定する設定値を変更することによって行います。たとえば、障害検出試行の間のタイムアウト、障害が疑われるメンバーの再試行の回数、または、クラスタのメンバーを確認するときのタイムアウトを変更できます。

次の例では、get コマンドを使用して、cluster-config-name に関連付けられているすべてのプロパティーを取得します。

asadmin get cluster2-config.group-management-service.*

cluster2-config.group-management-service.fd-protocol-max-tries = 3 cluster2-config.group-management-service.fd-protocol-timeout-in-millis = 2000

cluster2-config.group-management-service.merge-protocol-max-interval-in-millis = 10000

cluster2-config.group-management-service.merge-protocol-min-interval-in-millis = 5000

cluster2-config.group-management-service.ping-protocol-timeout-in-millis = 5000

cluster2-config.group-management-service.vs-protocol-timeout-in-millis = 1500

Procedure管理コンソールを使用して GMS 設定を設定する

  1. 管理コンソール で、Communications Server ノードに移動します。

  2. 「設定」 –> cluster_name -config —> 「グループ管理サービス」の順にクリックします。


例 3–1 asadmin get および set コマンドによる GMS 設定の変更

管理コンソールの代わりに、asadmin get および set コマンドを使用できます。


asadmin> list  cluster2-config.*
cluster2-config.admin-service
cluster2-config.admin-service.das-config
cluster2-config.admin-service.jmx-connector.system
cluster2-config.admin-service.jmx-connector.system.ssl
cluster2-config.availability-service
cluster2-config.availability-service.jms-availability
cluster2-config.availability-service.sip-container-availability
cluster2-config.diagnostic-service
cluster2-config.ejb-container
cluster2-config.ejb-container-availability
cluster2-config.ejb-container.ejb-timer-service
...
...
...
...
cluster2-config.web-container-availability

asadmin> get  cluster2-config.group-management-service.*
cluster2-config.group-management-service.fd-protocol-max-tries = 3
cluster2-config.group-management-service.fd-protocol-timeout-in-millis = 2000
cluster2-config.group-management-service.merge-protocol-max-interval-in-millis = 10000
cluster2-config.group-management-service.merge-protocol-min-interval-in-millis = 5000
cluster2-config.group-management-service.ping-protocol-timeout-in-millis = 5000
cluster2-config.group-management-service.vs-protocol-timeout-in-millis = 1500

asadmin>set  cluster2-config.group-management-service.fd-protocol-max-tries=4
 cluster2-config.group-management-service.fd-protocol-max-tries = 4

asadmin> get  cluster2-config.group-management-service.*
 cluster2-config.group-management-service.fd-protocol-max-tries = 4
cluster2-config.group-management-service.fd-protocol-timeout-in-millis = 2000
cluster2-config.group-management-service.merge-protocol-max-interval-in-millis = 10000
cluster2-config.group-management-service.merge-protocol-min-interval-in-millis = 5000
cluster2-config.group-management-service.ping-protocol-timeout-in-millis = 5000
cluster2-config.group-management-service.vs-protocol-timeout-in-millis = 1500

ロードバランサを作成したときにクラスタがすでに起動している場合、ロードバランサを起動するには、クラスタを再起動する必要があります。


クラスタの操作

Procedureクラスタを作成する

  1. ツリーコンポーネントで、「クラスタ」ノードを選択します。

  2. 「クラスタ」ページで、「新規」をクリックします。

    「クラスタの作成」ページが表示されます。または「新しいクラスタ」ページが表示されます。

  3. 「名前」フィールドで、クラスタの名前を入力します。

    この名前は、次の条件を満たす必要があります。

    • 大文字と小文字、数字、下線、ハイフン、およびピリオド (.) だけで構成される

    • すべてのノードエージェント名、サーバーインスタンス名、クラスタ名、および設定名の間で一意である

    • domain」ではない

  4. 「設定」フィールドで、ドロップダウンリストから設定を選択します。

    • 共用設定を使用しないクラスタを作成するには、default-config を選択します。

      「選択している設定のコピーを作成します」ラジオボタンを選択済みにしておきます。デフォルト設定のコピーは、cluster_name-config という名前になります。

    • 共用設定を使用するクラスタを作成するには、ドロップダウンリストから設定を選択します。

      「選択している設定を参照します」ラジオボタンを選択して、指定した既存の共用設定を使用するクラスタを作成します。

  5. オプションとして、サーバーインスタンスを追加できます。

    クラスタ作成後にサーバーインスタンスを追加することも可能です。

    サーバーインスタンスは複数のマシンに常駐できます。すべてのサーバーインスタンスは、DAS と通信可能なノードエージェントに関連付ける必要があります。クラスタのサーバーインスタンスを作成する前に、まず 1 つまたは複数のノードエージェントまたはノードエージェントのプレースホルダを作成します。「ノードエージェントのプレースホルダを作成する」を参照してください。

    サーバーインスタンスを作成するには、次のようにします。

    1. 「作成するサーバーインスタンス」セクションで、「追加」をクリックします。

    2. 「インスタンス名」フィールドにインスタンスの名前を入力します。

    3. 「ノードエージェント」ドロップダウンリストからノードエージェントを選択します。

  6. 「了解」をクリックします。

  7. 表示される「クラスタを正常に作成」ページで「了解」をクリックします。

同機能を持つ asadmin コマンド

create-cluster

参照

クラスタ、サーバーインスタンス、およびノードエージェントを管理する方法の詳細については、「ノードエージェントの配備」を参照してください。

Procedureクラスタのサーバーインスタンスを作成するには

始める前に

クラスタのサーバーインスタンスを作成する前に、まずノードエージェントまたはノードエージェントのプレースホルダを作成します。「ノードエージェントのプレースホルダを作成する」を参照してください。

  1. ツリーコンポーネントで、「クラスタ」ノードを開きます。

  2. クラスタのノードを選択します。

  3. 「インスタンス」タブをクリックして、「クラスタ化されたサーバーインスタンス」ページを表示します。

  4. 「新規」をクリックして、「クラスタ化されたサーバーインスタンスの作成」ページまたは「新しいクラスタ化されたサーバーインスタンス」ページを表示します。

  5. 「名前」フィールドで、サーバーインスタンスの名前を入力します。

  6. 「ノードエージェント」ドロップダウンリストからノードエージェントを選択します。

  7. 「了解」をクリックします。

同機能を持つ asadmin コマンド

create-instance

参照

Procedureクラスタを設定する

  1. ツリーコンポーネントで、「クラスタ」ノードを開きます。

  2. クラスタのノードを選択します。

    「一般情報」ページで、次のタスクを実行できます。

    • 「クラスタの起動」をクリックして、クラスタ化されたサーバーインスタンスを起動します。

    • 「クラスタの停止」をクリックして、クラスタ化されたサーバーインスタンスを停止します。

    • 「EJB タイマーを移行」をクリックして、停止されたサーバーインスタンスからクラスタ内の別のサーバーインスタンスに EJB タイマーを移行します。

同機能を持つ asadmin コマンド

start-clusterstop-clustermigrate-timers

参照

Procedureクラスタ化されたインスタンスを起動、停止、および削除する

  1. ツリーコンポーネントで、「クラスタ」ノードを開きます。

  2. サーバーインスタンスを含むクラスタのノードを開きます。

  3. 「インスタンス」タブをクリックして、「クラスタ化されたサーバーインスタンス」ページを表示します。

    このページで、次のタスクを実行できます。

    • インスタンスのチェックボックスを選択して「削除」、「起動」、または「停止」をクリックし、指定したすべてのサーバーインスタンスに対して選択したアクションを実行します。

    • インスタンスの名前をクリックして、「一般情報」ページを表示します。

Procedureクラスタ内のサーバーインスタンスを設定するには

  1. ツリーコンポーネントで、「クラスタ」ノードを開きます。

  2. サーバーインスタンスを含むクラスタのノードを開きます。

  3. サーバーインスタンスノードを選択します。

  4. 「一般情報」ページでは、次の操作を行えます。

    • 「インスタンスを起動」をクリックして、インスタンスを起動します。

    • 「インスタンスの停止」をクリックして、実行するインスタンスを停止します。

    • 「JNDI ブラウズ」をクリックして、実行中のインスタンスの JNDI ツリーをブラウズします。

    • 「ログファイルを表示」をクリックして、サーバーのログビューアを開きます。

    • 「ログをローテーション」をクリックして、インスタンスのログファイルをローテーションします。このアクションは、ログファイルのローテーションをスケジュールします。実際のローテーションは、次にログファイルがエントリに書き込まれたときに行われます。

    • 「トランザクションの回復」をクリックして、未完了のトランザクションを回復します。

    • 「プロパティー」タブをクリックして、インスタンスのポート番号を変更します。

    • 「監視」タブをクリックして、監視プロパティーを変更します。

参照

Procedureクラスタ用のアプリケーションを設定する

  1. ツリーコンポーネントで、「クラスタ」ノードを開きます。

  2. クラスタのノードを選択します。

  3. 「アプリケーション」タブをクリックして、「アプリケーション」ページを表示します。

    このページで、次のタスクを実行できます。

    • 「配備」ドロップダウンリストから、配備するアプリケーションのタイプを選択します。表示される「配備」ページで、アプリケーションを指定します。

    • 「フィルタ」ドロップダウンリストから、リストに表示するアプリケーションのタイプを選択します。

    • アプリケーションを編集するには、アプリケーション名をクリックします。

    • アプリケーションの横にあるチェックボックスを選択して、「有効」または「無効」を選択し、クラスタのアプリケーションを有効または無効にします。

参照

Procedureクラスタ用のリソースを設定する

  1. ツリーコンポーネントで、「クラスタ」ノードを開きます。

  2. クラスタのノードを選択します。

  3. 「リソース」タブをクリックして、「リソース」ページを表示します。

    このページで、次のタスクを実行できます。

    • クラスタ用の新規リソースを作成します。「新規」ドロップダウンリストから、作成するリソースのタイプを選択します。リソースを作成するときには、必ずクラスタをターゲットとして指定します。

    • リソースをグローバルに有効または無効にします。 リソースの横にあるチェックボックスを選択して、「有効」または「無効」をクリックします。このアクションはリソースを削除しません。

    • 特定のタイプのリソースのみを表示します。 「フィルタ」ドロップダウンリストから、リストに表示するリソースのタイプを選択します。

    • リソースを編集します。 リソース名をクリックします。

参照

Procedureクラスタを削除する

  1. ツリーコンポーネントで、「クラスタ」ノードを選択します。

  2. 「クラスタ」ページで、クラスタ名の横にあるチェックボックスを選択します。

  3. 「削除」をクリックします。

同機能を持つ asadmin コマンド

delete-cluster

参照

ProcedureEJB タイマーを移行する

サーバーインスタンスが異常に、または突然実行を停止した場合、そのサーバーインスタンス上にインストールされた EJB タイマーを、クラスタ内の実行中サーバーインスタンスに移動する必要があります。このためには、次の手順を実行します。

  1. ツリーコンポーネントで、「クラスタ」ノードを開きます。

  2. クラスタのノードを選択します。

  3. 「一般情報」ページで、「EJB タイマーを移行」をクリックします。

  4. 「EJB タイマーを移行」ページで、次の操作を行います。

    1. 「ソース」ドロップダウンリストから、タイマーの移行元である停止されたサーバーインスタンスを選択します。

    2. (省略可能) 「送信先」ドロップダウンリストから、タイマーを移行する先の実行中サーバーインスタンスを選択します。

      このフィールドを空のままにした場合、実行中のサーバーインスタンスがランダムに選択されます。

    3. 「了解」をクリックします。

  5. 送信先サーバーインスタンスを停止して再起動します。

    ソースサーバーインスタンスが実行中の場合、または送信先サーバーインスタンスが停止中の場合は、管理コンソールにエラーメッセージが表示されます。

同機能を持つ asadmin コマンド

migrate-timers

参照