WebLogic Server クラスタ ユーザーズ ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

移行

以下の節では、WebLogic Server でサポートされているさまざまな移行メカニズムについて説明します。

これらの節では、障害が発生したサーバ インスタンスやサービスの移行について重点的に説明します。WebLogic Server では、アプリケーションレベルでのレプリケーションやフェイルオーバもサポートされています。詳細については、「クラスタのフェイルオーバとレプリケーション」を参照してください。

 


サーバおよびサービスの移行について

注意 : サーバの移行は、どのプラットフォームでもサポートされていません。詳細については、『WebLogic Platform 9.2 でサポート対象のコンフィグレーション』の「サーバの移行のサポート」を参照してください。

WebLogic Server クラスタでは、ほとんどのサービスがクラスタ内のすべてのサーバ インスタンスに均一にデプロイされます。これにより、サーバ間の透過的なフェイルオーバが可能になります。対照的に、JMS や JTA トランザクション回復システムなどの「固定サービス」はクラスタ内の個々のサーバ インスタンスを対象にします。こうしたサービスのために、WebLogic Server では、フェイルオーバではなく移行を使用する障害からの回復がサポートされています。

WebLogic Server での「移行」とは、クラスタ化された WebLogic Server インスタンスやクラスタ化されたインスタンスで実行されているコンポーネントを、障害が発生したときに別の場所に移動するプロセスです。サーバの移行の場合は、障害が発生すると、サーバ インスタンスが物理的に別のマシンに移行されます。サービスレベルの移行の場合は、サービスをクラスタ内の別のサーバ インスタンスに移動します。

WebLogic Server には、JMS や JTA トランザクション システムの可用性を高めるための機能 (「移行可能なサーバ」) が用意されています。移行可能なサーバは、サービスレベルではなく、サーバレベルで自動または手動で移行できます。

注意 : サーバレベルの移行は、サービスレベルの移行に取って代わるものです。サービスレベルの移行とサーバレベルの移行は、組み合わせて使用することを目的としたものではありません。クラスタ内で個々のサービスを移行する場合は、サーバ インスタンス全体を移行しないようにしてください。
注意 : サーバの移行は、SSH バージョンのノード マネージャを使用する場合にのみサポートされます。サーバの移行は Windows ではサポートされていません。

移行可能なサーバが何らかの理由 (ハング、ネットワーク接続の消失、ホスト マシンの障害など) で使用できなくなると、自動的に移行が行われます。障害が発生した場合、移行可能なサーバは、可能であれば同じマシン上で自動的に再起動されます。障害が発生した同じマシン上で再起動できないときは、別のマシンに移行されます。また、管理者は手動でサーバ インスタンスの移行を開始することもできます。

 


移行関連の用語

サービスおよびサーバの移行では、以下の用語を使用します。

 


リース

リースは、クラスタの複数のメンバーで同時に実行することができないサービスを管理するために使用するプロセスです。リースによって、クラスタワイド エンティティの排他的な所有権を確保できます。リースのオーナーは、クラスタ内に 1 つしか存在しません。また、サーバやクラスタの障害時には、リースをフェイルオーバさせることができます。これにより、シングル ポイント障害を回避できます。

リースを使用する機能

リースは、以下の WebLogic サーバ機能で使用します。

注意 : 基本的なコンフィグレーションだけでなく、リース機能のほとんどは WebLogic Server 内部で処理されます。

リースの種類

WebLogic Server では、2 種類のリース機能を実装できます。どちらを使用するかは、そのときどきの要件や環境によって決まります。

注意 : 1 つの WebLogic Server インストールでは、1 種類のリースしか使用できません。1 つの環境において、リースを使用する複数の機能を実装することは可能ですが、各機能には同じ種類のリースを使用する必要があります。

高可用性データベース リース

このタイプのリースでは、リース情報を可用性の高いテーブル内に保持します。リース情報を常に利用できるようにするため、可用性の高いデータベースが必要になります。リース情報にアクセスするため、クラスタの各メンバーからデータベースに接続できなければなりません。

このリース方法は、クラスタ化された環境にすでに高可用性データベースが存在する場合に便利です。この方法を使用すると、ノード マネージャを使用して環境内のサーバを管理していなくてもリース機能を利用できます。

注意 : クラスタ内でジョブ スケジューラをコンフィグレーションしている場合、データベースがリース用にコンフィグレーションされていないと、ジョブ スケジューラは機能しません。

