第5章 プロキシサーバーコンポーネントのインストール

本章では JBoss Enterprise Web Server プロキシサーバーに JBoss HTTP Connector mod-cluster をインストールする方法を説明します。

5.1. Apache モジュール

本項では 「コンポーネント」 で説明した Apache プロキシサーバーモジュールに関する詳細な定義について説明します。これらのモジュールを タスク : プロキシサーバーコンポーネントをインストールする の一部として指定します。

5.1.1. mod_manager.so

Cluster Manager モジュールの mod_manager はノードからワーカーノード登録、ワーカーノード負荷データ、ワーカーノードのアプリケーションライフサイクルイベントなどのメッセージを受信し、認識します。
LoadModule manager_module modules/mod_manager.so
<VirtualHost> 要素で次の関連するディレクティブを定義することもできます。
MemManagerFile
mod_manager が設定の詳細を保存するファイルの場所を定義します。mod_manager はまた、共有メモリおよびロックファイルの生成されたキーに対しこの場所を使用します。これは絶対パスの名前でなければなりません。 このパスは NFS 共有ではなく、ローカルドライブにあることが推奨されます。デフォルト値は /logs/ です。
Maxcontext
JBoss mod_cluster が使用するコンテキストの最大数です。デフォルト値は 100 です。
Maxnode
JBoss mod_cluster が使用するワーカーノードの最大数です。デフォルト値は 20 です。
Maxhost
JBoss mod_cluster が使用するホスト (エイリアス) の最大数です。これはロードバランサの最大数でもあります。デフォルト値は 10 です。
Maxsessionid
保存されているアクティブなセッション識別子の最大数です。5 分以内にセッションから受信する情報がない場合はセッションはアクティブでないと見なされます。デフォルト値は 0 で、このロジックを無効にします。
ManagerBalancerName
ワーカーノードがロードバランサの名前を与えない場合に使用するロードバランサの名前です。デフォルト値は mycluster です。
PersistSlots
on に設定すると、ノード、エイリアス、コンテキストはファイルで永続化されます。デフォルト値は off です。
CheckNonce
on に設定すると、セッション識別子はそれらが一意であり以前に発生したことがないことを確認します。デフォルト値は on です。

警告

このディレクティブを off に設定することで、ご使用のサーバーをリプレーアタックに対し脆弱性を有するようにできます。
SetHandler
ハンドラを定義し、クラスタ内のワーカーノードに関する情報を表示します。これは Location 要素で定義されます。
<Location $LOCATION>
  SetHandler mod_cluster-manager
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1
</Location>
ブラウザで Location 要素に定義された $LOCATION にアクセスすると、次のようなものが表示されます (この場合、$LOCATIONmod_cluster-handler としても定義されます)。
Transferred はワーカーノードに送られた POST データに該当します。Connected は、このステータスページが要求されたときに処理された要求数に該当します。Sessions はアクティブなセッション数に該当します。このフィールドは Maxsessionid0 の場合は存在しません。

5.1.2. mod_proxy_cluster.so

Proxy Balancer Module の mod_proxy_cluster はクラスタノードに対し要求のルーティングを処理します。Proxy Balancer はクラスタ内のアプリケーションの場所、各クラスタノードの現在のステート、Session ID (要求が確率したセッションの一部の場合) に基づき、要求を転送する該当するノードを選択します。
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
<VirtualHost> 要素で次の関連するディレクティブを定義し、負荷分散の動作を変更することができます。

mod_proxy_cluster directives

CreateBalancers
Apache HTTP Server の仮想ホストでのロードバランサの作成方法について定義します。次の値は CreateBalancers で有効です。
0
Apache HTTP Server で定義されたすべての仮想ホストでロードバランサを作成します。ProxyPass ディレクティブでロードバランサを設定するようにしてください。
1
バランサを作成しません。この値を使用する場合は、ProxyPass または ProxyPassMatch でもロードバランサの名前を定義しなければなりません。
2
メインサーバーのみ作成します。これは CreateBalancers のデフォルト値です。
UseAlias
定義された AliasServerName に対応することを確認するか定義します。次の値は UseAlias で有効です。
0
ワーカーノードからの Alias 情報を無視します。これは 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 は Regular Expressions を使用して、プロキシされた URL が適用するべきローカルパスに適合します。
いずれのディレクティブの場合でも、! はある特定のパスがローカルであり、そのパスの要求がリモートサーバーにルーティングされるべきではないことを示しています。例えば、次のディレクティブは .gif ファイルがローカルに提供されることを指定します。
ProxyPassMatch ^(/.*\.gif)$ !

5.1.3. mod_advertise.so

Proxy Advertisement Module の mod_advertise.so は、UDP マルチキャストメッセージを介してプロキシサーバーの存在をブロードキャストします。サーバー告知のメッセージには、負荷分散クラスタに加わりたいノードからの応答に対しプロキシがリッスンする IP アドレスとポート番号が含まれています。
このモジュールは VirtualHost 要素の mod_manager に沿って定義されます。次のコードスニペットの識別子は advertise_module です。
LoadModule advertise_module modules/mod_advertise.so
mod_advertise は次のディレクティブを取ります。
ServerAdvertise
告知しているメカニズムの使用方法を定義します。
On に設定した場合、告知しているメカニズムを使用して、ワーカーノードにこのプロキシにステータス情報を送るよう指示します。次の構文 ServerAdvertise On http://hostname:port/ でホスト名とポートを指定することもできます。これが必要なのは、名前ベースの仮想ホストを使用する場合か、仮想ホストが定義されていない場合だけです。
デフォルト値は Off です。off に設定すると、プロキシはその場所を告知しません。
AdvertiseGroup
告知するマルチキャストのアドレスを定義します。構文は AdvertiseGroup address:port であり、addressAdvertiseGroupAddress に該当し、port はワーカーノードの AdvertisePort に該当するはずです。
ワーカーノードが JBoss Enterprise Application Platform ベースで、-u スイッチが起動時に使用される場合は、デフォルト AdvertiseGroupAddress-u スイッチにより渡された値です。
デフォルト値は 224.0.1.105:23364 です。port が指定されていないと、指定されるデフォルトのポートは 23364 です。
AdvertiseFrequency
IP アドレスとポートを告知するマルチキャストメッセージ間の秒単位の間隔です。デフォルト値は 10 です。
AdvertiseSecurityKey
JBoss Web の JBoss HTTP Connector mod_cluster を特定するために使用する文字列を定義します。デフォルトでは、このディレクティブは設定されておらず何も情報は送られません。
AdvertiseManagerUrl
プロキシサーバーに情報を送るためにワーカーノードが使用する URL を定義します。デフォルトでは、このディレクティブは設定されておらず何も情報は送られません。
AdvertiseBindAddress
マルチキャストメッセージを送るアドレスとポートを定義します。構文は AdvertiseBindAddress address:port です。これにより、複数の IP アドレスを使ってマシンにアドレスを指定できます。デフォルト値は 0.0.0.0:23364 です。