Tomcat Load Balancer med Apache med Mod Proxy och Session Sticky

Konfigurera Tomcat med Apache med proxymodul och Sticky Session

Att konfigurera Tomcat Load Balancer med Apache webbserver med Mod Proxy är ganska enkelt.

Det är enkelt när du följer sekvensen, och allt går bra. Jag har listat följande steg-för-steg om hur man konfigurerar Apache med Tomcat för att konfigurera Load Balancer med Mod Proxy.

Att ha lastbalanserat rekommenderas alltid i en produktionsmiljö för bättre tillgänglighet.

Apache webbserverkonfiguration

  • Aktivera proxy_module, proxy_balancer_module och proxy_http_module i httpd.conf på Apache webbserver
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

Lägg till proxypass tillsammans med balanseringsnamnet för programkontextroten.

I det här exemplet har jag en proxysökväg som exempel och balanseringsnamn som mycluster.

Mycket viktigt att inkludera stickysession eftersom att inte ha det här alternativet kommer att distribuera samma begäran till flera Tomcat-servrar, och du kommer att ha problem med sessionens utgång i en applikation.

<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>

Som du kan se i ovanstående konfiguration har jag lagt till en rutt i BalancerMember så ruttvärde kan läggas till sessions-ID.

Låt oss nu konfigurera Apache för att skriva ut JSESSIONID i åtkomstloggar.

  • Lägg till följande i LogFormat-direktivet
%{JSESSIONID}C

Ex:

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""%{JSESSIONID}C"" combined
  • Starta om Apache Web Server

Tomcat-konfiguration

Du måste konfigurera tomcat-instanser med samma rutt-id som du gjorde i BalancerMember ovan.

  • Lägg till jvmRoute-parametern i server.xml av Tomcat. Detta måste läggas till i motornamntaggen.

Tomcat-instans konfigurerad med 8080-port

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

Tomcat-instans konfigurerad med 8090-port

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

Verifiering

Generera en viss belastning på applikationen och kontrollera åtkomstloggen för apache-servern för att säkerställa att din begäran dirigeras till endast en tomcat-instans.

Du kommer också att märka att ditt sessions-ID är lagt till rutten som visas i exemplet nedan.

Ex:

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"

Jag hoppas att detta hjälper dig att konfigurera Tomcat Load Balancer med Apache Mod Proxy och Session Sticky.

Om du är intresserad av att lära dig om Tomcat-administration, kolla detta onlinekurs.

Gillade du att läsa artikeln? Vad sägs om att dela med världen?