Конфигурирайте 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.
Много е важно да включите 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.
Ако се интересувате да научите за администрацията на Tomcat, проверете това онлайн курс.
Приятно ви е да прочетете статията? Какво ще кажете за споделяне със света?