#tomcat #ssl #haproxy #stunnel
#tomcat #ssl #haproxy #ошеломляющий
Вопрос:
Мы исследуем, возможно ли использовать HAProxy для балансировки нагрузки на нескольких серверах tomcat. Мы хотели бы использовать HTTPs для всех запросов и использовать сеансы через cookie JSESSIONID. HAProxy изначально не поддерживает SSL, но мы можем использовать stunnel перед ним.
С учетом этой настройки:
1) Обязательно ли использовать sticky sessions (последующие запросы всегда отправляются к одному и тому же экземпляру tomcat)?
2) Если нам действительно нужно использовать «липкие» сеансы, то как мы могли бы решить проблему обновления нашего экземпляра tomcat с помощью нового развертывания webapp без необходимости принудительного выхода пользователей из системы (потери их сеансов)?
Ответ №1:
Вам не обязательно использовать постоянные сеансы, но если вы не используете постоянные сеансы, вам нужно будет использовать решение для общего сеанса, как описано в http://tomcat.apache.org/tomcat-7.0-doc/config/manager.html (вероятно, лучше всего использовать хранилище сеансов JDBC). Держу пари, вы могли бы найти код для сохранения сеанса в Redis или Memcache, но я не искал его подробно.
Как только вы это сделаете, это также решит проблему с обновлением экземпляров, хотя мой опыт не заключался в том, что обновления веб-приложений автоматически аннулируют сеансы (кажется, это делают только полные перезапуски). Однако мне придется взглянуть на это поближе.
Комментарии:
1. Это правильно. Ваши сеансы должны быть доступны в центральном месте, таком как доступное по сети хранилище ключей / значений. Как упоминалось Femi , вам не нужно использовать «липкие» сеансы. У HAProxy есть опция: источник баланса , который будет отслеживать исходный IP пользователя и обрабатывать запросы на пересылку в тот же экземпляр tomcat.