我在集群配置中在 JBOSS 5.2 应用程序服务器前面使用 Apache 2.2。集群配置的两个节点位于不同的主机上。此配置托管在 Linux 服务器上。
在此配置中,我使用 BIG IP(F5)负载均衡器,它位于 Web 服务器和 Jboss 应用程序服务器之间。
如果某个应用服务器发生故障转移,负载平衡将正常工作,并将请求从群集的一个节点路由到另一个节点。但我的 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 服务器,我使用了一个参数“disablereuse=On”以及ProxyPass参数如下:ProxyPass / https:// myapp.abc.stg.asd:8443/ disablereuse=on 现在,apache 在故障转移的情况下可以正常工作。