Konfigurieren Sie Tomcat mit Apache mithilfe des Proxy-Moduls und Sticky Session
Die Konfiguration von Tomcat Load Balancer mit Apache-Webserver mit Mod Proxy ist ganz einfach.
Es ist einfach, wenn Sie der Reihenfolge folgen, und alles geht gut. Ich habe im Folgenden Schritt für Schritt aufgeführt, wie Sie Apache mit Tomcat konfigurieren, um Load Balancer mit Mod Proxy zu konfigurieren.
Für eine bessere Verfügbarkeit wird in einer Produktionsumgebung immer ein Lastenausgleich empfohlen.
Inhaltsverzeichnis
Konfiguration des Apache-Webservers
- Aktivieren Sie proxy_module, proxy_balancer_module und proxy_http_module in httpd.conf des Apache-Webservers
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
Fügen Sie Proxy-Pass zusammen mit Balancer-Namen für Anwendungskontext-Root hinzu.
In diesem Beispiel habe ich einen Proxy-Pfad als Beispiel und einen Balancer-Namen als mycluster.
Es ist sehr wichtig, stickysession einzubeziehen, da ohne diese Option die gleiche Anfrage an mehrere Tomcat-Server verteilt wird und Sie Probleme mit dem Sitzungsablauf in einer Anwendung haben.
<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>
Wie Sie in der obigen Konfiguration sehen können, habe ich eine Route in BalancerMember hinzugefügt, damit der Routenwert an die Sitzungs-ID angehängt werden kann.
Lassen Sie uns nun Apache so konfigurieren, dass JSESSIONID in Zugriffsprotokollen gedruckt wird.
- Fügen Sie Folgendes in der LogFormat-Direktive hinzu
%{JSESSIONID}C
Ex:
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""%{JSESSIONID}C"" combined
- Starten Sie den Apache-Webserver neu
Tomcat-Konfiguration
Sie müssen Tomcat-Instanzen mit derselben Routen-ID konfigurieren, wie Sie es oben in BalancerMember getan haben.
- Fügen Sie den jvmRoute-Parameter in server.xml von Tomcat hinzu. Dies muss im Engine-Namens-Tag hinzugefügt werden.
Tomcat-Instanz konfiguriert mit Port 8080
<Engine name="Catalina" defaultHost="localhost" jvmRoute="server1">
Tomcat-Instanz konfiguriert mit Port 8090
<Engine name="Catalina" defaultHost="localhost" jvmRoute="server2">
Überprüfung
Generieren Sie eine gewisse Last für die Anwendung und überprüfen Sie das Zugriffsprotokoll des Apache-Servers, um sicherzustellen, dass Ihre Anfrage nur an eine Tomcat-Instanz weitergeleitet wird.
Sie werden auch feststellen, dass Ihre Sitzungs-ID an die Route angehängt wird, wie im folgenden Beispiel gezeigt.
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"
Ich hoffe, das hilft Ihnen bei der Konfiguration von Tomcat Load Balancer mit Apache Mod Proxy und Session Sticky.
Wenn Sie mehr über die Tomcat-Verwaltung erfahren möchten, überprüfen Sie dies Online Kurs.
Haben Sie den Artikel gerne gelesen? Wie wäre es mit der Welt zu teilen?