web-dev-qa-db-ja.com

BIG IP(f5)ロードバランサーで構成されたApache 2.2Webサーバーでアプリケーションフェイルオーバーが機能しない

クラスター構成でJBOSS5.2アプリケーションサーバーの前でApache2.2を使用しています。クラスター構成の2つのノードは、異なるホスト上にあります。この構成はLinuxサーバーでホストされています。

この設定では、WebサーバーとJbossアプリケーションサーバーの間にあるBIG IP(F5)ロードバランサーを使用しています。

アプリケーションサーバーの1つがフェイルオーバーした場合、負荷分散は正常に機能しており、クラスターの1つのノードから別のノードに要求をルーティングしています。しかし、私のApache Webサーバーは、クラスターの作業ノードに要求をルーティングできず、要求されているアプリケーションサーバーが追跡できないというエラーが表示されます。ただし、Apacheサーバーを再起動すると、正常に動作しているように見え、アプリケーションにアクセスできます。

フェイルオーバーが発生した後にWebサーバーのURLにアクセスしようとすると、ApacheがアプリケーションサーバーのURLをキャッシュしていて、キャッシュが更新されていないようです。

以下は私が使用しているhttpd.conf設定です:

<VirtualHost 10.38.205.100:443>
DocumentRoot /var/www
ErrorLog /etc/httpd/logs/error.log
TransferLog /etc/httpd/logs/access_log
CustomLog /etc/httpd/logs/ssl_access.log combined
# Enable Server on this Virtual Host
SSLEngine on
# Disable SSLV2 in  favour of more robust SSLV3
SSLProtocol all -SSLv2
# List of supported cryptografic server cipher suites
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
#Apache Server certificate
SSLCertificateFile /home/users/domain.com.ssl/MyWebServer.crt
#Apache server private key
SSLCertificateKeyFile /home/users/domain.com.ssl/MyWebServer.key
#Chain Certificate
SSLCertificateChainFile /home/users/domain.com.ssl/cat.txt
# It's mandatory for Apache to authenticate the client's certificates
SSLVerifyClient none
SSLVerifyDepth 10

ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
Order deny,allow
Allow from all
</Proxy>
## Load Balancer url : https://myapp.abc.stg.asd:8443/
SSLProxyEngine on
ProxyPass / https://myapp.abc.stg.asd:8443/
ProxyPassReverse / https://myapp.abc.stg.asd:8443/

<Location />
Order allow,deny
Allow from all
</Location>

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/gif "access plus 120 minutes"
ExpiresByType image/jpeg "access plus 120 minutes"
ExpiresByType image/png "access plus 120 minutes"
ExpiresByType text/css "access plus 60 minutes"
ExpiresByType text/javascript "access plus 60 minutes"
ExpiresByType application/x-javascript "access plus 60 minutes"
ExpiresByType text/xml "access plus 60 minutes"
</IfModule>
</VirtualHost>

どこか間違っていたら訂正してください。どんな助けでもいただければ幸いです。ありがとう.. !!

3
ITSME

インターネットでたくさん勉強した結果、昨日は問題を解決することができました。問題はDNSキャッシングにあるようです。私のApacheサーバーはフェイルオーバーの場合にDNSエントリを解決できず、古いDNSエントリを使用していて、失敗したノードを指しています。そして、Apacheサーバーを再起動すると、正しいDNSエントリを解決でき、完全に正常に機能します。フェイルオーバーの場合にApacheサーバーを再起動しないようにするために、1つのパラメーターを使用しました"disablereuse = On" Along ProxyPassパラメータを以下のように使用します:ProxyPass/https:// myapp.abc.stg.asd:8443/disablereuse = onフェイルオーバーの場合、Apacheは正常に動作しています。

2
ITSME