Балансировщик нагрузки Apache: напрямую к конкретному приложению на основе URL - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть несколько приложений, развернутых в папке веб-приложений Tomcat (app1.0, app1.1, app1.2 и т. Д.). Когда я нажимаю www.example.com:8080/app1.0, появляется соответствующее приложение.

Но как это сделать на сервере балансировки нагрузки? Например, у меня есть веб-сайт, на котором я могу нажать кнопку (app1.0, app1.1, app1.2 и т. Д.), И всплывает URL-адрес, например: www.lb.com/app1.0/.../ ... Как перейти к приложению на основе версии приложения в URL? Использовать RewriteCond и regex и передавать его в ProxyPass? Я не знаю, как это написать, кто-нибудь может помочь? :)

Изменить: Это то, что я сделал для 2 приложений для 1 Tomcat и 2 приложений для 2 Tomcat, но иногда я получал 404, потому что балансировщик нагрузки выбрал Tomcat с другой версией.

<VirtualHost *:80>
#Add a http header to explicitly identify the node and be sticky
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

#Declare the http server pool
<Proxy "balancer://plf">
    BalancerMember "http://worker1.com:8080" route=worker1
    BalancerMember "http://worker2.com:8080" route=worker2
    ProxySet stickysession=ROUTEID
    ProxySet lbmethod=bybusyness
</Proxy>

#Common options
ProxyRequests           Off
ProxyPreserveHost       On

#Declare the redirection for the http requests
ProxyPassMatch        "/app(.*)"     "balancer://plf/app$1"  
ProxyPassReverse      "/app(.*)"     "balancer://plf/app$1"

1 Ответ

0 голосов
/ 06 сентября 2018

Вот как я это сделал:

1) определить прокси балансировщика:

<Proxy balancer://portalcluster stickysession=JSESSIONID>

    BalancerMember ajp://TOMCATSERVER1:8009 route=TOMCARSERVER1-0
    BalancerMember ajp://TOMCATSERVER2:8009 route=TOMCATSERVER2-100

</Proxy>

2) прокси к нему в вашем VirtualHost:

Listen 443
<Virtualhost *:443>
    ServerName example.com

    Alias /static /var/www/portalstatic

    ProxyPass /static !
    ProxyPass / balancer://portalcluster/
    ProxyPassReverse / balancer://portalcluster/

</Virtualhost>

NB Я удалил из них lot конфигурации, которые не связаны с вопросом (журналы, пункты отказа, директивы сертификата, ...). Это просто, чтобы проиллюстрировать, как я сделал прокси.

NB2 Я оставил трюк /static, так как это обычно то, что вы захотите сделать. Статические файлы должны оставаться в HTTP и не отправлять их из Tomcat постоянно.

...