以下では、リース用のデータベースをコンフィグレーションするために必要な手順の概略を示します。

  1. サーバの移行用にデータベースをコンフィグレーションします。この情報は、サーバが実行されているかどうかや、サーバを移行する必要があるかどうかを判別するために使用します。リースの詳細については、「リース」を参照してください。
  2. データベースは信頼性のあるものでなければなりません。サーバ インスタンスの信頼性は、このデータベースの信頼性で決まります。実験的な目的で使用する場合は、通常のデータベースで十分です。プロダクション環境で使用する場合は、高可用性データベースしかお勧めできません。データベースが停止すると、すべての移行可能なサーバが停止します。

    データベース内にリース テーブルを作成します。このテーブルは、サーバの移行を可能にするためのマシンとサーバの関連付けの格納に使用されます。このテーブルのスキーマは、次の場所にあります。

    <WEBLOGIC_HOME>/server/db/<dbname>/leasing.ddl

    dbname はデータベース ベンダの名前です。

    注意 : リース テーブルは高可用性データベースに格納する必要があります。移行可能なサーバの信頼性は、リース テーブルの格納に使用されるデータベースの信頼性で決まります。
  3. データ ソースを設定し、コンフィグレーションします。このデータ ソースは、前の手順でコンフィグレーションしたデータベースを指している必要があります。
  4. 注意 : サーバの移行では、XA データ ソースはサポートされていません。

    JDBC データ ソースの作成の詳細については、『WebLogic JDBC のコンフィグレーションと管理』の「JDBC データ ソースのコンフィグレーション」を参照してください。

非データベース リース

非データベース リースでは、リース情報がメモリ内に保持されます。そのため、リースを必要とする機能を使用するだけのために、高可用性データベースを用意する必要はありません。

クラスタのいずれか 1 つのメンバーをクラスタ リーダーとし、このメンバーにリース情報を保持する役割を付与します。クラスタ リーダーは、起動後の経過時間の長さに基づいて選択されます。クラスタ内の管理対象サーバのうち、起動後の経過時間が最も長いものがクラスタ リーダーとなります。その他のクラスタ メンバーは、クラスタ リーダーと通信してリース情報を識別します。フェイルオーバを可能にするため、リース テーブルはクラスタの他のノードにレプリケートされます。

注意 : このリース方法では、ノード マネージャを使用してクラスタ内のサーバを管理する必要があります。ノード マネージャは、クラスタ内の管理対象サーバをホストするすべてのマシンで実行する必要があります。詳細については、「ノード マネージャを使用したサーバの制御」を参照してください。

 


サーバの自動移行

注意 : サーバの移行は、どのプラットフォームでもサポートされていません。詳細については、『WebLogic Platform 9.2 でサポート対象のコンフィグレーション』の「サーバの移行のサポート」を参照してください。

この節では、サーバの移行をコンフィグレーションする手順の概略を示し、WebLogic Server 環境内でサーバ移行機能をどのように使用するかについて説明します。

以下の内容について説明します。

サーバの自動移行の準備

サーバの移行をコンフィグレーションする前に、以下の要件について確認します。

サーバの自動移行のコンフィグレーション

サーバの移行をコンフィグレーションする前に、お使いの環境が「サーバの自動移行の準備」で説明されている要件を満たしていることを確認してください。

