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

13.1. はじめに

13.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)

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

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

エンタープライズアプリケーションサーバーのインスタンス (スタンドアローンサーバーとして実行) あるいはサーバーグループのメンバー (管理ドメインの一部として実行) を高可用として設定することができます。つまり、インスタンスあるいはメンバーを停止した場合、あるいはクラスターから消えた場合、そのFUKA がピアに移行されます。負荷は、負荷分散機能を提供するかたちで管理できるため、リソースを多く持つあるいは、より良いリソースを持つサーバーやサーバーグループが他よりも大きい負荷を取ることができるようになるか、あるいは負荷が高い時間には容量を追加できるようになります。

Web サーバー

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

データソースおよびその他のリソース

データソースおよび他のリソースも高可用とすることができます。シリアル化可能なオブジェクトをバインドでき、クラスター内の全ノードで利用できるように、HA-JNDI はグローバルコンテキストを提供します。

アプリケーション

Java Enterprise Edition 6 (Java EE 6) 仕様があるため、デプロイされたアプリケーションを高可用にすることができます。作業に関わったノードが消えた場合に別のノードが引き継げるように、ステートレスあるいはステートフルセッション EJB はクラスター化が可能です。ステートフルセッション Bean の場合はステータスが保たれます。

13.1.3. HTTP コネクターの概要

Enterprise Application Platform は、外部 HTTPD サーバーから要求を受け取る機能をサポートします。これは、HTTPD サーバー内に存在し、アプリケーションが実際にデプロイされた Enterprise Application Platform と通信する HTTP コネクターによって可能になります。バックエンドサーバーは必要に応じてクラスタリングできます。適切な HTTP コネクターを選択するには、これらの違いを理解することが重要です。
Enterprise Application Platform などの監理対象コンテナー環境で、HTTP サーバーはネットワークを介してアプリケーションにアクセスするクライアントから要求を受け取ります。HTTP サーバーは、要求を、アプリケーションサーバーまたはアプリケーションがデプロイされたサーバーのクラスターに渡します。アプリケーションサーバーは処理を行い、HTTP コネクターを介して結果を HTTPD サーバーとクライアントに渡し返します。
コンテナーが Enterprise Application Platform サーバーまたは異種クラスターのメンバーである Enterprise Application Platform サーバーである場合、グループに対するクライアント要求を分散し、元のサーバーで障害が発生した場合に負荷を新しいサーバーに分散し、要求を新しいサーバーにリダイレクトする必要があります。このタイプの設定は、負荷分散グループと呼ばれます。
Enterprise Application Platform は、複数のさまざまな HTTP コネクターをサポートします。選択するコネクターは、接続する HTTPD と必要な他の機能によって異なります。
以下の表は、Enterprise Application Platform と互換性がある異なる HTTP コネクター間の違いを示しています。HTTP コネクターのサポート対象設定の最新情報については、https://access.redhat.com/kb/docs/DOC-34454 を参照してください。

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

コネクター Web サーバー サポート対象オペレーティングシステム サポート対象プロトコル デプロイメント ステータスへの変更 スティッキーセッションのサポート
mod_cluster JBoss Enterprise Web Server HTTPD Red Hat Enterprise Linux、Microsoft Windows Server HTTP、HTTPS はい。アプリケーションのデプロイメントとデプロイメント解除を検出し、アプリケーションがそのサーバーにデプロイされたかどうかに基づいて、サーバーにクライアント要求を送信するかどうかを動的に決定します。 はい
mod_jk JBoss Enterprise Web Server HTTPD、Apache HTTPD Red Hat Enterprise Linux、Microsoft Windows Server(JBoss Enterprise Web Server を使用している場合) AJP いいえ。アプリケーションステータスに関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。 はい
mod_proxy JBoss Enterprise Web Server HTTPD、Apache HTTPD Red Hat Enterprise Linux、Microsoft Windows Server(JBoss Enterprise Web Server を使用している場合) HTTP、HTTPS いいえ。アプリケーションステータスに関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。 はい
ISAPI Microsoft IIS Microsoft Windows Server AJP いいえ。アプリケーションステータスに関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。 はい
NSAPI Sun Java System Web Server Oracle Solaris AJP いいえ。アプリケーションステータスに関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。 はい

13.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 コネクターの概要 」を参照してください
クラスターノード

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