3.3. mod_proxy_cluster を使用する場合の Apache HTTP Server 負荷分散設定


Apache HTTP Server 2.1 以降のバージョンでは、mod_proxy_cluster はデフォルトで Apache HTTP Server 用に正しく設定されています。カスタム設定の設定の詳細は、基本プロキシーサーバー の設定を参照してください。

mod_proxy_cluster のサンプル設定ファイル

mod_proxy_cluster を Red Hat JBoss Core Services (JBCS) 経由でインストールしたか、Red Hat Enterprise Linux (RHEL) Application Streams を使用してインストールしたかに応じて、次のガイドラインを考慮してください。

  • JBCS の場合、JBCS_HOME/httpd/conf.d/ ディレクトリーに mod_proxy_cluster のサンプル設定ファイルがあります。
  • RHEL の場合、/etc/httpd/conf.d/ ディレクトリーに mod_proxy_cluster のサンプル設定ファイルがあります。

mod_proxy_cluster のサンプル設定ファイルの名前は mod_proxy_cluster.conf.sample です。独自の設定ファイルを作成する代わりにこれらのサンプルを使用する場合は、.sample 拡張子を削除し、必要に応じてファイルの内容を変更します。

注記

また、Red Hat Customer Portal の Load Balancer Configuration ツールを使用して、mod_proxy_cluster および Tomcat ワーカーノードに最適な設定テンプレートをすばやく生成することもできます。Apache HTTP Server 2.4.62 のロードバランサー設定ツールを使用する場合は、Apache バージョンに 2.4.x を、バックエンド設定に Tomcat/JWS を選択してください。

mod_proxy_cluster の使用に関するガイドライン

mod_proxy_cluster コネクターを使用する場合は、次のガイドラインを考慮してください。

  • mod_proxy_cluster コネクターを使用する場合は、mod_proxy モジュールを有効にして、mod_proxy_balancer モジュールを無効にする必要があります。
  • mod_proxy_cluster で Apache JServ Protocol (AJP) を使用する場合は、proxy_ajp_module を有効にする必要があります。
  • AJPSecret your_secret を使用して、AJP バックエンドのシークレットを指定します。your_secret がバックエンドで設定された値に対応していない場合には、このバックエンドでは、プロキシー経由で送信される全要求に対して 503 エラー応答を送信します。
注記

Red Hat JBoss Core Services 2.4.62 では、バックエンドの websockets サーバーに対する接続がアップグレードされていない場合に、その接続のトンネリングはサポートされません。つまり、mod_proxy_wstunnel モジュールの ProxyPass ディレクティブを設定するときに、アップグレードパラメーターが NONE に設定されていないことを確認する必要があります。mod_proxy_wstunnel の詳細は、Apache のドキュメント を参照してください。

3.3.1. 基本のプロキシーサーバーの設定

Web クライアントとバックエンド Web サーバーの間で要求と応答を転送するプロキシーサーバーとして機能するように Apache HTTP Server を設定できます。バックエンドのワーカーノードから接続要求と応答を受信するには、プロキシーサーバーリスナーを設定する必要があります。mod_proxy_cluster を使用する負荷分散プロキシーサーバーを設定する場合は、管理チャネル用の仮想ホストも設定する必要があります。

前提条件

手順

  1. Apache HTTP Server 設定ディレクトリーに移動します。

    • JBCS Apache HTTP Server を使用している場合は、JBCS_HOME/httpd/conf.d ディレクトリーに移動します。
    • RHEL Apache HTTP Server を使用している場合は、/etc/httpd/conf.d ディレクトリーに移動します。
  2. mod_proxy_cluster.conf ファイルを開きます。
  3. プロキシーサーバーの Listen ディレクティブを作成するには、mod_proxy_cluster.conf ファイルに次の行を入力します。

    Listen IP_ADDRESS:PORT_NUMBER
    Copy to Clipboard Toggle word wrap
    注記

    上記の例では、プロキシーサーバーがワーカーノードと通信するために使うサーバーネットワークインターフェイスのアドレスに IP_ADDRESS をプロキシーサーバーがワーカーノードと通信するのに使うサーバーネットワークインターフェイスのアドレスに、をプロキシーサーバーがリッスンするポートに置き換えてください。PORT_NUMBER をプロキシーサーバーがリッスンするポートに置き換えます。

    着信 TCP 接続用にポートが開いていることを確認します。

  4. 仮想ホストを作成するには、mod_proxy_cluster.conf ファイルに次の詳細を入力します。

    <VirtualHost IP_ADDRESS:PORT_NUMBER>
       DirectoryIndex disabled
       <Location />
          Require ip IP_ADDRESS
       </Location>
    
       KeepAliveTimeout 60
       MaxKeepAliveRequests 0
    
       ManagerBalancerName mycluster
       AdvertiseFrequency 5
       EnableMCMPReceive On
    
       <Location /mod_cluster_manager>
          SetHandler mod_cluster-manager
          Require ip IP_ADDRESS
       </Location>
    
    </VirtualHost>
    Copy to Clipboard Toggle word wrap
    重要

    仮想ホストで EnableMCMPReceive ディレクティブを指定する場合、Apache HTTP Server では、仮想ホスト定義で Directory 要素ではなく、常に Location 要素を使用する必要があります。JBCS 2.4.62 以降、Apache HTTP Server は、同じ仮想ホスト内での Directory 要素と EnableMCMPReceive ディレクティブの使用をサポートしていません。同じ仮想ホスト内で Directory 要素と EnableMCMPReceive ディレクティブを指定すると、Apache HTTP Server は起動に失敗し、代わりに Location 要素を使用する必要があることを示すエラーがログに記録されます。起動エラーは、以前のリリースと互換性のない重大な変更として、JBCS 2.4.62 で導入されました。

    注記

    前の例で、IP_ADDRESSPORT_NUMBER を、Listen ディレクティブに指定したサーバーネットワークインターフェイスのアドレスとポート番号に置き換えます。

    このアドレスとポートの組み合わせは、mod_proxy_cluster 管理メッセージにのみ使用されます。このアドレスとポートの組み合わせは、一般的なトラフィックには使用されません。

