第16章 HTTP クラスタリングおよび負荷分散

16.1. はじめに

16.1.1. 高可用性および負荷分散クラスターについて

クラスタリング とは、サーバーなどの複数のリソースを単一のエンティティーとして使用することです。クラスタリングの 2 つの主なタイプは 負荷分散 (LB)高可用性 (HA) です。LB クラスターでは、すべてのリソースが同時に実行され、管理レイヤーによってそれらのリソース全体で負荷が分散されます。
HA クラスタリングでは、1 つのリソースが実行され、最初のリソースが利用できなくなった場合に別のリソースが利用可能になります。HA クラスタリングの目的は、ハードウェア、ソフトウェア、およびネットワークの停止による影響を減らすことです。
JBoss Enterprise Application Platform は、HA クラスタリングを複数のレベルでサポートします。高可用性を実現できるサブシステムは以下のとおりです。
  • アプリケーションサーバーのインスタンス
  • Web サーバー (内部 JBoss Web サーバー、Apache HTTPD、 Microsoft IIS、 Oracle iPlanet Web Server、Apache Tomcat)
  • ステートフル、ステートレス、およびエンティティー Enterprise JavaBean (EJB)
  • JNDI サービス
  • シングルサインオン (SSO) メカニズム
  • 分散キャッシュ
  • HTTP セッション
  • JMS サービスおよびメッセージ駆動型 Bean (MDB)

16.1.2. 高可用性が有益なコンポーネント

高可用性 (HA) は JBoss Enterprise Application Platform の幅広いカテゴリーのいくつかに分類されます。
コンテナ

JBoss Enterprise Application Server の複数のインスタンス (スタンドアローンサーバーとして実行) またはサーバーグループのメンバー (管理対象ドメインの一部として実行) を高可用性として設定できます。つまり、1 つのインスタンスまたはメンバーが停止したり、クラスターから消去された場合、そのワークロードはピアに移行されます。負荷分散機能を提供するようワークロードを管理することもできるため、多くの優れたリソースを持つサーバーやサーバーグループは、より多くのワークロードを担当できます。また、負荷が高い間、処理能力を追加することも可能です。

Web サーバー

互換性のある負荷分散メカニズムの 1 つを使用して Web サーバー自体も HA 用にクラスター化できます。mod_cluster コネクターが最も柔軟で、 JBoss Enterprise Application Platform のコンテナと密接に統合されます。他にも、Apache の mod_jk または mod_proxy コネクター、ISAPI および NSAPI コネクターなどがあります。

アプリケーション

Java Enterprise Edition 6 (Java EE 6) 仕様によって、デプロイされたアプリケーションを高可用化できます。ステートレスまたはステートフルセッション EJB をクラスター化できるため、作業に関与するノードがなくなった場合に他のノードによる引き継ぎが可能です。ステートフルセッション Bean の場合は状態が保持されます。

16.1.3. HTTP コネクターの概要

JBoss Enterprise Application Platform には、Apache Web Server、Microsoft IIS、Oracle iPlanet などの外部 HTTPD Web サーバーに構築された負荷分散および高可用性メカニズムを使用する機能があります。JBoss Enterprise Application Platform は HTTP コネクターを使用して外部 Web サーバーを通信します。これらの HTTP コネクターは JBoss Enterprise Application Platform の Web サブシステム内に設定されます。
HTTPD サーバーには、HTTP リクエストが JBoss Enterprise Application Platform のワーカーノードにルーティングされる方法を制御するソフトウェアモジュールが含まれています。これらのモジュールの挙動や設定方法はモジュールごとに異なります。モジュールは、JBoss Enterprise Application Platform の複数のサーバーノード全体でワークロードのバランスを取るよう設定されたり、障害時にワークロードを他のサーバーに移動するよう設定されます。これらの 2 つの機能を 負荷分散 および 高可用性 (HA) と呼びます。
JBoss Enterprise Application Platform は、複数の HTTP コネクターをサポートします。選択するコネクターは、接続する HTTPD と必要な他の機能によって異なります。
以下の表は、JBoss Enterprise Application Platform と互換性がある HTTP コネクターの違いを表しています。HTTP コネクターのサポート対象設定の最新情報については、https://access.redhat.com/site/articles/111663 を参照してください。

表16.1 HTTP コネクター機能および制約

コネクター Web サーバー サポート対象オペレーティングシステム サポート対象プロトコル デプロイメント状態への適合 スティッキーセッションのサポート
mod_cluster JBoss Enterprise Web Server HTTPD、 Native HTTPD (Red Hat Enterprise Linux のみ) Red Hat Enterprise Linux、Microsoft Windows Server、 Oracle Solaris HTTP、HTTPS、AJP 可。アプリケーションのデプロイメントとデプロイメント解除を検出し、アプリケーションがそのサーバーにデプロイされたかどうかに基づいて、サーバーにクライアント要求を送信するかどうかを動的に決定します。
mod_jk JBoss Enterprise Web Server HTTPD、 Native HTTPD (Red Hat Enterprise Linux のみ) Red Hat Enterprise Linux、Microsoft Windows Server、 Oracle Solaris AJP 不可。アプリケーションステータスに関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。
mod_proxy JBoss Enterprise Web Server HTTPD Red Hat Enterprise Linux、Microsoft Windows Server、 Oracle Solaris HTTP、HTTPS、AJP 不可。アプリケーションステータスに関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。
ISAPI Microsoft IIS Microsoft Windows Server AJP 不可。アプリケーションステータスに関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。
NSAPI Oracle iPlanet Web Server Oracle Solaris AJP 不可。アプリケーションステータスに関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。
JBoss Enterprise Application Platform によってサポートされる設定は https://access.redhat.com/site/articles/111663 を参照してください。

16.1.4. ワーカーノード

HTTP コネクターノード

ワーカーノードは、1 つまたは複数のクライアント向け HTTPD サーバーから要求を受け入れる JBoss Enterprise Application Platform サーバーで、単に ノード と呼ばれることもあります。JBoss Enterprise Application Platform は独自の HTTPD、JBoss Enterprise Web Server に同梱された HTTPD、Apache HTTPD、Microsoft IIS、または Oracle iPlanet Web Server (以前の Netscape Web Server) から要求を受け入れることができます。

JBoss Enterprise Application Platform でサポートされる HTTP コネクターの概要と設定方法については、「HTTP コネクターの概要」を参照してください
クラスターノード

クラスターノードはサーバーのクラスターのメンバーです。このようなクラスターは、負荷分散、高可用性、またはその両方です。負荷分散クラスターでは、中央マネージャーが状況固有の均等性の単位を使用してノード間で負荷を均等に分散します。高可用性クラスターでは、一部のノードがアクティブに処理を行い、他のノードはアクティブなノードのいずれかがクラスターから離れるまで待機します。