Назад | Перейти на главную страницу

Может ли аппаратный балансировщик нагрузки маршрутизировать трафик SSL с помощью SNI?

У нас есть ферма веб-серверов, на которой в настоящее время размещены 2 приложения - оба приложения работают на всех серверах. Мы хотим разделить это, чтобы у нас была выделенная ферма серверов для каждого приложения (у нас есть для этого веские причины).

Мы надеялись, что перед всеми серверами будет единый балансировщик нагрузки, который будет направлять трафик на правильную ферму на основе имени хоста, но мы хотим поддерживать SSL для веб-серверов.

Кажется, предлагаемые нам маршрутизаторы этого не делают. Я понимаю, что без SNI это невозможно, но мы ожидаем, что индикаторы SNI будут присутствовать практически во всем нашем трафике.

Теперь я программист, а не сетевой специалист, но когда приходит новый запрос на SSL-соединение, маршрутизатор не может проверить заголовок SNI и направить его на нужную ферму. Я предполагаю, что входящее SSL-соединение идентифицируется как {исходный IP-адрес: исходный порт}, поэтому не мог ли он запомнить это для последующих входящих пакетов (если SNI присутствует только в первом пакете)?

Насколько я могу судить, Haproxy делает это, но похоже, что аппаратные балансировщики нагрузки этого не делают. Есть ли для этого какие-то причины или мы должны настаивать на этом?

(Для последнего охранника, использующего IE на XP, который не включает SNI, мы хотели бы отправлять трафик на старую ферму и при необходимости управлять проксированием на новую ферму).

Согласно их веб-сайту, балансировщики нагрузки F5 поддерживают SNI:

https://devcentral.f5.com/articles/ssl-profiles-part-7-server-name-indication

Вы даже можете создавать iRules на основе SNI.

Отказ от ответственности:

  • Я не проверял, что они утверждают на своем веб-сайте
  • Я не работаю в F5 и не использую их в продакшене более 3 лет.

маршрутизатор не может проверить заголовок SNI,

Маршрутизатор обычно работает только на уровне 3 OSI, то есть проверяет не содержимое пакета, а только целевой IP-адрес. Для маршрутизации на основе SNI потребуется понимание TCP и TLS, что является более сложным и более дорогостоящим (с точки зрения производительности), чем просто маршрутизация на основе IP-адреса. И это тоже обычно не называется маршрутизацией.

Haproxy делает это ... аппаратные балансировщики нагрузки не делают.

Вы смешиваете маршрутизатор (уровень 3), аппаратный балансировщик нагрузки (уровень 4 и, возможно, выше) и Haproxy (программный балансировщик нагрузки). Аппаратный балансировщик нагрузки - это не что иное, как устройство с некоторым программным балансировщиком нагрузки на нем и, возможно, также некоторое аппаратное ускорение для определенных действий. Нет ничего, что по своей сути делает невозможной балансировку (не маршрутизацию) на основе информации SNI на аппаратном балансировщике нагрузки, и, как и в другом ответе, есть продукты, которые это поддерживают. Но, конечно, это необходимо реализовать, и это требует производительности - чем глубже вы смотрите на трафик, тем медленнее он становится.