Apache HTTP Server サービスの開始に関する詳細は、Red Hat JBoss Core Services Apache HTTP Server インストールガイド を参照してください。

3.3.1.1. サーバー広告の無効化

プロキシーサーバーは、UDP マルチキャストを使用して自身をアドバタイズします。AdvertiseFrequency ディレクティブは、デフォルトでサーバー通知メッセージを 10 秒ごとに送信するようにサーバーに指示します。サーバー通知メッセージには、VirtualHost 定義で指定した IP_ADDRESSPORT_NUMBER が含まれています。サーバーアドバタイズに応答するように設定されたワーカーノードは、この情報を使用してプロキシーサーバーに登録されます。ワーカーノードがプロキシーサーバーに登録されないようにする場合は、オプションでサーバーアドバタイズメントを無効にすることができます。

注記

プロキシーサーバーとワーカーノードの間で UDP マルチキャストが使用可能な場合、サーバーアドバタイズメントは、プロキシーサーバーでさらに設定する必要なく、ワーカーノードを追加します。サーバーアドバタイズには、ワーカーノードでの最小限の設定のみが必要です。

手順

  1. Apache HTTP Server 設定ディレクトリーに移動します。

    • JBCS Apache HTTP Server を使用している場合は、JBCS_HOME/httpd/conf.d ディレクトリーに移動します。
    • RHEL Apache HTTP Server を使用している場合は、/etc/httpd/conf.d ディレクトリーに移動します。
  2. mod_proxy_cluster.conf ファイルを開きます。
  3. 次のディレクティブを VirtualHost 定義に追加します。

    ServerAdvertise Off
    Copy to Clipboard Toggle word wrap
    注記

    サーバーのアドバタイズが無効になっている場合や、UDP マルチキャストがプロキシーサーバーとワーカーノードの間のネットワークで利用できない場合、ワーカーノードをプロキシーサーバーの静的リストで設定します。いずれの場合も、ワーカーノードのリストを使用してプロキシーサーバーを設定する必要はありません。

3.3.1.2. ワーカーノードの詳細のログ記録

mod_proxy_cluster を使用する負荷分散プロキシーサーバーを設定する場合、必要に応じて、要求を処理する各ワーカーノードの詳細をログに記録するように Apache HTTP Server を設定できます。ワーカーノードの詳細をログに記録すると、ロードバランサーのトラブルシューティングが必要な場合に役立ちます。

手順

  1. Apache HTTP Server 設定ディレクトリーに移動します。

    • JBCS Apache HTTP Server を使用している場合は、JBCS_HOME/httpd/conf.d ディレクトリーに移動します。
    • RHEL Apache HTTP Server を使用している場合は、/etc/httpd/conf.d ディレクトリーに移動します。
  2. mod_proxy_cluster.conf ファイルを開きます。
  3. 次の詳細を Apache HTTP Server の LogFormat ディレクティブに追加します。

    %{BALANCER_NAME}e ::
    The name of the balancer that served the request.
    
    %{BALANCER_WORKER_NAME}e ::
    The name of the worker node that served the request.
    Copy to Clipboard Toggle word wrap

3.3.2. mod_proxy_cluster での JBoss Web Server ワーカーノードの設定

