第13章 HTTP クラスタリングおよび負荷分散
13.1. はじめに
13.1.1. 高可用性および負荷分散クラスターについて
- アプリケーションサーバーのインスタンス
- 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. 高可用性が有益なコンポーネント
エンタープライズアプリケーションサーバーのインスタンス (スタンドアローンサーバーとして実行) あるいはサーバーグループのメンバー (管理ドメインの一部として実行) を高可用として設定することができます。つまり、インスタンスあるいはメンバーを停止した場合、あるいはクラスターから消えた場合、そのFUKA がピアに移行されます。負荷は、負荷分散機能を提供するかたちで管理できるため、リソースを多く持つあるいは、より良いリソースを持つサーバーやサーバーグループが他よりも大きい負荷を取ることができるようになるか、あるいは負荷が高い時間には容量を追加できるようになります。
互換性のある負荷分散メカニズムの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 コネクターの概要
表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 | いいえ。アプリケーションステータスに関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。 | はい |
各 HTTP コネクターの詳細について
13.1.4. ワーカーノード
ワーカーノードは、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) から要求を受け入れることができます。
クラスターノードはサーバーのクラスターのメンバーです。このようなクラスターは、負荷分散、高可用性、またはその両方です。負荷分散クラスターでは、中央マネージャーが状況固有の均等性の単位を使用してノード間で負荷を均等に分散します。高可用性クラスターでは、一部のノードがアクティブに処理を行い、他のノードはアクティブなノードのいずれかがクラスターから離れるまで待機します。