クラスタ内の管理対象サーバに対してサーバの移行をコンフィグレーションするには、以下のタスクを行います。

  1. 移行を有効にする各管理対象サーバの浮動 IP アドレスを取得します。
  2. 移行可能なサーバには、それぞれ浮動 IP アドレスを割り当てる必要があります。この IP アドレスは、物理的なマシンが変わってもサーバを追跡します。浮動 IP アドレスが割り当てられるすべてのサーバで、AutoMigrationEnabled を true に設定する必要もあります。

    注意 : 移行可能な IP アドレスは、移行可能なサーバが起動されるまではどの候補マシンのインタフェースでも提示されないようにします。
  3. ノード マネージャをコンフィグレーションする. ノード マネージャは実行中でなければなりません。また、サーバの移行を許可するようにコンフィグレーションされている必要があります。
  4. 注意 : サーバの移行は、SSH バージョンのノード マネージャを使用する場合にのみサポートされます。

    サーバの移行でのノード マネージャの使用に関する全般的な情報については、「サーバの移行におけるノード マネージャの役割」を参照してください。ノード マネージャのコンフィグレーションに関する全般的な情報については、「ノード マネージャを使用したサーバの制御」を参照してください。

  5. データベースを使用してリース情報を管理する場合は、「高可用性データベース リース」の手順に従って、サーバの移行に使用するデータベースをコンフィグレーションします。
  6. リースの全般的な情報については、「リース」を参照してください。

  7. データベースを使用してリース情報を格納する場合は、「高可用性データベース リース」の手順に従って、データ ソースを設定してコンフィグレーションします。
  8. 各クラスタのコンフィグレーションで、DataSourceForAutomaticMigration をこのデータ ソースに設定してください。

    注意 : サーバの移行では、XA データ ソースはサポートされていません。

    JDBC データ ソースの作成の詳細については、『WebLogic JDBC のコンフィグレーションと管理』の「JDBC データ ソースのコンフィグレーション」を参照してください。

  9. ifconfig が適切なパーミッションを持つように wlsifconfig.sh スクリプトがコンフィグレーションされていることを確認してください。
  10. このスクリプトは、移行時にマシン間での IP アドレスの転送に使用され、ifconfig を実行可能である必要があります。sudo を使用してこのスクリプトを呼び出している場合、スクリプトを手動で編集する必要はありません。

    このスクリプトは、$BEA_HOME/weblogic92/common/bin ディレクトリにあります。

  11. wlsifconfig.shwlscontrol.sh、および nodemanager.domains が、使用するマシンの PATH に含まれていることを確認してください。
    .sh ファイルは $BEA_HOME/weblogic92/common/bin にあり、nodemanager.domains$BEA_HOME/weblogic92/common/nodemanager にあります。
  12. これらのスクリプトの最初の行は、使用するデフォルトのシェルに応じて編集する必要があります。

  13. 移行可能なサーバをホストするマシンは相互に信頼していなければなりません。移行が行われるためには、ユーザ名とパスワードを明示的に入力する必要なしに、マシン B から「ssh/rsh machine_A」を使用して (同様にマシン A から「ssh/rsh machine_B」を使用して) シェル プロンプトにアクセスできる必要があります。また、各マシンは SSH を使用して同じ方法で自身に接続できなければなりません。
  14. 注意 : シェルが対話型である場合は、ログイン スクリプト (.cshrc、.profile、.login など) がシェル プロファイルからのメッセージのみをエコーすることを確認してください。WebLogic Server は、ssh コマンドを使用してログインし、server.state ファイルの内容をエコーします。この出力の最初の行だけがサーバの状態の判別に使用されます。
  15. サーバの移行用の候補マシンを設定します。サーバごとに異なる候補マシンのセットを設定することもできますし、すべてのサーバに同じセットを設定することもできます。
  16. wlscontrol.sh を編集し、Interface 変数に、使用しているネットワーク インタフェースの名前を設定します。
  17. 管理サーバを再起動します。

ステート データ用高可用性ストレージの使用

サーバの移行プロセスでは、サービスは移行されますが、障害の発生時に進行中だった作業に関連付けられたステート情報は移行されません。

高可用性を確保するには、こうした情報を移行後にサーバ インスタンスやそれがホストするサービスで使用できるようにすることが重要です。そうしないと、障害の発生時に進行中だった作業に関するデータが失われてしまうおそれがあります。移行可能なサーバによって保持されるステート情報 (トランザクション ログに格納されるデータなど) は、移行可能なサーバで障害が発生した場合にその移行先となる可能性のあるすべてのマシンからアクセスできる共有ストレージ システムに格納する必要があります。高い信頼性を実現するために、ストレージ エリア ネットワーク (SAN) などの、高可用性の備わっている共有ストレージ ソリューションを使用してください。

さらに、データベースを使用してリース情報を格納する場合は、移行可能なサーバの状態とそれらが使用可能かどうかの追跡に使用されるリース テーブル (以下の節を参照) も高可用性データベースに格納する必要があります。詳細については、「リース」を参照してください。

サーバの移行プロセスと通信

以下の節では、移行可能なサーバを含むクラスタにおける主要なプロセスについて説明します。

移行可能なサーバのあるクラスタの起動プロセス

図 7-1 に、移行可能なサーバを含むクラスタの起動時に発生するプロセスと通信を示します。

