Tomcat Load Balancer med Apache ved hjælp af Mod Proxy og Session Sticky

Konfigurer Tomcat med Apache ved hjælp af Proxy Module og Sticky Session

Konfiguration af Tomcat Load Balancer med Apache-webserver ved hjælp af Mod Proxy er ret nemt.

Det er nemt, når du følger rækkefølgen, og alt går godt. Jeg har listet følgende trin-for-trin om, hvordan man konfigurerer Apache med Tomcat til at konfigurere Load Balancer ved hjælp af Mod Proxy.

At have belastningsbalanceret anbefales altid i et produktionsmiljø for bedre tilgængelighed.

Apache-webserverkonfiguration

  • Aktiver proxy_module, proxy_balancer_module og proxy_http_module i httpd.conf på Apache-webserveren
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

Tilføj proxy-pass sammen med balancernavnet til applikationskontekstrod.

I dette eksempel har jeg en proxysti som eksempler og balancernavn som mycluster.

  Sådan indstilles WinRAR til automatisk at slette et arkiv efter udpakning

Meget vigtigt at inkludere stickysession, da ikke at have denne mulighed vil distribuere den samme anmodning til flere Tomcat-servere, og du vil have sessionsudløbsproblemer 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 ovenstående konfiguration, har jeg tilføjet en rute i BalancerMember, så ruteværdien kan tilføjes til sessions-ID.

Lad os nu konfigurere Apache til at udskrive JSESSIONID i adgangslogfiler.

  • Tilføj følgende i LogFormat-direktivet
%{JSESSIONID}C

Eks:

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

Tomcat-konfiguration

Du skal konfigurere tomcat-forekomster med samme rute-id, som du gjorde i BalancerMember ovenfor.

  • Tilføj jvmRoute parameter i server.xml af Tomcat. Dette skal tilføjes i Engine name tag.
  Sådan sender du helligdagsgaver i 'Animal Crossing: New Horizons'

Tomcat-instans konfigureret med 8080-port

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

Tomcat-instans konfigureret med 8090-port

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

Verifikation

Generer en vis belastning på applikationen, og tjek adgangslog for apache-serveren for at sikre, at din anmodning bliver dirigeret til kun én tomcat-instans.

Du vil også bemærke, at dit sessions-id er tilføjet til ruten som vist i eksemplet nedenfor.

Eks:

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"

Jeg håber, at dette hjælper dig med at konfigurere Tomcat Load Balancer med Apache Mod Proxy og Session Sticky.

  30 bedste gratis Chromecast-apps

Hvis du er interesseret i at lære om Tomcat-administration, så tjek dette online kursus.

Nydt at læse artiklen? Hvad med at dele med verden?