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.3 にこのツールを使用する場合は、Apache バージョンを 2.4.x
として選択し、バックエンド設定を Tomcat
として選択してください。
2.2.1. mod_jk をロードする Apache HTTP Server の設定
新しいファイル
JBCS_HOME/httpd/conf.d/mod_jk.conf
を作成し、以下の設定を挿入します。# Load mod_jk module # Specify the filename of the mod_jk lib LoadModule jk_module modules/mod_jk.so # Where to find workers.properties JkWorkersFile conf.d/workers.properties # Where to put jk logs JkLogFile logs/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel info # Select the log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" # JkOptions indicates to send SSL KEY SIZE JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat JkRequestLogFormat "%w %V %T" # Mount your applications JkMount /application/* loadbalancer # Add shared memory. # This directive is present with 1.2.10 and # later versions of mod_jk, and is needed for # for load balancing to work properly JkShmFile logs/jk.shm # Add jkstatus for managing runtime data <Location /jkstatus/> JkMount status Require ip 127.0.0.1 </Location>
重要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
以下の例は、JBoss Web Server Tomcat バックエンドに
/application
のリクエストを転送するように mod_jk を設定します。# Simple worker configuration file # Mount the Servlet context to the ajp13 worker /application=loadbalancer /application/*=loadbalancer
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 JkMountFile conf.d/uriworkermap.properties
-
任意: 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
に追加し、環境に合わせてカスタマイズします。# Define list of workers that will be used # for mapping requests worker.list=loadbalancer,status # Define Node1 # modify the host as your host IP or DNS name. worker.node1.port=8009 worker.node1.host=node1.mydomain.com worker.node1.type=ajp13 worker.node1.ping_mode=A worker.node1.lbfactor=1 # Define Node2 # modify the host as your host IP or DNS name. worker.node2.port=8009 worker.node2.host=node2.mydomain.com worker.node2.type=ajp13 worker.node2.ping_mode=A worker.node2.lbfactor=1 # Load-balancing behavior worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=node1,node2 worker.loadbalancer.sticky_session=1 # Status worker for managing load balancer worker.status.type=status
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" />
AJP 対応のコネクターに加えて、各ワーカーノードの Engine で jvmRoute
属性に一意の値を設定する必要もあります。
<Engine name="Catalina" jvmRoute="node1" >
jvmRoute
属性の値は、workers.properties
に設定されたワーカー名に一致する必要があります。