例のクラスタには 2 つの管理対象サーバが含まれており、それらは両方とも移行可能です。管理サーバと 2 つの管理対象サーバは、それぞれ別々のマシンで実行されています。4 つ目のマシンは、いずれかの移行可能なサーバで障害が発生した場合にバックアップとして使用できます。バックアップ マシンと移行可能なサーバが実行されている各マシンでは、ノード マネージャが実行されています。

図 7-1 移行可能なサーバのあるクラスタの起動

移行可能なサーバのあるクラスタの起動

以下は、図 7-1 に示されている、クラスタの起動時に発生する主要な手順です。

  1. 管理者がクラスタを起動します。
  2. 管理サーバが、管理対象サーバ 1 を起動するためにマシン B 上のノード マネージャを呼び出し、管理対象サーバ 2 を起動するためにマシン C 上のノード マネージャを呼び出します。「サーバの移行における管理サーバの役割」を参照してください。
  3. 各マシン上のノード マネージャが、そこで実行される管理対象サーバを起動します。「サーバの移行におけるノード マネージャの役割」を参照してください。
  4. 管理対象サーバ 1 および 2 が、管理サーバにアクセスしてそれぞれのコンフィグレーションを取得します。「クラスタでの移行可能なサーバの動作」を参照してください。
  5. 管理対象サーバ 1 および 2 が、起動時のコンフィグレーションをキャッシュします。
  6. 管理対象サーバ 1 および 2 がそれぞれ、移行可能なサーバのリースをリース テーブルから取得します。管理対象サーバ 1 がまず起動するので、管理対象サーバ 1 はクラスタ マスターのリースも取得します。「サーバの移行におけるクラスタ マスターの役割」を参照してください。
  7. 管理対象サーバ 1 および 2 が、リース テーブルの各自のリースを定期的に更新し、自身の状態と自身が使用可能であることを示します。

自動移行のプロセス

図 7-2 に、管理対象サーバ 2 をホストしているマシンで障害が発生した後の自動移行のプロセスを示します。

図 7-2 障害が発生したサーバの自動移行

障害が発生したサーバの自動移行

  1. 管理対象サーバ 2 をホストしているマシン C で障害が発生します。
  2. 次回の定期的なリース テーブルの確認時に、クラスタ マスターが管理対象サーバ 2 のリースが期限切れになっていることを検出します。「サーバの移行におけるクラスタ マスターの役割」を参照してください。
  3. クラスタ マスターが、管理対象サーバ 2 を再起動するためにマシン C 上のノード マネージャにアクセスしようとしますが、マシン C はアクセスできなくなっているためアクセスは失敗します。
  4. 注意 : サーバのハングが原因で管理対象サーバ 2 のリースが期限切れになっていて、マシン C にはアクセスできる場合、クラスタ マスターはノード マネージャを使用してマシン C 上の管理対象サーバ 2 を再起動します。
  5. クラスタ マスターが、マシン D 上のノード マネージャにアクセスします。マシン D はクラスタ内の移行可能なサーバのホストとして使用できるようにコンフィグレーションされています。
  6. マシン D 上のノード マネージャが管理対象サーバ 2 を起動します。「サーバの移行におけるノード マネージャの役割」を参照してください。
  7. 管理対象サーバ 2 が起動し、管理サーバにアクセスして自身のコンフィグレーションを取得します。
  8. 管理対象サーバ 2 が、起動時のコンフィグレーションをキャッシュします。
  9. 管理対象サーバ 2 が、移行可能なサーバのリースを取得します。

移行する管理対象サーバのクライアントでは、移行中にサービスの短い中断が発生するおそれがあります。その場合、再接続が必要になることもあります。Solaris および Linux オペレーティング システムでは、ifconfig コマンドを使用して再接続を行うことができます。移行されたサーバのクライアントは、サーバの移行先の特定のマシンを認識する必要はありません。

移行されたサーバ インスタンスを移行前にホストしていたマシンが再び使用可能になった場合、移行プロセスの逆戻し (サーバ インスタンスを元のホスト マシンに移行して戻すこと) を行うことができます。これを、フェイルバックと呼びます。WebLogic Server ではフェイルバックのプロセスは自動化されていません。管理者は、サーバ インスタンスを元のホストに手動で戻すことでフェイルバックを実行できます。

サーバを元のホストに復元するおおまかな手順は次のとおりです。

細かな手順は、サーバおよびネットワーク環境によって異なります。

手動移行のプロセス

図 7-3 に、管理者が移行可能なサーバを手動で移行するときに発生するプロセスと通信を示します。

