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

19.1. はじめに

19.1.1. 高可用性および負荷分散クラスター

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

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

高可用性 (HA) は、JBoss EAP 6 の幅広いカテゴリーに分類されます。
コンテナ

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

Web サーバー

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

アプリケーション

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

19.1.3. HTTP コネクターの概要

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

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

コネクターWeb サーバーサポート対象オペレーティングシステムサポート対象プロトコルデプロイメント状態への適合スティッキーセッションのサポート
mod_clusterJBoss Enterprise Web Server の httpd、オペレーティングシステム (Red Hat Enterprise Linux、Hewlett-Packard HP-UX) によって提供される httpdRed Hat Enterprise Linux、Microsoft Windows Server、Oracle Solaris、Hewlett-Packard HP-UXHTTP、HTTPS、AJP可。アプリケーションのデプロイメントとアンデプロイメントを検出し、アプリケーションがそのサーバーにデプロイされたかどうかに基づいて、サーバーにクライアント要求を送信するかどうかを動的に決定します。
mod_jkJBoss Enterprise Web Server の httpd、オペレーティングシステム (Red Hat Enterprise Linux、Hewlett-Packard HP-UX) によって提供される httpdRed Hat Enterprise Linux、Microsoft Windows Server、Oracle Solaris、Hewlett-Packard HP-UXAJP不可。アプリケーションの状態に関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。
mod_proxyJBoss Enterprise Web Server の httpdRed Hat Enterprise Linux、Microsoft Windows Server、Oracle SolarisHTTP、HTTPS、AJP不可。アプリケーションの状態に関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。
ISAPIMicrosoft IISMicrosoft Windows ServerAJP不可。アプリケーションの状態に関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。
NSAPIOracle iPlanet Web ServerOracle SolarisAJP不可。アプリケーションの状態に関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。
JBoss EAP 6 によってサポートされる設定は https://access.redhat.com/site/articles/111663 を参照してください。

19.1.4. ワーカーノード

HTTP コネクターノード

ワーカーノードは、1 つまたは複数のクライアント向け Web サーバーから要求を許可する JBoss EAP 6 サーバーで、単にノードと呼ばれることもあります。JBoss EAP 6 は Apache HTTP Server、Microsoft IIS、Oracle iPlanet Web Server などの独自の Web サーバーからの要求を許可できます。

JBoss EAP 6 でサポートされる HTTP コネクターの概要と設定方法については、「xref linkend="Overview_of_HTTP_Connectors" />」参照してください
クラスターノード

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