можно ли реплицировать информацию о прикрепленной сессии mod_jk на другой Apache для настройки отказоустойчивости?
Идея вопроса заключается в том, чтобы настроить два Apache с прикрепленными сессиями перед несколькими Tomcat. Когда один Apache выходит из строя, другой должен взять на себя информацию о сессии mod_jk, чтобы знать, какие запросы обслуживать на каком Tomcat.
Я знаю, что альтернативой была бы репликация сеансов на уровне Tomcat и отказ от использования прикрепленных сеансов, но на данный момент это невозможно.
решение1
Если ваши внутренние серверы (tomcat) кластеризованы, они также должны реплицировать сеансы. В случае сбоя http соединения с 1 http узлом должны переходить на другой узел. Параметр jsessionid должен предоставить http / mod_jk достаточно информации, чтобы знать, к какому узлу направлять (например, jsessionid=lkj234lkj2ljk234lj.jvmRoute1 сообщит mod_jk, что этот сеанс предназначен для воркера с именем jvmRoute1). В случае, если указанный воркер недоступен, mod_jk должен направить его к следующему воркеру, который должен извлечь сеанс из кэша.
т.е. репликация между httpd-серверами не требуется, поскольку клиентский cookie-файл или URL-адрес, содержащий jsessionid, содержат информацию о маршрутизации.
решение2
Не должно возникнуть необходимости в репликации чего-либо между узлами Apache, поскольку сохранение сеанса mod_jk работает без сохранения состояния.
Вам необходимо установить jvmRoute в файле server.xml Tomcat, и он должен совпадать с именем ваших рабочих процессов jk, используемых балансировщиком в mod_jk.