У меня есть веб-ферма, где веб-серверы отвечают за согласование безопасных соединений. Изо всех сил старается ли кто-нибудь еще с веб-фермой снизить накладные расходы на рукопожатие TLS, гарантируя, что TLS возобновляет рукопожатия поддерживаются? И если да, то почему?
Мы переключаемся с липкого сеанса на более сбалансированный алгоритм балансировки нагрузки. Мы обеспокоены тем, что потеряем преимущества функции возобновления TLS. Предполагая, что каждое соединение от клиента идет на другой веб-сервер, мы предполагаем, что потребуется полное рукопожатие TLS. Я не знаю накладных расходов, но если мы смотрим на 20 мс туда и обратно, может показаться, что полное рукопожатие займет примерно в 3 раза больше времени.
Я не знаю, насколько велика ферма веб-серверов OP, но для большинства небольших / средних установок я считаю наиболее чистой и простой обработкой всех TLS / SSL на балансировщике нагрузки. Так что у тебя есть:
Internet (HTTPS req) -> L7 HTTPS proxy LB -> plain HTTP on LAN -> webserver
o3 Magazine хорошо напишите, насколько это относительно просто с nginx, и какие показатели производительности вы можете ожидать. f5 опубликовал комментарий о преимуществах использования коммерческого устройства для ускорения SSL вместо DIY-решения (ИМХО несколько предвзято).
Обратите внимание, что вам понадобятся ваши веб-серверы для проверки X-Forwarded-For и X-FORWARDED_PROTO заголовки и правильно обрабатывать соединение.
Большинство установок должно нормально работать с одним балансировщиком нагрузки HTTP и HTTPS или парой балансировщиков нагрузки в активной / пассивной конфигурации для высокой доступности. В этой настройке возобновление рукопожатия - не проблема, так как существует только одна конечная точка SSL / TLS (которая обычно автоматически поддерживает возобновление рукопожатия).
Предполагая, что вы используете Apache, взгляните на distcache. Из справочной страницы следует, что «архитектура distcache предоставляет протокол и набор сопутствующих инструментов, позволяющих приложениям и даже машинам обмениваться состоянием сеанса между ними посредством сетевой службы».
«Основное использование distcache прямо сейчас - это кэширование сеансов SSL / TLS. Это позволяет серверам SSL / TLS (например, защищенному веб-серверу Apache, обеспечивающему поддержку HTTPS) использовать централизованный кеш сеанса, т.е. любой сервер может возобновить сеансы SSL / TLS, согласованные любым другим сервером в сети. Преимущества этого подхода включают большую свободу механизмов балансировки нагрузки ».
У меня создалось впечатление, что после того, как соединение было установлено, даже с установленным балансировщиком нагрузки, все будущие соединения в этом сеансе будут происходить с одним и тем же сервером?
Возможно, именно так работают сайты, которые я использовал, и настроенные мной службы.