Чтобы использовать Apache в качестве балансировщика нагрузки с липким сеансом - Требуется балансировка нагрузки на основе липкого сеанса

Я использую Apache в качестве LB с липкой обработкой сеанса (используя 2 кота в качестве члена балансировки).

Ниже приведен конфиг. сделано мной на уровне Apache -

<Proxy balancer://mycluster>
    (...)
    ProxySet stickysession=JSESSIONID
    BalancerMember http://{ip/hostname of tomcat1 backed:port} route=tomcat1
    BalancerMember http://{ip/hostname of tomcat2 backed:port} route=tomcat2
</Proxy>

ProxyPass        /     “balancer://mycluster”
PorxyPassReverse /     “balancer://mycluster”

Определение маршрута JVM на уровне Tomcat -

(...)
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">         ##where the jvmroute should be the route value set at apache config.
(...)

то же самое было определено и для Tomcat 2

(...)
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">         ##where the jvmroute should be the route value set at apache config.
    (...)

Все работает нормально, но главный недостаток этой настройки - если tomcat1 выходит из строя, то сеанс, привязанный к tomcat1, также умирает и не маршрутизируется к tomcat 2.

Есть ли способ реплицировать липкий сеанс также на tomcat 2, или просто, если tomcat1 умирает, тогда сеанс переносится на tomcat 2 и наоборот?

1 ответ

Использование "липких сессий" - это всего лишь механизм, гарантирующий, что все запросы на один и тот же сеанс направляются на один и тот же узел, когда возможно использование нескольких узлов. Если вы хотите перенести сессию, вам нужна кластеризация.

Существует множество руководств по кластеризации с Tomcat. На странице презентаций Tomcat также есть несколько презентаций, посвященных тому , как работает кластеризация и как ее настроить.

Обратите внимание, что вам, возможно, придется внести некоторые изменения в свое приложение, чтобы кластеризация работала правильно.

Другие вопросы по тегам