図 7-3 サーバの手動移行

サーバの手動移行

  1. 管理者が Administration Console を使用して、マシン C からマシン B への管理対象サーバ 2 の移行を開始します。
  2. 管理サーバがマシン C 上のノード マネージャにアクセスします。「サーバの移行における管理サーバの役割」を参照してください。
  3. マシン C 上のノード マネージャが、管理対象サーバ 2 を停止します。
  4. 管理対象サーバ 2 がリース テーブルから自身の行を削除します。
  5. 管理サーバがマシン B 上のノード マネージャを呼び出します。
  6. マシン B 上のノード マネージャが、管理対象サーバ 2 を起動します。
  7. 管理対象サーバ 2 が管理サーバから自身のコンフィグレーションを取得します。
  8. 管理対象サーバ 2 が、起動時のコンフィグレーションをキャッシュします。
  9. 管理対象サーバ 2 がリース テーブルに行を追加します。

サーバの移行における管理サーバの役割

以下に、移行可能なサーバを含むクラスタでの管理サーバの動作を示します。

さらに管理サーバには、管理者によって発行されたコンフィグレーションの更新の保持、ドメインの実行時情報の表示などの、ドメイン内の移行可能なサーバも含めた通常のドメイン管理機能があります。

クラスタでの移行可能なサーバの動作

移行可能なサーバとは、移行可能としてコンフィグレーションされている、クラスタ化された管理対象サーバのことです。以下に、移行可能なサーバの主要な動作を示します。

サーバの移行におけるノード マネージャの役割

ノード マネージャの使用は、サーバの移行に不可欠です。ホストとなる (またはホストとなる予定の) 各マシン上で実行されなければなりません。

ノード マネージャは、以下のようにサーバの移行を支援します。

サーバの移行におけるクラスタ マスターの役割

移行可能なサーバを含むクラスタでは、1 つのサーバ インスタンスがクラスタ マスターとして機能します。クラスタ マスターは、サーバの移行プロセスを調整する役割を担います。クラスタ内のどのサーバ インスタンスもクラスタ マスターになることができます。移行可能なサーバを含むクラスタの起動時に、クラスタに参加した最初のサーバがクラスタ マスターになり、クラスタ マネージャ サービスを起動します。クラスタに移行可能なサーバが 1 つも含まれない場合はクラスタ マスターは不要です。クラスタ マスター サービスは起動されません。クラスタ マスターが存在しなくても、移行可能なサーバは動作を継続できますが、サーバの移行はできません。以下に、クラスタ マスターの主要な機能を示します。

 


JMS および JTA サービスの移行

WebLogic Server では、JMS サーバおよび JTA トランザクション回復サービスのサービスレベルの移行がサポートされています。これらのサービスは、クラスタ内のあるサーバから別のサーバに移すことができるため「移行可能サービス」と呼ばれます。

注意 : JMS については、単一の分散送り先セットの一部として複数の物理送り先 (キューとトピック) をコンフィグレーションできるため、単独の WebLogic Server で障害が発生した場合のサービスの継続可能性も改善されています。

WebLogic Server では、サーバレベルの移行、つまり、サーバ インスタンスのそのまま全部の移行もサポートされています。また、サーバ インスタンスがホストするすべてのサービスを自動または手動で別のマシンに移行できます。この機能については、「サーバおよびサービスの移行について」を参照してください。

注意 : データベースを使用してリース情報を保持する場合は、リース テーブルを高可用性データベースに格納する必要があります。移行可能なサーバの信頼性は、リース テーブルの格納に使用されるデータベースの信頼性で決まります。詳細については、「リース」を参照してください。

WebLogic Server クラスタでは、ほとんどのサービスがクラスタ内のすべてのサーバ インスタンスに均一にデプロイされます。これにより、サーバ間の透過的なフェイルオーバが可能になります。対照的に、JMS や JTA トランザクション回復システムなどのシングルトン サービスは常にクラスタ内の 1 つのサーバのみで実行されます。

WebLogic Server では、管理者はシングルトン サービスをクラスタ内のサーバ間で移行できます。これは、サーバの障害への対応として、あるいは定期的な保守の一環として行います。この機能により、ホストのサーバで障害が発生した場合に冗長サーバ上でサービスを速やかに再開できるため、クラスタ内のシングルトン サービスの可用性が向上します。

JMS および JTA の移行の仕組み

