付録A Apache HTTP Server のリファレンス


A.1. Apache HTTP Server モジュール

このセクションでは、「mod_cluster コンポーネント」で説明されている Apache HTTP Server プロキシーモジュールの定義を拡張します。

A.1.1. mod_manager.so

クラスターマネージャーモジュール mod_manager は、ワーカーノードの登録、ワーカーノードの負荷データ、およびワーカーノードのアプリケーションのライフサイクルイベントなどのノードからメッセージを受信および確認します。

LoadModule manager_module modules/mod_manager.so

<VirtualHost> 要素の設定可能なディレクティブは以下のとおりです。

EnableMCPMReceive
VirtualHost がノードから (MCPM) を受信できるようにします。mod_cluster が正常に動作できるように、Apache HTTP Server 設定に EnableMCPMReceive ディレクティブを 1 つ追加します。advertise が設定された場所の VirtualHost 設定にEnableMCPMReceive を追加する必要があります。
MaxMCMPMaxMessSize
mod_cluster Management Protocol (MCMP) メッセージの最大サイズを定義します。デフォルト値は、他の Max ディレクティブから計算されます。最小値は 1024 です。
AllowDisplay
mod_cluster-manager メインページで追加表示を切り替えます。デフォルト値は off で、mod_cluster-manager メインページにはバージョン情報のみが表示されます。
AllowCmd
mod_cluster-manager URL を使用してコマンドのパーミッションを切り替えます。デフォルト値は on で、コマンドを許可します。
ReduceDisplay
mod_cluster-manager ページに表示される情報の縮減を切り替えます。情報を減らすと、ページでより多くのノードを表示できます。デフォルト値は off で、利用可能な情報をすべて表示することができます。
MemManagerFile
mod_manager が設定の詳細を保存するファイルの場所を定義します。mod_manager は、共有メモリーおよびロックファイルに生成された鍵にもこの場所を使用します。絶対パス名である必要があります。NFS 共有ではなく、ローカルドライブ上のこのパスを使用することが推奨されます。デフォルト値は /logs/ です。
Maxcontext
mod_cluster が使用するコンテキストの最大数。デフォルト値は 100 です。
Maxnode
mod_cluster が使用するワーカーノードの最大数。デフォルト値は 20 です。
Maxhost
mod_cluster が使用するホスト (エイリアス) の最大数。これは、ロードバランサーの最大数にもなります。デフォルト値は 20 です。
Maxsessionid
保存されたアクティブなセッション識別子の最大数。セッションから情報が 5 分間受信されない場合、セッションは非アクティブとみなされます。これはデモおよびデバッグの目的のみで使用されます。デフォルト値は 0 で、このロジックを無効にします。
ManagerBalancerName
ワーカーノードがロードバランサー名を指定しない場合に使用するロードバランサーの名前。デフォルト値は mycluster です。
PersistSlots
on に設定された場合、ノード、エイリアス、およびコンテキストはファイルに永続化されます。デフォルト値は off です。
CheckNonce

on に設定された場合、セッション識別子をチェックして、一意で、これまでに発生していないことを確認します。デフォルトは on です。

警告

このディレクティブを off に設定すると、サーバーがリプレイ攻撃に対して脆弱になります。

SetHandler mod_cluster-manager

ハンドラーを定義して、クラスター内のワーカーノードについての情報を表示します。これは、Location 要素で定義されます。

<Location $LOCATION>
  SetHandler mod_cluster-manager
  Require ip 127.0.0.1
</Location>

ブラウザーの Location 要素で定義された $LOCATION にアクセスすると、以下のような出力が表示されます。(この場合は、$LOCATIONmod_cluster-handler として定義されました。)

Transferred は、ワーカーノードに送信された POST データに一致します。Connected は、このステータスページが要求されたときに処理されたリクエストの数に対応します。Sessions はアクティブなセッションの数に対応します。Maxsessionid0 の場合、このフィールドは存在しません。

A.1.2. mod_proxy_cluster.so

プロキシーロードバランサーモジュール mod_proxy_cluster は、クラスターノードへの要求のルーティングを処理します。プロキシーバランサーは、クラスターのアプリケーションの場所、各クラスターノードの現在の状態、およびセッション ID (要求が確立されたセッションの一部である場合) に基づいて要求を転送するために適切なノードを選択します。

LoadModule proxy_cluster_module modules/mod_proxy_cluster.so

<VirtualHost> 要素に以下のディレクティブを設定して、負荷分散の動作を変更することもできます。

CreateBalancers

ロードバランサーが Apache HTTP Server の仮想ホストでどのように作成されるかを定義します。CreateBalancers では、以下の値が使用できます。

  • 0: Apache HTTP Server で定義されたすべての仮想ホストにロードバランサーを作成します。ProxyPass ディレクティブでロードバランサーを設定するのを忘れないようにしてください。
  • 1: バランサーを作成しません。この値を使用する場合は、ProxyPass または ProxyPassMatch にロードバランサー名を定義する必要もあります。
  • 2: メインサーバーのみ作成します。これは CreateBalancers のデフォルト値です。
UseAlias

