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

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

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

この構成では、Web サーバーと Jboss アプリケーション サーバーの間に配置された BIG IP (F5) ロード バランサーを使用しています。

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

Apache がアプリケーション サーバーの URL をキャッシュしているようで、フェイルオーバーの発生後に Web サーバーの 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>

どこか間違っている場合は訂正してください。どんな助けでもありがたいです。ありがとうございます。

答え1

インターネットでいろいろ調べた結果、昨日問題を解決することができました。問題は DNS キャッシュにあるようです。私の Apache サーバーはフェイルオーバーの際に DNS エントリを解決できず、古い DNS エントリを使用して、障害が発生したノードを指していました。Apache サーバーを再起動すると、正しい DNS エントリを解決でき、完全に正常に動作します。フェイルオーバーの際に Apache サーバーを再起動しなくても済むように、1 つのパラメータを使用しました。"disablereuse=オン"ProxyPass パラメータは以下のとおりです:ProxyPass / https:// myapp.abc.stg.asd:8443/disablereuse=on 現在、フェイルオーバーが発生した場合でも Apache は正常に動作します。

関連情報