Tomcat Load Balancer με Apache χρησιμοποιώντας Mod Proxy και Session Sticky

Διαμόρφωση Tomcat με Apache χρησιμοποιώντας Proxy Module και Sticky Session

Η διαμόρφωση του Tomcat Load Balancer με τον διακομιστή ιστού Apache χρησιμοποιώντας το Mod Proxy είναι αρκετά εύκολη.

Είναι εύκολο όταν ακολουθείς τη σειρά και όλα πάνε καλά. Παραθέτω παρακάτω βήμα προς βήμα τον τρόπο ρύθμισης παραμέτρων του Apache με το Tomcat για τη διαμόρφωση του Load Balancer χρησιμοποιώντας το Mod Proxy.

Συνιστάται πάντα η εξισορρόπηση φορτίου σε περιβάλλον παραγωγής για καλύτερη διαθεσιμότητα.

Διαμόρφωση διακομιστή Web Apache

  • Ενεργοποίηση proxy_module, proxy_balancer_module και proxy_http_module στο httpd.conf του διακομιστή ιστού Apache
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

Προσθέστε πάσο διακομιστή μεσολάβησης μαζί με όνομα εξισορροπητή για τη ρίζα περιβάλλοντος εφαρμογής.

Σε αυτό το παράδειγμα, έχω μια διαδρομή διακομιστή μεσολάβησης ως παραδείγματα και όνομα εξισορροπητή ως mycluster.

  20 Συχνές ερωτήσεις και απαντήσεις για συνέντευξη SQL [2022]

Είναι πολύ σημαντικό να συμπεριλάβετε το stickysession καθώς η μη ύπαρξη αυτής της επιλογής θα διανείμει το ίδιο αίτημα σε πολλούς διακομιστές Tomcat και θα έχετε προβλήματα λήξης περιόδου λειτουργίας σε μια εφαρμογή.

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

Όπως μπορείτε να δείτε στην παραπάνω διαμόρφωση, έχω προσθέσει μια διαδρομή στο BalancerMember, ώστε η τιμή διαδρομής να μπορεί να προστεθεί στο αναγνωριστικό περιόδου σύνδεσης.

Τώρα, ας διαμορφώσουμε τον Apache ώστε να εκτυπώνει το JSESSIONID σε αρχεία καταγραφής πρόσβασης.

  • Προσθέστε παρακάτω στην οδηγία LogFormat
%{JSESSIONID}C

Πρώην:

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""%{JSESSIONID}C"" combined
  • Κάντε επανεκκίνηση του διακομιστή Web Apache

Διαμόρφωση Tomcat

Πρέπει να διαμορφώσετε παρουσίες tomcat με το ίδιο αναγνωριστικό διαδρομής όπως κάνατε στο BalancerMember παραπάνω.

  • Προσθήκη παραμέτρου jvmRoute στο server.xml του Tomcat. Αυτό πρέπει να προστεθεί στην ετικέτα ονόματος κινητήρα.
  Κορυφαίες 18 καλύτερες εφαρμογές μέτρησης

Το παράδειγμα Tomcat έχει ρυθμιστεί με θύρα 8080

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

Το παράδειγμα Tomcat έχει ρυθμιστεί με θύρα 8090

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

Επαλήθευση

Δημιουργήστε κάποιο φορτίο στην εφαρμογή και ελέγξτε το αρχείο καταγραφής πρόσβασης του διακομιστή apache για να βεβαιωθείτε ότι το αίτημά σας δρομολογείται μόνο σε μία παρουσία tomcat.

Θα παρατηρήσετε επίσης ότι το αναγνωριστικό περιόδου σύνδεσης έχει προσαρτηθεί στη διαδρομή όπως φαίνεται στο παρακάτω παράδειγμα.

Πρώην:

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"

Ελπίζω ότι αυτό θα σας βοηθήσει στη διαμόρφωση του Tomcat Load Balancer με το Apache Mod Proxy και το Session Sticky.

  Πώς να χρησιμοποιήσετε το iPhone σας ως κάμερα web

Αν ενδιαφέρεστε να μάθετε για τη διαχείριση Tomcat, ελέγξτε αυτό διαδικτυακό μάθημα.

Σας άρεσε να διαβάζετε το άρθρο; Τι θα λέγατε να μοιράζεστε με τον κόσμο;