Назад | Перейти на главную страницу

Отказ приложения не работает на веб-сервере apache 2.2, настроенном с балансировщиком нагрузки BIG IP (f5)

Я использую Apache 2.2 перед моим сервером приложений JBOSS 5.2 в конфигурации кластера. Два узла конфигурации кластера находятся на разных хостах. Эта конфигурация размещена на серверах Linux.

В этой конфигурации я использую балансировщик нагрузки BIG IP (F5), который находится между веб-сервером и серверами приложений Jboss.

В случае аварийного переключения одного из серверов приложений балансировка нагрузки работает нормально и направляет запрос от одного узла кластера к другому узлу. Но мой веб-сервер apache не может направить запрос на рабочий узел кластера и выдает ошибку о том, что запрашиваемый сервер приложений недоступен. Однако, когда я перезапускаю сервер apache, он, похоже, работает нормально, и я могу получить доступ к приложению.

Кажется, что apache кэширует URL-адрес сервера приложений, и кеш не обновляется, когда я пытаюсь получить доступ к 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>

Пожалуйста, поправьте меня, если я где-то ошибаюсь. Любая помощь будет оценена. Спасибо ..!!

После долгих поисков в Интернете вчера я смог решить проблему. Проблема, похоже, связана с кешированием DNS. Мой сервер apache не смог разрешить запись DNS в случае аварийного переключения, и он использовал устаревшую запись DNS и указывал на узел, который вышел из строя. И когда я перезапускаю сервер apache, он смог разрешить правильную запись DNS и отлично работает. Чтобы избавиться от перезапуска сервера apache в случае аварийного переключения, я использовал один параметр "disablereuse = Вкл." Вместе с параметром ProxyPass, как показано ниже: ProxyPass / https: // myapp.abc.stg.asd: 8443 / disablereuse = on Теперь apache работает нормально в случае отказа.