第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 にアクセスすると、次のようなものが表示されます (この場合、$LOCATION はmod_cluster-handler
としても定義されます)。
Transferred はワーカーノードに送られた POST データに該当します。Connected は、このステータスページが要求されたときに処理された要求数に該当します。Sessions はアクティブなセッション数に該当します。このフィールドは
Maxsessionid
が 0
の場合は存在しません。
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
- 定義された
Alias
がServerName
に対応することを確認するか定義します。次の値は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
であり、address はAdvertiseGroupAddress
に該当し、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
です。