Sun GlassFish Enterprise Server v3 管理ガイド

mod_jk の管理

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 またはサーブレットエンジンで直接使用することもできます。

ここでは、次のテーマを取り上げます。

Proceduremod_jk を有効にする

ここで説明するように mod_jk コネクタを有効化することで、Enterprise Server と Apache HTTP Server を連携させることができます。ネットワークリスナーの jk-enabled 属性を使用する場合、追加の JAR ファイルを /lib ディレクトリにコピーする必要はありません。ネットワークリスナー属性の jk-enabled を使用することで、JK コネクタを別の仮想サーバーに作成することもできます。

  1. Apache HTTP Server と mod_jk をインストールします。

  2. 次のファイルを設定します。

    • 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 で最初に参照される) ファイルが優先されます。

  3. Apache HTTP Server (httpd) を起動します。

  4. Web アプリケーションが少なくとも 1 つ配備されている Enterprise Server を起動します。

    配備済み Web アプリケーションを少なくとも 1 つ使用する Web コンテナが起動されていなければ、mod_jk コネクタは起動できません。

  5. 次のコマンドを実行して、HTTP リスナーを作成します。


    asadmin> create-http-listener --listenerport 8009 
    --listeneraddress 0.0.0.0 --defaultvs server listener-name
    
  6. 次のコマンドを実行して、mod_jk を有効にします。


    asadmin> set server-config.network-config.network-listeners.
    network-listener.listener-name.jk-enabled=true
    

    listener-name は、mod_jk を有効にするネットワークリスナーの ID です。

  7. glassfish-jk.properties ファイルを使用していて、httpd.conf でこのファイルを参照していない場合は、次のコマンドを実行してファイルの場所を指定します。


    asadmin> create-jvm-options -Dcom.sun.enterprise.web.connector.enableJK.propertyFile=
    domain-dir/config/glassfish-jk.properties
    
  8. 変更内容を適用するために、Enterprise Server を再起動します。

    「ドメインの再起動」を参照してください。


例 6–4 mod_jk を使用する場合の httpd.conf ファイルの設定

この例では、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


例 6–5 mod_jk を使用する場合の worker.properties ファイルの設定

この例では、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/ を参照してください。

Proceduremod_jk と Enterprise Server を使用して負荷分散する

負荷分散は、1 台のコンピュータで実行しなければならない作業を複数のコンピュータに分配し、同じ時間でより多くの作業を行う処理です。

  1. 「mod_jk を有効にする」の手順を実行します。

  2. 少なくとも 1 つの Web アプリケーションが配備されている、別の Enterprise Server を起動します。

    配備済み Web アプリケーションを少なくとも 1 つ使用する Web コンテナが起動されていなければ、mod_jk コネクタは起動できません。

  3. 次のようなコマンドを実行して、HTTP リスナーを作成します。


    asadmin> create-http-listener --listenerport 8010 --listeneraddress 0.0.0.0 
    --defaultvs server my-connector
    

    複数のインスタンスが同じマシンで動作している場合は、別の JK ポートを選択する必要があります。ポートは worker.properties ファイルの worker.worker*.port に一致する必要があります。以下のプロパティーファイルの例を参照してください。

  4. 次のコマンドを実行して、mod_jk を有効にします。


    asadmin> set server-config.network-config.network-listeners.
    network-listener.listener-name.jk-enabled=true
    

    listener-name は、mod_jk を有効にするネットワークリスナーの ID です。

  5. 変更を適用するには、Apache と Enterprise Server を再起動します。

    「ドメインの再起動」を参照してください。


例 6–6 負荷分散を行う場合の httpd.conf ファイルの設定

この例では、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


例 6–7 負荷分散を行う場合の worker.properties ファイルの設定

この例では、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