Na prośbę pewnego Damiana opisuję sposób instalacji LoadBalancera mod_proxy z obsługą php sticky sessions.
Jeśli mamy już zainstalowanego Apache’a, to musimy załadować moduł mod_proxy_balancer. Najpierw sprawdźmy, czy takowy moduł nie jest już uruchomiony:
# apache2ctl -M | grep balancer
Jeżeli żaden wynik nie zostanie zwrócony, to musimy załadować ten moduł ręcznie (do autostartu):
# a2enmod proxy_balancer
/etc/init.d/apache2 restart
Konfigurujemy naszego load balancera:
/etc/apache2/sites-enabled/default:
RewriteEngine On
RewriteCond %{HTTPS} !=onProxyRequests off
ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/ stickysession=BALANCEID nofailover=Off
BalancerMember http://lb-member01:80 route=http1 connectiontimeout=300 timeout=300
BalancerMember http://lb-member02:80 route=http2 connectiontimeout=300 timeout=300Order Deny,Allow
Deny from none
Allow from allProxySet lbmethod=byrequests
Jak możemy zauważyć na powyższym przykładzie mamy dwa hosty w loadbalancerze lb-member1 i lb-member2 z metodą loadbalancingu byrequests (request do loadbalancera utrzymywany na danym serwerze per stickysession).
Pozostaję nam konfiguracja hostów pod loadbalancerem aby nasze stickysessions działało poprawnie.
Konfigurujemy apache2 VirtualHost dla danej domeny i dla uproszczenia sprawy skorzystamy z pliku .htaccess dla konfiguracji stickysessions:
BALANCEID to w naszym wypadku zmienna która przyjmuję wartość podaną przez route w konfiguracji BalancerMember, tak więc do pliku .htaccess na serwerze lb-member01 dodajemy:
RewriteRule .* – [CO=BALANCEID:balancer.http1:.$_DOMENA_$]
Na serwerze lb-member02:
RewriteEngine On
RewriteBase /
RewriteRule .* – [CO=BALANCEID:balancer.http2:.$_DOMENA_$]
To powinno wystarczyć do konfiugracji prostego loadbalancera z dwoma hostami pod nim korzystającego ze stickysessions.
Enjoy!
1 odpowiedź na mod_proxy_balancer z obsługą php sticky sessions