Strona 1 z 1

balancer - trzymanie sesji

: 11 kwietnia 2014, 09:40
autor: brandon
Jak mogę sobie ustawić na loadbalancerze, aby klient otrzymywał jeden serwer, nie był przerzucany pomiędzy balancingiem i raz lądował na jednym serwerze, raz na drugim? Np. aby cookie było przetrzymywane przez 15min sesji u klienta?
Konfigurację mam taką:

Kod: Zaznacz cały

[B][B]
ProxyPass / balancer://ssl/  stickysession=SESSION  nofailover=Off ProxyPassReverse /  balancer://ssl/  <Proxy balancer://ssl> Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED  BalancerMember [url=https://192.168.100.3:443]https://10.50.10.1:443[/URL] loadfactor=1 route=One connectiontimeout=500
BalancerMember [url=https://192.168.100.4:443]https://10.50.10.2:443[/URL] loadfactor=2 route=Two connectiontimeout=500 </Proxy>
[/B][/B]

: 11 kwietnia 2014, 20:47
autor: czarownik
Włącz sobie debug w konfiguracji vhosta i zobacz co mu przeszkadza,

z tego co pamiętam taka konfiguracja nie jest wpierana już przed mod proxy
http://httpd.apache.org/docs/2.2/mod/mo ... #proxypass

moja rada:

1. nie korzystaj z adresów ip tylko adresów domenowych.
2. spróbuj coś takiego
w regułach rewrite robisz taki wpis

Kod: Zaznacz cały


RewriteEngine On
RewriteRule .* – [CO=BALANCEID:balancer.www1:.sklep.pl]
RewriteRule .* – [CO=BALANCEID:balancer.www2:.sklep.pl]
w /etc/hosts

Kod: Zaznacz cały

10.50.10.2 www1.sklep.pl
10.50.10.3 www2.sklep.pl
w konfiguracji vhosta

Kod: Zaznacz cały

ProxyPass / balancer://cluster/ lbmethod=byrequests stickysession=BALANCEID
ProxyPassReverse / balancer://cluster/
<Proxy balancer://cluster>
  BalancerMember [url=http://www1.example.com]http://www1.sklep.pl[/URL] route=www1
  BalancerMember [url=http://www2.example.com]http://www2.sklep.pl[/URL] route=www2
</Proxy>

w logach za pierwszym razem powinieneś mieć (przy włączonej opcji debug)

Kod: Zaznacz cały

proxy: BALANCER: Found value (null) for stickysession BALANCEID
proxy: Entering byrequests for BALANCER (balancer://cluster)
Co znaczy ze apache nie znalazł jeszcze odpowiedniego ciasteczka i użyje algorytmu BYREQUEST

ale już za drugim razem powinieneś mieć

Kod: Zaznacz cały

proxy: BALANCER: Found value balancer.www1 for stickysession BALANCEID
proxy: BALANCER: Found route www1
proxy: BALANCER (balancer://cluster) worker ([url=http://www1.example.com]http://www1.sklep.pl[/URL]) 
rewritten to [url=http://www1.example.com/]http://www1.sklep.pl/[/URL]