Apache como balanceador de carga - forçando uma interrupção na conexão persistente

2

Eu configurei um balanceador de carga com o Apache 2.2 via mod_proxy e mod_proxy_balancer. O balanceamento de carga funciona muito bem, mas há um caso em que não consigo encontrar nenhuma opção de configuração, ou seja, ao usar conexões persistentes com os servidores backend, quando um deles morre (desliga, falha, etc), as conexões existentes ainda tentam acessá-lo. Existe uma maneira de configurar o balanceador de carga do Apache para que ele saia ou recria as conexões para servidores de back-end mortos? No mundo LVS, o Ldirector tem uma opção sob o Proc FS, que rege exatamente isso:

/proc/sys/net/ipv4/vs/expire_quiescent_template

Quando isso é definido, sessões / conexões persistentes de um servidor back-end inoperante serão liberadas para que, na próxima solicitação do cliente, elas possam ser recriadas.

Existe algo semelhante no mundo do Apache?

Obrigado em adavnce!

Felicidades, Konstantin Boyanov

P.S. De que maneira o Apache verifica o status dos servidores de back-end? Ele tenta se conectar a alguma porta ou algo parecido? Seria ótimo se alguém pudesse dar um jeito nisso também!

Aqui está o meu arquivo de configuração do host virtual:

    ServerAdmin [email protected]     NomeDoServidor 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>

    
por Konstantin Boyanov 16.05.2013 / 16:43

0 respostas