定義された AliasServerName に対応するかどうかを定義します。UseAlias については、以下の値有効です。

  • 0: ワーカーノードのエイリアス情報を無視します。これは UseAlias のデフォルト値です。
  • 1: 定義されたエイリアスがワーカーノードのサーバー名に対応していることを確認します。
LBstatusRecalTime
ワーカーノードのステータスを計算するプロキシーの間隔 (秒単位) を定義します。デフォルトの間隔は 5 秒です。
ProxyPassMatch; ProxyPass

ProxyPass は、リモートサーバーをローカルサーバーの名前空間にマッピングします。ローカルサーバーに http://local.com/ のアドレスがある場合、ProxyPass ディレクティブは http://local.com/requested/file1 のローカルリクエストを http://worker.local.com/file1 のプロキシーリクエストに変換します。

ProxyPass /requested/ http://worker.local.com/

ProxyPassMatch は正規表現を使用して、プロキシーされた URL が適用されるローカルパスを照合します。

いずれかのディレクティブで、! は指定したパスがローカルであることを示します。そのパスのリクエストはリモートサーバーにルーティングしないでください。たとえば、以下のディレクティブは gif ファイルをローカルで提供するように指定します。

ProxyPassMatch ^(/.*\.gif)$ !

A.1.3. mod_advertise.so

mod_advertise.so は、UDP マルチキャストメッセージを介してプロキシーサーバーの存在をブロードキャストします。サーバーのアドバタイズメッセージには、プロキシーが負荷分散クラスターに参加するノードからの応答をリッスンする IP アドレスとポート番号が含まれます。

このモジュールは、VirtualHost 要素の mod_manager とともに定義する必要があります。以下の例の識別子は advertise_module です。

LoadModule advertise_module modules/mod_advertise.so

mod_advertise は、以下のディレクティブを使用して設定できます。

ServerAdvertise

アドバタイズメカニズムの使用方法を定義します。

デフォルト値は Off です。Off に設定すると、プロキシーはその場所を公開しません。

On に設定された場合、アドバタイズメカニズムを使用して、ワーカーノードがこのプロキシーにステータス情報を送信するように指示します。以下の構文でホスト名およびポートを指定することもできます: ServerAdvertise On http://HOSTNAME:PORT/これは、名前ベースの仮想ホストを使用する場合や、仮想ホストが定義されていない場合にのみ必要です。

AdvertiseGroup

アドバタイズするマルチキャストアドレスを定義します。構文は AdvertiseGroup ADDRESS:PORT です。ここでは、ADDRESSAdvertiseGroupAddress に一致し、PORT がワーカーノードの AdvertisePort に一致している必要があります。

ワーカーノードが JBoss EAP ベースで、起動時に -u スイッチが使用される場合、デフォルト値 AdvertiseGroupAddress-u スイッチ経由で渡されます。

デフォルト値は 224.0.1.105:23364 です。ポートが指定されていない場合、ポートはデフォルトで 23364 に設定されます。

AdvertiseFrequency
IP アドレスとポートをアドバタイズするマルチキャストメッセージの間隔 (秒単位)。デフォルト値は 10 です。
AdvertiseSecurityKey
JBoss Web Server で mod_cluster を特定するために使用される文字列を定義します。デフォルトでは、このディレクティブは設定されず、情報は送信されません。
AdvertiseManagerUrl
ワーカーノードが情報をプロキシーサーバーに送信するために使用する URL を定義します。デフォルトでは、このディレクティブは設定されず、情報は送信されません。
AdvertiseBindAddress
マルチキャストメッセージを送信するアドレスとポートを定義します。構文は AdvertiseBindAddress ADDRESS:PORT です。これにより、複数の IP アドレスを持つマシンにアドレスを指定できます。デフォルト値は 0.0.0.0:23364 です。

A.1.4. mod_proxy.so

mod_proxy.so は標準の Apache HTTP Server モジュールです。このモジュールにより、サーバーは AJP (Apache JServe Protocol)、FTP、CONNECT (SSL)、および HTTP で転送されるデータのプロキシーとして動作します。このモジュールに追加の設定は必要ありません。その識別子は proxy_module です。

ProxyIOBufferSize などの Mod_proxy ディレクティブは mod_cluster の設定に使用されます。

A.1.5. mod_proxy_ajp.so

mod_proxy_ajp.so は、AJP (Apache JServe Protocol) プロキシーのサポートを提供する標準の Apache HTTP Server モジュールです。このモジュールを使用するには、mod_proxy.so が必要です。

A.1.6. mod_cluster_slotmem

mod_cluster_slotmem には設定ディレクティブは必要ありません。

A.2. workers.properties

Apache HTTP Server ワーカーノードは、mod_jk ロードバランサーにマップされるサーブレットコンテナーです。ワーカーノードは JBCS_HOME/httpd/conf/workers.properties で定義されます。このファイルは、異なるサーブレットコンテナーの場所と、全体で呼び出しが負荷分散される方法を指定します。

workers.properties ファイルには、2 つのセクションが含まれます。

グローバルプロパティー
このセクションには、すべてのワーカーに適用されるディレクティブが含まれます。
ワーカープロパティー
このセクションには、各ワーカーに適用されるディレクティブが含まれます。

