2010-10-06 2 views
15

Какое влияние оказывает SSL на то, как работает балансировка нагрузки? Я знаю, что вам нужно использовать липкие сессии, если вы решили не хранить информацию о сеансе в БД или Out of Process, но как это влияет на SSL?SSL и балансировка нагрузки

+0

нашел интересную ссылку http://wiki.metawerx.net/wiki/StickySessions –

+1

появляется этот вопрос, чтобы быть вне темы, потому что речь идет не о программировании. Возможно, лучше спросить [Server Fault] (http://serverfault.com/) или [Webmaster Stack Exchange] (http://webmasters.stackexchange.com/). – jww

ответ

32

Чтобы уточнить, сеансы SSL/TLS не имеют ничего общего с сеансами HTTP. (Некоторые реализации могут использовать идентификатор сеанса SSL/TLS в качестве основы для поддержки сеансов HTTP, но это плохой дизайн, так как SSL/TLS может полностью изменять сеансы независимо от того, что делает HTTP).

С точки зрения балансировки нагрузки, вы получите несколько вариантов:

  • Используйте балансировки нагрузки, которое ваш SSL/TLS конечной точки. В этом случае балансировка нагрузки будет выполняться на уровне HTTP: клиент подключается к балансировщику нагрузки, а балансировщик нагрузки разворачивает соединение SSL/TLS, чтобы передать HTTP-контент (тогда ясно) своим работникам.

  • Используйте балансировщик нагрузки на уровне TCP/IP, который перенаправляет все TCP-соединение непосредственно на рабочий узел. В этом случае каждый рабочий узел должен иметь сертификат и закрытый ключ (что не обязательно является проблемой, если они управляются последовательно). Используя эту технику, балансировщик нагрузки вообще не выполняет никакой обработки HTTP (поскольку он не смотрит в соединение SSL/TLS): с одной стороны, это уменьшает обработку, выполняемую самим балансиром нагрузки, с другой стороны это мешает вам отправляться на конкретный рабочий узел на основе структуры URL, например. Оба метода имеют свои преимущества и недостатки.

+3

Хороший ответ! Недостатком второго метода, который вы можете упомянуть, является то, что балансировщик, поскольку он не может видеть HTTP-запрос внутри всего этого SSL, не может добавить заголовок, указывающий реальный IP-клиент; поэтому на веб-сервере будет выглядеть так, как будто все запросы поступают от одного веб-клиента: IP-адрес самого балансира нагрузки. –

+0

@Brandon Craig Rhodes, вы могли бы получить балансировку нагрузки, отправляя пакет, как если бы он исходил от первоначального клиента, как это делают обратные NAT. – Bruno

+0

- true, но только в том случае, когда я модифицирую все серверы, чтобы использовать балансировщик нагрузки в качестве своего шлюза TCP, чтобы все эти пакеты, возвращающиеся к произвольным клиентским IP-адресам, проходили обратно через балансировщик. Насколько я знаю, это возможно только в том случае, если я фактически запускаю компьютеры в одной локальной сети, чтобы они имели доступ на уровне Ethernet к сетевым интерфейсам друг друга? (И поэтому не возможно с произвольными хостами от поставщика облачного сервера?) –

Смежные вопросы