Enterprise Server は、次のサブコンポーネントと機能を通して高可用性を提供します。
セッション状態データを格納することにより、クラスタ内のサーバーインスタンスのフェイルオーバー後にセッション状態を復元できるようになります。セッション状態の復元により、情報を失うことなくセッションを継続できます。Enterprise Server では、HTTP セッションおよびステートフルセッション Bean のデータを格納するための、次のタイプの高可用性ストレージが用意されています。
クラスタ内の別のサーバーにおけるインメモリーレプリケーション
高可用性データベース
ほかのサーバー上でインメモリーレプリケーションを実行することにより、HADB などの別個のデータベースを入手しなくてもセッション状態データの軽量ストレージを用意できます。このタイプのレプリケーションは、ほかのサーバー上のメモリーを使用して HTTP セッションとステートフルセッション Bean データの高可用性ストレージを実現します。クラスタ化されたサーバーインスタンスはセッション状態をリングトポロジで複製します。各バックアップインスタンスは複製されたデータをメモリーに格納します。セッション状態データをほかのサーバー上のメモリーに複製することによって、セッションを分散することが可能になります。
インメモリーレプリケーションを使用するには、「グループ管理サービス (GMS)」 を有効にする必要があります。GMS の詳細については、「グループ管理サービス」を参照してください。
クラスタ内の複数のサーバーインスタンスが異なるマシンに配置されている場合は、次の前提条件が満たされていることを確認してください。
GMS およびインメモリーレプリケーションが正常に機能することを保証するには、すべてのマシンが同じサブネット上に存在している必要があります。
インメモリーレプリケーションが正常に機能することを保証するには、クラスタ内のすべてのマシンのシステムクロックができるだけ厳密に同期している必要があります。
HADB ソフトウェアは、Sun GlassFish Enterprise Server の Enterprise Server スタンドアロン配布 で提供されます。Sun GlassFish Enterprise Server の利用可能な配布の詳細については、『Sun GlassFish Enterprise Server 2.1 Installation Guide』の「Distribution Types and Their Components」を参照してください。HADB 機能はエンタープライズプロファイルでのみ利用可能です。プロファイルの詳細については、『Sun GlassFish Enterprise Server 2.1 管理ガイド』の「プロファイル」を参照してください。
GlassFish Communications Server は、HTTP セッションデータおよびステートフルセッション Bean データの高可用性ストレージのための高可用性データベース (HADB) を提供します。HADB は、負荷分散、フェイルオーバー、および状態復元により、最大 99.999% のサービスおよびデータの可用性をサポートするように設計されています。一般に、HADB は、Enterprise Server とは独立に設定および管理する必要があります。
状態管理の機能を GlassFish Communications Server と切り離しておくことには、大きな利点があります。GlassFish Communications Server インスタンスは、状態レプリケーションを外部の高可用性状態サービスに委任した、スケーラブルで高性能なアプリケーションコンテナとしての動作に CPU サイクルを消費します。この疎結合のアーキテクチャーのために、GlassFish Communications Server インスタンスを容易にクラスタに追加したり、クラスタから削除したりできます。HADB の状態レプリケーションサービスを独立に拡張して、最適な可用性とパフォーマンスを得ることができます。GlassFish Communications Server インスタンスがレプリケーションも実行していると、Java EE アプリケーションのパフォーマンスが低下したり、ガベージコレクションの一時停止時間が長くなったりすることがあります。
ハードウェアの設定、サイズ、およびトポロジの決定など、インストールで HADB による高可用性を計画および設定する方法については、『Sun GlassFish Enterprise Server 2.1 配備計画ガイド』を参照してください。
「クラスタ」とは、1 つの論理エンティティーとして一体となって動作する インスタンスの集まりです。クラスタは、1 つ以上の Java EE アプリケーションに対して実行時環境を提供します。「高可用性クラスタ」では、状態レプリケーションサービスと、クラスタおよびロードバランサが統合されています。
クラスタの使用には、次の利点があります。
高可用性: クラスタ内のサーバーインスタンスに対するフェイルオーバーを可能にすることで実現します。1 つのサーバーインスタンスが停止すると、別のサーバーインスタンスが、利用できないサーバーインスタンスが処理していた要求を引き継ぎます。
スケーラビリティー: クラスタにサーバーインスタンスを追加できるようにし、それによってシステムの能力が増強されることによって実現します。ロードバランサプラグインは、要求をクラスタ内の使用可能なサーバーインスタンスに分配します。管理者はより多くのサーバーインスタンスをクラスタに追加しているので、処理の中断の必要はありません。
クラスタ内のすべてのインスタンスが次のように動作します。
同じ設定を参照します。
Java EE アプリケーションの EAR ファイル、Web モジュールの WAR ファイル、EJB JAR ファイルなど、配備されたアプリケーションの同じセットを所有します。
同じ一連のリソースを所有しているため、同じ JNDI 名前空間が構成されます。
ドメイン内のすべてのクラスタが一意の名前を持ちます。また、この名前は、すべてのノードエージェント名、サーバーインスタンス名、クラスタ名、および設定名の間でも一意である必要があります。この名前を domain に使用してはいけません。アプリケーションの配備やリソースの作成など、クラスタ化されていないサーバーインスタンスで実行する操作と同じ操作をクラスタ上で実行します。
クラスタの設定は、ほかのクラスタで共有される可能性のある、名前を付けられている設定から派生されます。設定をほかのサーバーインスタンスまたはクラスタと共有していないクラスタは、スタンドアロン設定を持っていると言われます。デフォルトで、この設定の名前は cluster_name -config です。cluster_name はクラスタの名前です。
設定をほかのクラスタまたはインスタンスと共有しているクラスタは、共有設定を持っていると言われます。
クラスタ、サーバーインスタンス、ロードバランサ、およびセッションの関係は次のとおりです。
サーバーインスタンスがクラスタの一部である必要はありません。ただし、クラスタの一部でないインスタンスは、1 つのインスタンスから別のインスタンスへとセッション状態を移すことによって得られる高可用性を利用することはできません。
クラスタ内のサーバーインスタンスを 1 つまたは複数のマシンでホストすることができます。異なるマシンにまたがるサーバーインスタンスを 1 つのクラスタにグループ化できます。
特定のロードバランサは、複数のクラスタにあるサーバーインスタンスに要求を転送できます。ロードバランサのこの機能を使って、サービスを中断することなく、オンラインアップグレードを実行できます。詳細については、「クラスタの設定」の章の「複数のクラスタを使用してのサービス中断のないオンラインアップグレードサービス」を参照してください。
単一のクラスタは、複数のロードバランサから要求を受信できます。クラスタが、2 つ以上のロードバランサからサービスを受ける場合、各ロードバランサで、まったく同一に、クラスタを設定する必要があります。
各セッションは、特定のクラスタに関連づけられます。そのため、1 つのアプリケーションを複数のクラスタに配備することは可能ですが、セッションフェイルオーバーは単一のクラスタ内でのみ発生します。
したがってクラスタは、そのクラスタ内のサーバーインスタンスがフェイルオーバーしたときには、安全境界として機能します。ロードバランサを使って、サービスを停止することなく、Enterprise Server 内のコンポーネントをアップグレードすることができます。