2.2. Apache HTTP Server および mod_jk を使用した負荷分散の設定


mod_jk コネクターを使用して Apache HTTP Server の負荷分散を設定できます。本項のタスクにしたがって、mod_jk を使用して負荷分散を設定します (ワーカーノードの設定を含む)。

設定ファイルのサンプルは mod_jk 用で、JBCS_HOME/httpd/conf.d/ にあります。設定ファイルのサンプルは mod_jk.conf.sampleworkers.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 の設定

  1. 新しいファイル 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 に転送できます。

  2. 任意: JKMountFile ディレクティブ

    JkMount ディレクティブの他に、JkMountFile ディレクティブを使用してマウントポイントの設定ファイルを指定できます。設定ファイルには、Tomcat 転送の複数の URL マッピングが含まれます。

    1. JBCS_HOME/httpd/conf.d/ に移動し、 uriworkermap.properties というファイルを作成します。
    2. 以下の構文例をガイドとして使用し、転送する 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
    3. 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
  3. 任意: 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 ワーカーノード定義を示しています。

mod_jk ワーカーノードを設定するには以下を行います。

  1. JBCS_HOME/httpd/conf.d/ に移動し、 workers.properties というファイルを作成します。
  2. 以下の設定を 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 に設定されたワーカー名に一致する必要があります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.