クライアントは、移行対応の RMI スタブを使用してクラスタ内の移行可能サービスにアクセスします。RMI スタブは、各時点でどのサーバが固定サービスのホストとなっているかを追跡し、それに従ってクライアントからのリクエストを転送します。たとえば、クライアントが最初に固定サービスにアクセスしたとき、スタブはクライアントのリクエストを、その時点でサービスのホストとなっているクラスタ内のサーバ インスタンスに転送します。クライアントからの次のリクエストまでにサービスが別の WebLogic Server に移動している場合、スタブはそのリクエストを最新のホスト サーバに透過的にリダイレクトします。

JMS サーバや JTA トランザクション回復サービスがクラスタ内に存在し、コンフィグレーションで移行が有効にされているとき、WebLogic Server はそれらのサービスに対する移行対応の RMI スタブを実装します。

使用不能サーバからのサービスの移行

クラッシュした、または管理サーバからアクセスできないサーバ インスタンスからサービスを移行する場合は、特別な考慮事項があります。移行を行う時点で以前にアクティブだったサービスのホストに管理サーバからアクセスできない場合、その管理対象サーバのローカル コンフィグレーション情報は、それがサービスのアクティブなホストでなくなっていることを反映して更新されることはありません。この場合は、アクセス不能な管理対象サーバのローカル コンフィグレーション キャッシュを再起動前にパージする必要があります。そうすれば、以前にアクティブだったホストが、別の管理対象サーバに移行しているサービスを起動時に再びアクティブにしてしまうことがなくなります。

クラスタ内の移行可能対象サーバの定義

デフォルトでは、WebLogic Server は JTA トランザクション回復サービスまたは JMS サーバを、クラスタ内のほかのどのサーバにでも移行できます。また必要に応じて、固定サービスのホストとなることのできるクラスタ内のサーバのリストを手動で編集できます。このサーバ リストは移行可能対象と呼ばれ、サービスを移行することのできるサーバを管理します。JMS の場合、移行可能対象は JMS サーバをデプロイ可能なサーバのリストも定義します。

たとえば、次の図では 4 つのサーバで構成されるクラスタを示しています。クラスタ内で、サーバ A および B は JMS サーバの移行可能対象としてコンフィグレーションされます。

図 7-4 クラスタ内の移行可能対象

クラスタ内の移行可能対象

上の図では、移行可能対象の設定に従って、管理者は固定サービスである JMS サーバをサーバ A からサーバ B に、またはサーバ B からサーバ A にのみ移行できます。同様に、JMS サーバをクラスタにデプロイするとき、管理者はデプロイメント先としてサーバ A または B のどちらかを選択して、サービスの移行を有効にします (管理者が移行可能対象を使用しない場合、JMS サーバはクラスタ内で使用可能などのサーバにもデプロイまたは移行できます)。

WebLogic Server では、JTA トランザクション回復サービスと JMS サーバに対して個別の移行可能対象を作成できます。これにより、必要に応じて、クラスタ内の別々のサーバ上で常に各サービスを動作させ続けることが可能になっています。また逆に、JTA と JMS の両方に共通する移行可能対象として同じサーバ群を選択し、両方のサービスが確実にクラスタ内の同じサーバ上に配置されるようにすることもできます。

 


シングルトン サービスの自動移行

シングルトン サービスの自動的な移行機能によって、シングルトン サービスの自動的な状態モニタと移行が可能になります。シングルトン サービスとは、クラスタ内の複数のサーバで同時に実行できないサービスです。移行可能サービスが何らかの理由 (たとえば、サービス コード内のバグ、サーバの障害、ネットワークの障害など) で失敗したり使用できなくなった場合、そのサービスは現在の場所で非アクティブ化されて、新しいサーバ上でアクティブ化されます。これらのサービスを別のサーバに移行するプロセスは、移行マスターによって処理されます。「移行マスター」を参照してください。

WebLogic Server では、ユーザ定義のシングルトン サービスを自動的に移行できます。

注意 : JMS や JTA もクラスタ内の複数のノードで同時に実行できないシングルトン サービスですが、これらは自動的には移行されないため手動で移行する必要があります。「JMS および JTA の移行の仕組み」を参照してください。

シングルトン サービスの移行の概要

この節では、シングルトン サービスの自動移行を WebLogic Server に実装する方法の概略を示します。

移行マスター

移行マスターは、自動移行可能な他のサービスをモニタする軽量シングルトン サービスです。その時点で移行マスターをホストしているサーバは、各移行可能サービスに関連付けられた移行タスクを開始および停止する役割を担います。

