mod_jk コネクタを使用すると、Web コンテナを Apache HTTP Server などの Web サーバーに接続できます。mod_jk は Enterprise Server に付属するコネクタで、これを使用することにより、Enterprise Server の前に Apach HTTP Server をたてることができます。この処理の一般的な目的は、静的なリソースに対する要求を Apache HTTP Server に処理させ、サーブレットや JavaServerTM Pages (JSP) などの動的なリソースに対する要求を、Enterprise Server のバックエンドインスタンスに転送して処理することです。
負荷分散の目的で、mod_jk を JSP またはサーブレットエンジンで直接使用することもできます。
ここでは、次のテーマを取り上げます。
ここで説明するように mod_jk コネクタを有効化することで、Enterprise Server と Apache HTTP Server を連携させることができます。ネットワークリスナーの jk-enabled 属性を使用する場合、追加の JAR ファイルを /lib ディレクトリにコピーする必要はありません。ネットワークリスナー属性の jk-enabled を使用することで、JK コネクタを別の仮想サーバーに作成することもできます。
Apache HTTP Server と mod_jk をインストールします。
Apache HTTP Server のインストール方法については、http://httpd.apache.org/docs/2.0/install.html を参照してください。
mod_jk のインストール方法については、http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html を参照してください。
次のファイルを設定します。
apache2/conf/httpd.conf (Apache の主要な構成ファイル)
apache2/config/workers.properties または domain-dir /config/glassfish-jk.properties (http://tomcat.apache.org/tomcat-5.5-doc/config/ajp.html で説明されている属性のデフォルト以外の値を使用する場合)
worker.properties ファイルと glassfish-jk.properties ファイルの両方を使用する場合は、httpd.conf で参照されている (または、httpd.conf で最初に参照される) ファイルが優先されます。
Apache HTTP Server (httpd) を起動します。
Web アプリケーションが少なくとも 1 つ配備されている Enterprise Server を起動します。
配備済み Web アプリケーションを少なくとも 1 つ使用する Web コンテナが起動されていなければ、mod_jk コネクタは起動できません。
次のコマンドを実行して、HTTP リスナーを作成します。
asadmin> create-http-listener --listenerport 8009 --listeneraddress 0.0.0.0 --defaultvs server listener-name |
asadmin> set server-config.network-config.network-listeners. network-listener.listener-name.jk-enabled=true |
listener-name は、mod_jk を有効にするネットワークリスナーの ID です。
glassfish-jk.properties ファイルを使用していて、httpd.conf でこのファイルを参照していない場合は、次のコマンドを実行してファイルの場所を指定します。
asadmin> create-jvm-options -Dcom.sun.enterprise.web.connector.enableJK.propertyFile= domain-dir/config/glassfish-jk.properties |
変更内容を適用するために、Enterprise Server を再起動します。
「ドメインの再起動」を参照してください。
この例では、httpd.conf ファイルを示します。
LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so JkWorkersFile /etc/httpd/conf/worker.properties # Where to put jk logs JkLogFile /var/log/httpd/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel debug # Select the log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # JkOptions indicate to send SSL KEY SIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format JkRequestLogFormat "%w %V %T" # Send all jsp requests to GlassFish JkMount /*.jsp worker1 # Send all glassfish-test requests to GlassFish JkMount /glassfish-test/* worker1
この例では、worker.properties または glassfish-jk.properties ファイルを示します。
# Define 1 real worker using ajp13 worker.list=worker1 # Set properties for worker1 (ajp13) worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009
Apache の詳細は、http://httpd.apache.org/ を参照してください。
負荷分散は、1 台のコンピュータで実行しなければならない作業を複数のコンピュータに分配し、同じ時間でより多くの作業を行う処理です。
「mod_jk を有効にする」の手順を実行します。
少なくとも 1 つの Web アプリケーションが配備されている、別の Enterprise Server を起動します。
配備済み Web アプリケーションを少なくとも 1 つ使用する Web コンテナが起動されていなければ、mod_jk コネクタは起動できません。
次のようなコマンドを実行して、HTTP リスナーを作成します。
asadmin> create-http-listener --listenerport 8010 --listeneraddress 0.0.0.0 --defaultvs server my-connector |
複数のインスタンスが同じマシンで動作している場合は、別の JK ポートを選択する必要があります。ポートは worker.properties ファイルの worker.worker*.port に一致する必要があります。以下のプロパティーファイルの例を参照してください。
次のコマンドを実行して、mod_jk を有効にします。
asadmin> set server-config.network-config.network-listeners. network-listener.listener-name.jk-enabled=true |
listener-name は、mod_jk を有効にするネットワークリスナーの ID です。
変更を適用するには、Apache と Enterprise Server を再起動します。
「ドメインの再起動」を参照してください。
この例では、httpd.conf ファイルを示します。
LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so JkWorkersFile /etc/httpd/conf/worker.properties # Where to put jk logs JkLogFile /var/log/httpd/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel debug # Select the log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # JkOptions indicate to send SSL KEY SIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format JkRequestLogFormat "%w %V %T" # Send all jsp requests to GlassFish JkMount /*.jsp worker1 # Send all glassfish-test requests to GlassFish JkMount /glassfish-test/* loadbalancer |
この例では、worker.properties または glassfish-jk.properties ファイルを示します。worker.worker*.port は、作成した JK ポートに一致している必要があります。
worker.list=loadbalancer worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009 worker.worker1.lbfactor=1 worker.worker1.socket_keepalive=1 worker.worker1.socket_timeout=300 worker.worker2.type=ajp13 worker.worker2.host=localhost worker.worker2.port=8010 worker.worker2.lbfactor=1 worker.worker2.socket_keepalive=1 worker.worker2.socket_timeout=300 worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=worker1,worker2 |