Tomcat Load Balancer с Apache, използващ Mod Proxy и Session Sticky

Конфигурирайте Tomcat с Apache с помощта на прокси модул и Sticky Session

Конфигурирането на Tomcat Load Balancer с уеб сървър Apache с помощта на Mod Proxy е доста лесно.

Лесно е, когато следвате последователността и всичко върви добре. Изброих следната стъпка по стъпка как да конфигурирате Apache с Tomcat за конфигуриране на Load Balancer с помощта на Mod Proxy.

Балансирането на натоварването винаги се препоръчва в производствена среда за по-добра наличност.

Конфигурация на уеб сървър на 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.

  Как да увеличите част от снимка на iPhone и iPad

Много е важно да включите 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, така че стойността на маршрута може да бъде добавена към ID на сесията.

Сега нека конфигурираме Apache да отпечатва JSESSIONID в регистрационните файлове за достъп.

  • Добавете следното в директивата LogFormat
%{JSESSIONID}C

Пример:

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""%{JSESSIONID}C"" combined
  • Рестартирайте уеб сървъра на Apache

Конфигурация на Tomcat

Трябва да конфигурирате екземпляри на tomcat със същия идентификатор на маршрут, както направихте в BalancerMember по-горе.

  • Добавете параметър jvmRoute в server.xml на Tomcat. Това трябва да се добави в етикета за име на двигателя.
  Кои стари компоненти можете да използвате повторно, когато създавате нов компютър?

Екземпляр на 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.

  Как да конвертирате PDF файл в PowerPoint

Ако се интересувате да научите за администрацията на Tomcat, проверете това онлайн курс.

Приятно ви е да прочетете статията? Какво ще кажете за споделяне със света?