Я пытаюсь настроить 2-узловый кластер с помощью Delta Manager для репликации аутентифицированных сеансов. Мы используем HAproxy в качестве балансировщика нагрузки, настроенного для липких сессий. Балансировщик нагрузки добавляет «.s1» и «.s2» к куки-файлу сеанса (только JSESSIONID, без данных).
Чтобы проверить отказоустойчивость, я делаю следующее:
- запускать каждый экземпляр tomcat в отдельном VPS
- в браузере запустите веб-приложение с доменного имени, назначенного для балансировки нагрузки
- аутентифицироваться как администратор через аутентификацию на основе форм tomcat
- просматривать журналы, чтобы определить узел, на который балансировщик нагрузки пересылает запросы
- взаимодействуйте с webapp, затем завершите работу экземпляра tomcat на узле, указанном в шаге 4.
- просмотреть журналы, чтобы подтвердить, что происходит переключение на другой узел
- продолжать взаимодействовать с веб-приложением
Шаг 7 не выполняется, так как он вызывает повторную аутентификацию страницы входа в систему. При повторном входе в систему веб-приложение запускается заново (т. Е. Оно не продолжается с того места, на котором оно было остановлено на шаге 5).
Я посмотрел на catalina.out в узле отработки отказа, и он показывает, что «Принципал [admin] установлен на сессию» - но указанный идентификатор сеанса (EA02 ..) отличается от идентификатора сеанса отработки отказа (C20E ...) - и я не знаю, правильно ли это?
Я добавил jvmRoute в оба файла server.xml на основе конфигурации HAproxy "s1" и "s2"
Любые идеи о том, что еще я должен проверить? Нужно ли сериализовать cookie сеанса без данных?
Кроме того, я должен упомянуть, что я вижу много этих сообщений даже ДО того, как я запускаю свое веб-приложение:
FINE: Создан DeltaSession с идентификатором [EBA26338D57AAD6ECD31D29264C925D9.s1] Общее количество = 58
Из файла 2 узла catalina.out:
FINE: Обнаружено аварийное переключение с другим jvmRoute - оригинальный маршрут: [s1] новый: [s2] с идентификатором сеанса [C20E9194B5FF032546C6C408E35511C9.s1]
....
08 февраля 2019 13:10:32 org.apache.catalina.ha.session.JvmRouteBinderValve handleJvmRoute FINE: не удается найти сеанс [{0}]
....
Кроме того, я должен упомянуть, что я вижу много этих сообщений, когда я запускаю tomcat и ДО того, как я запускаю свое веб-приложение:
FINE: Создан DeltaSession с идентификатором [EBA26338D57AAD6ECD31D29264C925D9.s1] Общее количество = 58