Szukaj na tym blogu

Postaram się przekazać swoje doświadczenia z PHP, oraz innych dziwnych rzeczach, typu MySQL, DB2. Czyli to co umiem. Blogoczytelników o słabych nerwach proszę o nieczytanie tego blogu. Dlaczego? Jeszcze nie wiem. W razie pytań z dziedziny PHP proszę pytać, jest cień możliwości że akurat to wiem. ;)

sobota, 24 marca 2012

Proxy balancer w Apache i jego konfiguracja

Mamy serwer z jedynym słusznym PHP, niestety sukces przerósł nas i maszyna dymi co zrobić? Postawić cztery! Jak to zrobić? Banalnie prosto.
Jednemu z czterech serwerów nadajemy mu ciężką funkcję balancera. Jeżeli jest jakieś logowanie przez HTTPS, albo inne tajne czynności, szyfruje strony tylko i wyłącznie ten serwer. Reszta serwerów o HTTPS'ie nie ma pojęcia że w ogóle takie coś jest. HTTPS zżera dość duże zasoby procesora. Tamte niech zajmują się liczeniem, kryptografia tylko balancer.
Załóżmy że nasz balancer ma IP 10.10.10.10 jako master of flamaster. Reszta od 10.10.10100 do 10.10.10.102. Nazywamy je sbn1, do sbn3 dla przykładu. Proponuje je nazwać inaczej i żeby nazwa mało co sugerowała.
W Apachu naszego balancera wpisujemy w httpd.conf, albo w jakimś naszym takie coś:

Header add Set-Cookie "IDB=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
ProxyPass / balancer://nasz_balancer/ stickysession=IDB scolonpathdelim=On nofailover=Off lbmethod=byrequests
ProxyPassReverse / balancer://nasz_balancer/
<Proxy balancer://nasz_balancer>
 BalancerMember http://10.10.10.100 route=sbn1
 BalancerMember http://10.10.10.101 route=sbn2
 BalancerMember http://10.10.10.102 route=sbn3
</Proxy>
Header add Set-Cookie jest linią bezcenną. Dodaje ciasto które może identyfikować który klient jest do którego naszego balancera, poza tym przekazuje ciastka choćby sesji PHP.
ProxyPass definiuje ruch od klienta do jednego z naszych serwerów.
ProxyPassReverse definiuje ruch z serwera do klienta. Jest to dość ważna rzecz zwłaszcza kiedy zamiast niezawodnego PHP mamy coś takiego jak Tomcat. Tomcaty charakteryzują się tym że projekt jest zawsze w jakimś katalogu. Żeby to ukryć piszemy to tak:

ProxyPass / balancer://nasz_balancer/nasz_projekt/ stickysession=IDB scolonpathdelim=On nofailover=Off lbmethod=byrequests
ProxyPassReverse / balancer://nasz_balancer/nasz_projekt/
Muszą być dwie linie, żeby nasz balancer przetłumaczył wszystkie nagłówki Apacha z http://www.naszastrona.pl/bla.html zrozumiała dla klienta, na http://10.10.10.100/nasz_projekt/bla/html zrozumiała dla Tomcata i odwrotnie.
<Proxy balancer://nasz_balancer> wpisujemy wszystkie nasze trzy serwery. BalancerMember http://ip:jak_inny_niż_80_to_podać_port route=naza_nazwa_serwera.
I.... to wszystko. Powodzenia.

Brak komentarzy:

Prześlij komentarz

Konstruktywne komentarze mile widziane.
Wulgaryzmy, obraźliwe stwierdzenia będą usuwane.