各ノードはワーカープロパティーの命名規則を使用して定義されます。ワーカー名には、小文字、大文字、数字、および特定の特殊文字 (_/) のみを含めることができます。

worker プロパティーの構造は worker.WORKER_NAME.DIRECTIVE です。

worker
すべてのワーカープロパティーの定数接頭辞。
WORKER_NAME
ワーカーに指定された任意の名前。たとえば、node1node_01Node_1 など。
DIRECTIVE
必要な特定のディレクティブ。

ワーカーノードの設定に必要な主なディレクティブは以下のとおりです。

注記

worker.properties 設定ディレクティブの完全リストは『Apache Tomcat Connector - Reference Guide』を参照してください。

worker.properties グローバルディレクティブ

worker.list

mod_jk によって使用されるワーカー名の一覧を指定します。この一覧のワーカーは、要求をマップするために利用できます。

注記

ロードバランサーによって管理されない単一ノード設定は worker.list=WORKER_NAME に設定する必要があります。

workers.properties 必須ディレクティブ

type

ワーカーに適用されるディレクティブを決定するワーカーのタイプを指定します。デフォルト値は ajp13 です。これは、Web サーバーと Apache HTTP Server 間の通信に選択するワーカータイプです。

その他の値には、lb および status が含まれます。

AJPv13 の詳細は、『Apache Tomcat Connector - AJP Protocol Reference』 を参照してください。

workers.properties 接続ディレクティブ

host

ワーカーのホスト名または IP アドレス。ワーカーノードは ajp13 プロトコルスタックをサポートする必要があります。デフォルト値は localhost です。

ホスト名または IP アドレスの後にポート番号を追加すると、port ディレクティブを host ディレクティブの一部として指定できます。たとえば、worker.node1.host=192.168.2.1:8009 または worker.node1.host=node1.example.com:8009 のようになります。

port
定義されたプロトコルリクエストをリッスンしているバックエンドサーバーインスタンスのポート番号。デフォルト値は 8009 で、AJPv13 ワーカーのデフォルトのリッスンポートです。
ping_mode

現在のネットワークの正常性に対して接続がプローブされる条件を指定します。

プローブは、CPing に空の AJPv13 パケットを使用し、指定のタイムアウト内で CPong を返すことを想定します。

ディレクティブフラグの組み合わせを使用して条件を指定します。フラグはカンマ区切りではありません。たとえば、正しいディレクティブフラグセットは worker.node1.ping_mode=CI です。

C - Connect (接続)。
サーバーへの接続後に接続がプローブされるよう指定します。connect_timeout ディレクティブを使用してタイムアウトを指定します。指定しない場合は、ping_timeout の値が使用されます。
P (プレポスト)
各リクエストをサーバーに送信する前に接続がプローブされることを指定します。prepost_timeout ディレクティブを使用してタイムアウトを指定します。指定しない場合は、ping_timeout の値が使用されます。
I - Interval (間隔)。
定期的な内部メンテナンスサイクル中に接続がプローブされることを指定します。connection_ping_interval ディレクティブを使用してインターバルでアイドルのタイムアウトを指定します。指定しない場合は、ping_timeout の値が使用されます。
A - All (すべて)。
すべてのディレクティブフラグが適用されることを指定する最も一般的な設定。高度なディレクティブ \*_timeout の詳細は、『Apache Tomcat Connector - Reference Guide』を参照してください。
ping_timeout
CPing 接続プローブへの CPong 応答を待つ時間を指定します (ping_mode を参照)。デフォルトの値は 10000 ミリ秒です。

worker.properties 負荷分散ディレクティブ

lbfactor

個別のワーカーの負荷分散係数を指定します。ロードバランサーのメンバーワーカーにのみ指定されます。

このディレクティブは、クラスター内の他のワーカーと比較して、ワーカーに分散される HTTP 要求負荷の相対量を定義します。

このディレクティブが適用される一般的な例は、クラスターで処理能力の高いサーバーを他のサーバーと区別する場合です。たとえば、あるワーカーに他のワーカーの 3 倍の負荷を割り当てる場合は worker.WORKER_NAME.lbfactor=3 を指定します。

balance_workers
ロードバランサーが管理する必要があるワーカーノードを指定します。ディレクティブは同じロードバランサーに複数回使用でき、workers.properties ファイルに指定されるワーカー名のコンマ区切りリストで構成されます。
sticky_session

SESSION ID を持つワーカーのリクエストが同じワーカーにルーティングされるかどうかを指定します。デフォルトは 0 (false) です。1 (true) に設定すると、ロードバランサーの永続性が有効になります。

たとえば、worker.loadbalancer.sticky_session=0 を指定する場合、各要求はクラスター内の各ノード間で負荷分散されます。つまり、同じセッションの異なるリクエストは、サーバーの負荷に基づいて異なるサーバーに送信できます。

worker.loadbalancer.sticky_session=1 を指定した場合は、セッションが終了するまで各セッションが 1 台のサーバーに永続化されます (そのサーバーが使用可能な場合)。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.