mod_proxy_cluster を使用すると、バックエンドワーカーノードを非クラスターモードのみで動作する JBoss Web Server Tomcat サービスとして設定できます。この状況で mod_proxy_cluster が負荷分散係数の計算で同時に使用できる負荷メトリクスは 1 つだけです。

注記

JBoss Web Server ワーカーノードは、mod_proxy_cluster 機能のサブセットのみをサポートします。完全な mod_proxy_cluster 機能は JBoss EAP で利用できます。

手順

  1. JBoss Web Server にリスナーを追加するには、JWS_HOME/tomcat <VERSION>/conf/server.xml ファイルで、他の Listener 要素の下に次の Listener 要素を追加します。

    <Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="true" stickySession="true" stickySessionForce="false" stickySessionRemove="true" />
    Copy to Clipboard Toggle word wrap
  2. ワーカーノードに一意のアイデンティティーを与えるには、JWS_HOME/tomcat <VERSION>/conf/server.xml ファイルで、jvmRoute 属性と値を Engine 要素に追加します。

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker01">
    Copy to Clipboard Toggle word wrap
  3. STATUS MCMP メッセージの頻度を設定するには、org.jboss.modcluster.container.catalina.status-frequency Java システムプロパティーを変更します。

    以下に例を示します。

    -Dorg.jboss.modcluster.container.catalina.status-frequency=6
    Copy to Clipboard Toggle word wrap
    注記

    JBoss Web Server は、現在の負荷ステータスを含むステータスメッセージを Apache HTTP Server バランサーに定期的に送信します。これらのメッセージのデフォルトの頻度は 10 秒です。数百のワーカーノードがある場合、STATUS MCMP メッセージによって Apache HTTP Server ネットワークのトラフィック輻輳が増える可能性があります。

    MCMP メッセージ頻度を設定するには、org.jboss.modcluster.container.catalina.status-frequency Java システムプロパティーを変更します。デフォルトでは、プロパティーは秒単位で指定された値を 10 倍して受け入れます。たとえば、プロパティーを 1 に設定すると 10 秒になります。前の例では、プロパティーは 6 に設定されており、これは 60 秒を意味します。

  4. オプション: プロキシーサーバーのアドバタイズ用にファイアウォールを設定するには、次のいずれかの手順を実行して、ワーカーノードのファイアウォールで UDP 接続用のポート 23364 を開きます。

    • RHEL の場合:

      firewall-cmd --permanent --zone=public --add-port=23364/udp
      Copy to Clipboard Toggle word wrap
    • PowerShell を使用する Windows Server の場合:

      Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList '-command "NetSh Advfirewall firewall add rule name="UDP Port 23364" dir=in  action=allow protocol=UDP localport=23364"'
      Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList '-command "NetSh Advfirewall firewall add rule name="UDP Port 23364" dir=out action=allow protocol=UDP localport=23364"'
      Copy to Clipboard Toggle word wrap
      注記

      プロキシーサーバーが mod_proxy_cluster を使用する場合、プロキシーサーバーは UDP マルチキャストを使用して自身をアドバタイズできます。ほとんどのオペレーティングシステムのファイアウォールは、デフォルトでサーバーアドバタイズメント機能をブロックします。サーバーアドバタイズメントを有効にしてこれらのマルチキャストメッセージを受信するには、前述の例に示すように、ワーカーノードのファイアウォールで UDP 接続用にポート 23364 を開くことができます。

3.3.3. プロキシーサーバーの静的リストを操作するためのワーカーノードの設定

サーバーアドバタイズメントにより、ワーカーノードがプロキシーサーバーを動的に検出して登録できるようになります。UDP マルチキャストが利用できない場合、またはサーバーアドバタイズメントが無効になっている場合は、プロキシーサーバーのアドレスとポートの静的リストを使用して JBoss Web Server ワーカーノードを設定する必要があります。

手順

  1. JWS_HOME/tomcat<VERSION>/conf/server.xml ファイルを開きます。
  2. mod_proxy_cluster リスナーを定義して動的プロキシー検出を無効にするには、ModClusterListenerListener 要素を追加または変更します。

    以下に例を示します。

    <Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="false" stickySession="true" stickySessionForce="false" stickySessionRemove="true"/>
    Copy to Clipboard Toggle word wrap
    注記

    advertise プロパティーを false に設定していることを確認してください。

  3. 静的プロキシーサーバーリストを作成するには、プロキシーのコンマ区切りリストを、IP_ADDRESS:PORT,IP_ADDRESS:PORT の形式で追加して、proxyList プロパティーを更新します。

    以下に例を示します。

    <Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="false" stickySession="true" stickySessionForce="false" stickySessionRemove="true" proxyList="10.33.144.3:6666,10.33.144.1:6666"/>
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat