Я установил балансировщик нагрузки с Apache 2.2 через mod_proxy и mod_proxy_balancer. Балансировка нагрузки работает нормально, но есть один случай, для которого я не могу найти никаких параметров конфигурации, а именно, при использовании постоянных подключений к внутренним серверам, когда один из них умирает (завершает работу, дает сбой и т. Д.), Существующие подключения к нему все еще пытаюсь получить к нему доступ. Есть ли способ настроить балансировщик нагрузки apache так, чтобы он завершал работу или повторно создавал соединения с мертвыми внутренними серверами? В мире LVS у Ldirector есть опция в Proc FS, которая управляет только этим:
/proc/sys/net/ipv4/vs/expire_quiescent_template
Когда это установлено, постоянные сеансы / соединения на мертвом внутреннем сервере будут сброшены, чтобы при следующем запросе клиента они могли быть воссозданы.
Есть ли что-то подобное в мире Apache?
Спасибо заранее!
Ура, Константин Боянов
P.S. Каким образом Apache проверяет состояние внутренних серверов? К какому-то порту пытается подключиться или что-то в этом роде? Было бы здорово, если бы кто-то мог пролить немного света и на это!
Вот мой файл конфигурации виртуального хоста:
ServerAdmin admin@mysite.com Имя сервера myapp.mysite.com
DocumentRoot /srv/www/vhosts/myapp.mysite.com
ErrorLog /var/log/apache2/myapp.mysite.com-error_log
CustomLog /var/log/apache2/myapp.mysite.com-access_log combined
HostnameLookups Off
UseCanonicalName Off
ServerSignature On
ScriptAlias /cgi-bin/ "/srv/www/vhosts/myapp.mysite.com/cgi-bin/"
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
</Location>
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from bmf.intern.netz
</Location>
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://myapp>
BalancerMember http://172.22.1.133:777/ loadfactor=10 route=1 connectiontimeout=200ms
BalancerMember http://172.22.1.134:777/ loadfactor=10 route=2 connectiontimeout=200ms
ProxySet stickysession=ROUTEID
ProxySet lbmethod=byrequests
</Proxy>
ProxyPass /balancer-manager !
ProxyPass /server-status !
ProxyPass / balancer://myapp/ lbmethod=byrequests
ProxyPassReverse / balancer://myapp/
<Directory "/srv/www/vhosts/myapp.mysite.com/cgi-bin">
AllowOverride None
Options +ExecCGI -Includes
Order allow,deny
Allow from all
</Directory>
<IfModule mod_userdir.c>
UserDir public_html
Include /etc/apache2/mod_userdir.conf
</IfModule>
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/srv/www/vhosts/myapp.mysite.com">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>