Tomcat Load Balancer s Apache pomocí Mod Proxy a Session Sticky
Nakonfigurujte Tomcat pomocí Apache pomocí modulu Proxy a Sticky Session
Konfigurace Tomcat Load Balancer s webovým serverem Apache pomocí Mod Proxy je docela snadná.
Je to snadné, když dodržíte sekvenci a vše jde dobře. Uvedl jsem následující krok za krokem, jak nakonfigurovat Apache s Tomcat pro konfiguraci Load Balancer pomocí Mod Proxy.
Pro lepší dostupnost se v produkčním prostředí vždy doporučuje mít vyvážené zatížení.
Table of Contents
Konfigurace webového serveru Apache
- Povolte proxy_module, proxy_balancer_module a proxy_http_module v httpd.conf webového serveru 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
Přidejte proxy pass spolu s názvem balanceru pro kořenový kontext aplikace.
V tomto příkladu mám jako příklady cestu proxy a název balanceru jako mycluster.
Je velmi důležité zahrnout stickysession, protože bez této možnosti bude stejný požadavek distribuován na více serverů Tomcat a budete mít problémy s vypršením relace v aplikaci.
<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>
Jak můžete vidět ve výše uvedené konfiguraci, přidal jsem trasu do BalancerMember, takže hodnotu trasy lze připojit k ID relace.
Nyní nakonfigurujeme Apache tak, aby tiskl JSESSIONID v protokolech přístupu.
- Přidejte následující do direktivy LogFormat
%{JSESSIONID}C
Příklad:
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""%{JSESSIONID}C"" combined
- Restartujte webový server Apache
Konfigurace Tomcat
Musíte nakonfigurovat instance tomcat se stejným ID trasy jako v BalancerMember výše.
- Přidejte parametr jvmRoute do souboru server.xml služby Tomcat. Toto musí být přidáno do jmenovky motoru.
Instance Tomcat nakonfigurovaná s portem 8080
<Engine name="Catalina" defaultHost="localhost" jvmRoute="server1">
Instance Tomcat nakonfigurovaná s portem 8090
<Engine name="Catalina" defaultHost="localhost" jvmRoute="server2">
Ověření
Vygenerujte určitou zátěž pro aplikaci a zkontrolujte protokol přístupu serveru Apache, abyste se ujistili, že váš požadavek je směrován pouze do jedné instance Tomcat.
Také si všimnete, že vaše ID relace je připojeno k trase, jak je znázorněno v příkladu níže.
Příklad:
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"
Doufám, že vám to pomůže při konfiguraci služby Tomcat Load Balancer s Apache Mod Proxy a Session Sticky.
Pokud máte zájem dozvědět se o administraci Tomcat, zkontrolujte toto online kurz.
Užili jste si čtení článku? Co takhle sdílet se světem?