注意 : 移行可能サービスは、移行マスターと同じサーバにデプロイする必要はありませんが、同じクラスタ内にデプロイする必要があります。

移行マスターは、リースの競合によって維持される点や、同時に複数のサーバで実行できない点で、クラスタ マスターとよく似ています。クラスタ内の各サーバは、移行マスターのリースの登録を継続的に試行します。現時点で移行マスターをホストしているサーバに障害が発生すると、キュー内の次のサーバがそのリースを引き継ぎ、移行マスターのホストを開始します。

クラスタ マスターの詳細については、「サーバの移行におけるクラスタ マスターの役割」を参照してください。

注意 : 移行マスターとクラスタ マスターは、それぞれ独立して機能するため、同じサーバでホストする必要はありません。

移行マスターをホストするサーバには、実行されたすべての移行の記録 (対象名、移行元サーバ、移行先サーバ、タイムスタンプなど) が保持されます。

移行の失敗

シングルトン サービスの移行がクラスタ内のすべての候補サーバで失敗すると、サービスは非アクティブ化されたままになります。移行マスターがクラスタ内のサーバを再試行する回数をコンフィグレーションすることもできます。

注意 : 候補サーバのリストを明示的に指定していない場合は、クラスタ内のすべてのメンバーが候補サーバと見なされます。

シングルトン サービス インタフェースの実装

アプリケーション内に、クラスタの複数のメンバーで同時に実行すべきでないタスクを実行するためのシングルトン サービスを定義できます。シングルトン サービスは、アプリケーション内にクラスとして実装し、そのアプリケーションをデプロイする各サーバのデプロイメント記述子の一部としてコンフィグレーションします。ただし、シングルトン サービスを複数のサーバで同時にアクティブにすることはできません。

アプリケーション内にシングルトン サービスを作成するには、シングルトン サービスで実行するタスクに加えて、weblogic.cluster.singleton.SingletonService インタフェースを実装するクラスを作成する必要があります。

SingletonService インタフェースには、移行のプロセスで使用する以下のメソッドが含まれています。

SingletonService インタフェースを実装するクラスを作成したら、デプロイメント用の .war ファイルを作成するときに APP-INF/lib および APP-INF/classes のどちらのディレクトリからでもこのクラスを使用できるようにしておく必要があります。

サービスの自動移行のデプロイメントとコンフィグレーション

SingletonService インタフェースを実装するクラスを作成したら、次の手順に従って、そのクラスをデプロイしてシングルトン サービスとして実行する必要があります。

  1. アプリケーションをクラスタにデプロイする。
  2. WebLogic Server 内にシングルトン サービスを定義する。
  3. シングルトン サービスの移行動作をコンフィグレーションする。

以下の節では、これらの手順について説明します。

アプリケーションをシングルトン サービスとしてデプロイする

シングルトン サービスは一度に 1 つのクラスタ メンバーでしかアクティブにできませんが、アプリケーションは移行されたシングルトン サービスの候補対象として機能するすべてのクラスタ メンバーにデプロイする必要があります。

アプリケーションをクラスタ内のすべての候補サーバにデプロイしたら、デプロイされた各アプリケーション インスタンスの weblogic-application.xml に次のエントリを追加します。

<weblogic-application>
...
   <singleton-service>
      <class-name>mypackage.MySingletonServiceImpl</class-name>
      <name>Appscoped_Singleton_Service</name>
   </singleton-service>
...
</weblogic-application>
注意 : <class-name> および <name> 要素は必須です。

WebLogic Server 内にシングルトン サービスを定義する

アプリケーションの作成とデプロイメントが完了したら、WebLogic Server 内にシングルトン サービスを定義する必要があります。

このシングルトン サービスには、以下の情報が含まれます。

シングルトン サービス オブジェクトは、移行マスターとデプロイされたアプリケーション コードの間のリンクとして機能します。次に示す config.xmlcluster 要素からの抜粋は、シングルトン サービスをどのように定義するかを示しています。

<SingletonService
   Name="SingletonTestServiceName"
   ClassName="mycompany.myprogram.subpackage.SingletonTestServiceImpl"
   Cluster="mycluster-"
/>

サービスの自動移行をコンフィグレーションする

サービスの自動移行の動作は、以下を使用してコンフィグレーションできます。


  ページの先頭       前  次