Открыть сервис

Сетевая балансировка нагрузки (NLB) в Windows

Сетевая балансировка нагрузки (NLB) — технология распределения входящего сетевого трафика между несколькими серверами, входящая в состав операционных систем семейства Windows Server. NLB позволяет объединить до 32 серверов в единый кластер, который представляется клиентам как один виртуальный сервер с общим сетевым адресом. Технология ориентирована на обеспечение высокой доступности и масштабируемости приложений, работающих по протоколам TCP и UDP, и не требует специализированного аппаратного обеспечения.

История и развитие

Технология NLB была представлена корпорацией Microsoft в конце 1990-х годов как часть Windows NT 4.0 Enterprise Edition, где она называлась Windows Load Balancing Service (WLBS). В последующих версиях — Windows 2000 Server, Windows Server 2003, Windows Server 2008 и более новых — компонент был переименован в Network Load Balancing и подвергся ряду улучшений, включая поддержку IPv6 и интеграцию с PowerShell. В современных версиях Windows Server (2016, 2019, 2022) NLB продолжает поддерживаться, однако Microsoft рекомендует рассматривать аппаратные балансировщики или службу Azure Load Balancer для критически важных нагрузок в облачных средах.

Принцип работы

Архитектура кластера

Кластер NLB состоит из нескольких узлов (хостов), каждый из которых является полноценным сервером с установленной ролью NLB. Все узлы одновременно обрабатывают входящие запросы, однако алгоритм распределения определяет, какой конкретный узел обработает тот или иной запрос. Для клиента кластер выглядит как единый IP-адрес — виртуальный IP-адрес (VIP), который назначается кластеру в целом.

Режимы работы

NLB поддерживает два режима работы:

  • Одноадресный режим (unicast) — все узлы кластера используют общий MAC-адрес для виртуального IP. Коммутатор направляет кадры на все порты, а каждый узел решает, обрабатывать ли пакет. Этот режим может вызвать повышенную нагрузку на коммутатор.
  • Многоадресный режим (multicast) — каждому узлу назначается уникальный MAC-адрес, а кластеру — групповой многоадресный адрес. Этот режим более эффективен для сетевой инфраструктуры, но требует поддержки multicast со стороны коммутаторов.

Алгоритмы распределения нагрузки

NLB использует механизм хеширования для определения, какой узел обработает запрос. По умолчанию применяется алгоритм, основанный на IP-адресе источника и порте. Дополнительно настраивается аффинити (привязка) — режим, определяющий, должны ли запросы от одного клиента обрабатываться одним и тем же узлом:

  • None — запросы распределяются без привязки к клиенту (подходит для приложений без состояния сессии).
  • Single — все запросы от одного IP-адреса обрабатываются одним узлом (по умолчанию).
  • Class C — запросы из одной подсети класса C направляются на один узел.

Управление и настройка

Управление NLB осуществляется через оснастку Network Load Balancing Manager в графическом интерфейсе Windows Server, а также через командлеты PowerShell (например, Get-NlbCluster, New-NlbCluster, Add-NlbClusterNode). Настройка включает создание кластера, назначение виртуального IP-адреса, выбор портов и правил распределения. Правила портов позволяют гибко настраивать поведение для конкретных служб: например, для HTTP-трафика можно использовать аффинити Single, а для SMTP — None.

Применение

NLB традиционно используется для:

  • Веб-серверов IIS (Internet Information Services) и прокси-серверов;
  • Терминальных служб и служб удалённого рабочего стола;
  • Файловых серверов (SMB);
  • Серверов приложений, работающих по TCP/UDP.

Технология не поддерживает сохранение сессий уровня приложения (например, SSL-сессий) без дополнительной настройки, а также не обеспечивает репликацию данных между узлами — синхронизация данных решается отдельными средствами (DFS, SQL Server Always On и другими).

Преимущества и ограничения

К преимуществам NLB относятся: отсутствие необходимости в дополнительном оборудовании, лёгкость настройки, поддержка до 32 узлов и возможность динамического добавления или удаления узлов без остановки обслуживания. Ограничения включают: отсутствие проверки состояния приложений (только проверка сетевого уровня), невозможность использования для протоколов, не поддерживающих IP-адресацию (например, NetBIOS), и ограниченную масштабируемость по сравнению с аппаратными решениями.

Сравнение с другими решениями

В отличие от аппаратных балансировщиков, NLB работает на уровне операционной системы и не требует изменения сетевой инфраструктуры. Однако она менее гибка в настройке правил маршрутизации и не предоставляет функций разгрузки SSL, сжатия трафика или детальной аналитики. В сравнении с службой кластеризации отказоустойчивости (Failover Clustering), NLB ориентирована не на отказоустойчивость состояния, а на распределение нагрузки для приложений без общего хранилища.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →