17.8.2. Apache HTTP Server への mod_proxy HTTP コネクターのインストール
概要
mod_proxy
は、Apache が提供する負荷分散モジュールです。このタスクは基本的な設定を示します。詳細設定、または詳細については、Apache の mod_proxy
ドキュメント https://httpd.apache.org/docs/2.2/mod/mod_proxy.html を参照してください。JBoss EAP 6 の観点からした mod_proxy
の詳細は、「Apache mod_proxy HTTP コネクター 」 および 「HTTP コネクターの概要」 を参照してください。
前提条件
- JBoss Enterprise Web Server から、またはオペレーティングシステムが提供する Apache HTTP サーバーをインストールする必要があります。スタンドアロン Apache HTTP Server は、Red Hat カスタマーポータル(JBoss EAP 6 のダウンロードエリア)の個別ダウンロードとして提供されます。この Apache HTTP サーバーを使用する場合は、「Red Hat Enterprise Linux 5、6、7 への Apache HTTP Server のインストール(Zip)」 を参照してください。
mod_proxy
モジュールをインストールする必要があります。Apache HTTP サーバーには通常、すでに含まれているmod_proxy
モジュールが同梱されています。これは、Red Hat Enterprise Linux と、JBoss Enterprise Web Server に同梱される Apache HTTP Server の場合です。- Apache HTTP Server 設定を変更するには、
root
または管理者権限が必要です。 - この例では、JBoss EAP 6 が HTTP または HTTPS Web コネクターで設定されていることを前提としています。これは Web サブシステム設定の一部です。Web サブシステムの設定に関する詳細は、「Web サブシステムの設定」 を参照してください。
httpd で
mod_proxy
モジュールを有効にします。HTTPD_CONF/httpd.conf
ファイルで以下の行を見つけます。存在しない場合は、下部に追加します。行が存在していても、コメント(#)文字で始まる場合は、文字を削除します。その後ファイルを保存します。通常、モジュールはすでに存在し、有効になっています。LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so # Uncomment these to proxy FTP or HTTPS #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so #LoadModule proxy_connect_module modules/mod_proxy_connect.so
Copy to clipboardCopiedLoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so # Uncomment these to proxy FTP or HTTPS #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so #LoadModule proxy_connect_module modules/mod_proxy_connect.so
非負荷分散プロキシーを追加します。
以下の設定を、その他の <VirtualHost
> ディレクティブのすぐ下にあるHTTPD_CONF/httpd.conf
ファイルに追加します。値を設定に適切な値に置き換えます。この例では、仮想ホストを使用します。デフォルトの httpd 設定を使用するには、次の手順を参照してください。<VirtualHost *:80> # Your domain name ServerName Domain_NAME_HERE ProxyPreserveHost On # The IP and port of JBoss EAP 6 # These represent the default values, if your httpd is on the same host # as your JBoss EAP 6 managed domain or server ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ # The location of the HTML files, and access control information DocumentRoot /var/www <Directory /var/www> Options -Indexes Order allow,deny Allow from all </Directory> </VirtualHost>
Copy to clipboardCopied<VirtualHost *:80> # Your domain name ServerName Domain_NAME_HERE ProxyPreserveHost On # The IP and port of JBoss EAP 6 # These represent the default values, if your httpd is on the same host # as your JBoss EAP 6 managed domain or server ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ # The location of the HTML files, and access control information DocumentRoot /var/www <Directory /var/www> Options -Indexes Order allow,deny Allow from all </Directory> </VirtualHost>
変更後に、ファイルを保存します。負荷分散プロキシーを追加します。
mod_proxy
をロードバランサーとして使用し、ワークを複数の JBoss EAP 6 インスタンスに送信するには、以下の設定をHTTPD_CONF/httpd.conf
ファイルに追加します。IP アドレスの例は以下のようになります。ご使用の環境に適切な値に置き換えてください。<Proxy balancer://mycluster> Order deny,allow Allow from all # Add each JBoss Enterprise Application Server by IP address and port. # If the route values are unique like this, one node will not fail over to the other. BalancerMember http://192.168.1.1:8080 route=node1 BalancerMember http://192.168.1.2:8180 route=node2 </Proxy> <VirtualHost *:80> # Your domain name ServerName YOUR_DOMAIN_NAME ProxyPreserveHost On ProxyPass / balancer://mycluster/ # The location of the HTML files, and access control information DocumentRoot /var/www <Directory /var/www> Options -Indexes Order allow,deny Allow from all </Directory> </VirtualHost>
Copy to clipboardCopied<Proxy balancer://mycluster> Order deny,allow Allow from all # Add each JBoss Enterprise Application Server by IP address and port. # If the route values are unique like this, one node will not fail over to the other. BalancerMember http://192.168.1.1:8080 route=node1 BalancerMember http://192.168.1.2:8180 route=node2 </Proxy> <VirtualHost *:80> # Your domain name ServerName YOUR_DOMAIN_NAME ProxyPreserveHost On ProxyPass / balancer://mycluster/ # The location of the HTML files, and access control information DocumentRoot /var/www <Directory /var/www> Options -Indexes Order allow,deny Allow from all </Directory> </VirtualHost>
上記の例はすべて HTTP プロトコルを使用して通信します。適切なmod_proxy
モジュールを読み込む場合は、AJP または HTTPS プロトコルを使用できます。詳細は Apache のmod_proxy
ドキュメント http://httpd.apache.org/docs/2.2/mod/mod_proxy.html を参照してください。スティッキーセッションを有効にします。
スティッキーセッション は、クライアントリクエストが特定の JBoss EAP 6 ワーカーに送信されると、利用できない場合を除き、今後のすべてのリクエストが同じワーカーに送信されます。これはほとんどの場合正しい動作です。mod_proxy
のスティッキーセッションを有効にするには、stickysession
パラメーターをProxyPass
ステートメントに追加します。この例では、使用できるその他のパラメーターも示します。詳細は、Apache のmod_proxy
ドキュメント( http://httpd.apache.org/docs/2.2/mod/mod_proxy.html )を参照してください。ProxyPass /MyApp balancer://mycluster stickysession=JSESSIONID lbmethod=bytraffic nofailover=Off
Copy to clipboardCopiedProxyPass /MyApp balancer://mycluster stickysession=JSESSIONID lbmethod=bytraffic nofailover=Off
Web サーバーを再起動します。
Web サーバーを再起動して変更を有効にします。
結果
標準または負荷分散設定のいずれかで、mod_proxy
を使用してクライアントリクエストを JBoss EAP 6 インスタンスに送信するよう Apache HTTP サーバーが設定されます。JBoss EAP 6 がこれらのリクエストに応答するように設定するには、「外部 Web サーバーからの要求を許可するよう JBoss EAP 6 を設定」 を参照してください。