Томцат Лоад Баланцер са Апацхе-ом користећи Мод Проки и Сессион Стицки

Podešavanje Tomcat servera sa Apache-om koristeći Proxy Module i Sticky Session

Konfigurisanje load balancer-a za Tomcat pomoću Apache web servera i Mod Proxy-a je prilično jednostavno.

Lako je kada pratite korake i sve ide po planu. U nastavku su detaljni koraci kako konfigurisati Apache sa Tomcat-om za load balancing koristeći Mod Proxy.

U produkcionim okruženjima, balansiranje opterećenja se uvek preporučuje radi bolje dostupnosti.

Konfiguracija Apache web servera

  • Omogućite proxy_module, proxy_balancer_module i proxy_http_module u httpd.conf fajlu Apache web servera.
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Dodajte proxy prolaz zajedno sa imenom balancera za koren konteksta aplikacije.

U ovom primeru, proxy putanja je postavljena na ‘examples’, a ime balancera je ‘mycluster’.

Veoma je važno uključiti `stickysession` jer će, u suprotnom, zahtevi biti raspoređeni na više Tomcat servera, što može dovesti do problema sa isteklim sesijama u aplikaciji.

<IfModule proxy_module>
ProxyRequests Off
ProxyPass /examples balancer://mycluster stickysession=JSESSIONID
ProxyPassReverse /examples balancer://mycluster stickysession=JSESSIONID
<Proxy balancer://mycluster>
BalancerMember http://localhost:8080/examples route=server1
BalancerMember http://localhost:8090/examples route=server2
</Proxy>
</IfModule>

Kao što se može videti u gore navedenoj konfiguraciji, dodata je ruta u `BalancerMember` tako da se vrednost rute može dodati ID-u sesije.

Sada, podesimo Apache da štampa JSESSIONID u pristupnim logovima.

  • Dodajte sledeće u `LogFormat` direktivu:
%{JSESSIONID}C

Na primer:

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""%{JSESSIONID}C"" combined
  • Restartujte Apache web server.

Tomcat Konfiguracija

Morate da konfigurišete Tomcat instance sa istim ID-om rute kao što ste to uradili u `BalancerMember`-u iznad.

  • Dodajte parametar `jvmRoute` u `server.xml` fajl Tomcata. Ovo se mora dodati u oznaku sa imenom `Engine`.

Tomcat instanca konfigurisana na portu 8080:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="server1">

Tomcat instanca konfigurisana na portu 8090:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="server2">

Verifikacija

Generišite određeno opterećenje na aplikaciji i proverite pristupne logove Apache servera da biste se uverili da se zahtev preusmerava na samo jednu Tomcat instancu.

Takođe ćete primetiti da je vaš ID sesije dodat ruti, kao što je prikazano u primeru ispod.

Na primer:

127.0.0.1 - - [18/Sep/2013:10:02:02 +0800] "POST /examples/servlets/servlet/RequestParamExample HTTP/1.1" 200 662 "http://localhost/examples/servlets/servlet/RequestParamExample" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:06 +0800] "GET /examples/servlets/servlet/RequestInfoExample HTTP/1.1" 200 693 "http://localhost/examples/servlets/" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:17 +0800] "GET /examples/servlets/reqinfo.html HTTP/1.1" 200 3607 "http://localhost/examples/servlets/" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:20 +0800] "GET /examples/servlets/servlet/SessionExample HTTP/1.1" 200 1124 "http://localhost/examples/servlets/" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:26 +0800] "POST /examples/servlets/servlet/SessionExample HTTP/1.1" 200 1142 "http://localhost/examples/servlets/servlet/SessionExample" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:28 +0800] "GET /examples/servlets/servlet/SessionExample?dataname=fda&datavalue=fadaf HTTP/1.1" 200 1159 "http://localhost/examples/servlets/servlet/SessionExample" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B4EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:32 +0800] "GET /examples/servlets/servlet/SessionExample?dataname=foo&datavalue=bar HTTP/1.1" 200 1174 "http://localhost/examples/servlets/servlet/SessionExample?dataname=fda&datavalue=fadaf" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:36 +0800] "GET /examples/servlets/servlet/RequestHeaderExample HTTP/1.1" 200 1423 "http://localhost/examples/servlets/" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"

Nadam se da će vam ovo pomoći da konfigurišete Tomcat Load Balancer sa Apache Mod Proxy-jem i Session Sticky-jem.

Ako ste zainteresovani da saznate više o administraciji Tomcat-a, pogledajte ovaj online kurs.

Da li vam se dopao ovaj članak? Podelite ga sa drugima!