第2章 Apache Tomcat Connector (mod_jk)
Apache Tomcat Connector の mod_jk は、Apache HTTP Server からサーブレットコンテナーへのリクエスト転送を可能にするプラグインです。モジュールは、スティッキーセッションを維持しながら、一連のサーブレットコンテナーへの HTTP 呼び出しの負荷分散にも対応します。
2.1. mod_jk のダウンロードおよびインストール リンクのコピーリンクがクリップボードにコピーされました!
mod_jk モジュールは、JBoss Core Services インストールの Apache HTTP Server に含まれています。
JBoss Core Services インストールガイド の手順に従って、お使いのオペレーティングシステム用の Apache HTTP Server をダウンロードし、インストールします。
2.2. Apache HTTP Server および mod_jk を使用した負荷分散の設定 リンクのコピーリンクがクリップボードにコピーされました!
mod_jk コネクターを使用して Apache HTTP Server の負荷分散を設定できます。本項のタスクにしたがって、mod_jk を使用して負荷分散を設定します (ワーカーノードの設定を含む)。
mod_jk 用の設定ファイルのサンプルは JBCS_HOME/httpd/conf.d/
にあります。設定ファイルの例は mod_jk.conf.sample
、workers.properties.sample
、および uriworkermap.properties.sample
です。独自の設定ファイルを作成するのではなく、これらのサンプルを使用するには、.sample
エクステンションを削除し、必要に応じてコンテンツを変更します。
Red Hat のお客様は Red Hat カスタマーポータルにある Load Balancer Configuration Tool を使用して mod_jk や Tomcat ワーカーノードに最適な設定テンプレートを迅速に生成することもできます。
JBoss Web Server 5.4 にこのツールを使用する場合は、Apache バージョンを 2.4.x
として選択し、バックエンド設定を Tomcat
として選択してください。
2.2.1. mod_jk をロードする Apache HTTP Server の設定 リンクのコピーリンクがクリップボードにコピーされました!
新しいファイル
JBCS_HOME/httpd/conf.d/mod_jk.conf
を作成し、以下の設定を挿入します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要LoadModule
ディレクティブは、インストールした mod_jk ネイティブバイナリーを参照する必要があります。注記JkMount
ディレクティブは、Apache HTTP Server が mod_jk モジュールに転送する URL を指定します。ディレクティブの設定に基づいて、mod_jk は受信した URL を正しいサーブレットコンテナーに転送します。Apache HTTP Server が直接静的コンテンツ (または PHP コンテンツ) に対応し、Java アプリケーションのロードバランサーのみを使用するには、上記の推奨設定では、URL
/application/*
のあるリクエストのみが mod_jk ロードバランサーに送信されるように指定されます。JkMount
で/*
を指定して、すべての URL を mod_jk に転送できます。オプション:
JKMountFile
ディレクティブJkMount
ディレクティブの他に、JkMountFile
ディレクティブを使用してマウントポイントの設定ファイルを指定できます。設定ファイルには、Tomcat 転送の複数の URL マッピングが含まれます。-
JBCS_HOME/httpd/conf.d/
に移動し、uriworkermap.properties
という名前のファイルを作成します。 以下の構文例をガイドとして使用し、転送する URL およびワーカー名を指定します。
必要な構文は
/URL=WORKER_NAME
の形式を取ります。以下の例は、
/application
のリクエストを JBoss Web Server Tomcat バックエンドに転送するよう mod_jk を設定します。Simple worker configuration file Mount the Servlet context to the ajp13 worker
# Simple worker configuration file # Mount the Servlet context to the ajp13 worker /application=loadbalancer /application/*=loadbalancer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow JBCS_HOME/httpd/conf.d/mod_jk.conf
に、以下のディレクティブを追加します。Use external file for mount points. It will be checked for updates each 60 seconds. The format of the file is: /url=worker /examples/*=loadbalancer
# Use external file for mount points. # It will be checked for updates each 60 seconds. # The format of the file is: /url=worker # /examples/*=loadbalancer JkMountFile conf.d/uriworkermap.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
任意: Apache HTTP Server のロギングを設定します
どのワーカーノードがリクエストを処理するかをログに記録するために負荷分散を実施している Apache HTTP サーバーを設定できます。これは、ロードバランサーのトラブルシューティングに役立ちます。
この機能を mod_jk に対して有効にするには、以下のいずれかを行います。
-
JkRequestLogFormat
に%w
を含めます (これは、上記の提案でデフォルトで設定されます)。または、 -
Apache HTTP Server
LogFormat
に%{JK_WORKER_NAME}n
が含まれるようにして、使用される mod_jk ワーカーの名前をログに記録します。
JkRequestLogFormat
の詳細は Apache Tomcat コネクタードキュメント を参照してください。ログローテーションを含む Apache HTTP Server ロギングの詳細は、ログファイルに関する Apache HTTP Server ドキュメント を参照してください。-
2.2.2. mod_jk でのワーカーノードの設定 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、2 つのサーブレットコンテナー間でスティッキーセッションがアクティブな加重ラウンドロビン設定での、2 つの mod_jk ワーカーノード定義を示しています。
要件
-
workers.properties
ディレクティブの 形式を理解している。 - mod_jk の設定。
mod_jk ワーカーノードを設定するには以下を行います。
-
JBCS_HOME/httpd/conf.d/
に移動し、workers.properties
という名前のファイルを作成します。 以下の設定を
workers.properties
に追加し、お使いの環境にカスタマイズします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.3. mod_jk と連携するように Tomcat を設定 リンクのコピーリンクがクリップボードにコピーされました!
Tomcat はデフォルトで、mod_jk から AJP トラフィックを受信するように設定されますが、mod_jk でワーカーを使用する前に追加の手順が 1 つ必要です。AJP コネクターは JBCS_HOME/tomcat<VERSION>/conf/server.xml
でデフォルトで設定されます。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
AJP 対応のコネクターに加えて、各ワーカーノードの Engine で jvmRoute
属性に一意の値を設定する必要もあります。
<Engine name="Catalina" jvmRoute="node1" >
<Engine name="Catalina" jvmRoute="node1" >
jvmRoute
属性値は、workers.properties
に設定されたワーカー名と一致している必要があります。