Что такое NLB (Network Load Balancing) в Windows Server?

«Что такое NLB (Network Load Balancing) в Windows Server?» — вопрос из категории Веб-серверы и балансировка, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Network Load Balancing (NLB) — это встроенная в Windows Server технология кластеризации на уровне сетевого трафика (OSI L4). Она распределяет входящие TCP/UDP-запросы между несколькими серверами (узлами), создавая единую виртуальную точку входа (VIP — Virtual IP). Основные цели — обеспечение высокой доступности (HA) и масштабируемости сетевых служб.

Ключевые характеристики:

  • Работа на 4-м уровне: Балансирует трафик на основе IP-адресов, портов и протоколов.
  • Архитектура без общего хранилища: Каждый узел в кластере работает независимо со своими данными (подходит для stateless-сервисов, например, веб-ферм IIS).
  • Методы распределения:
    • Аффинитет (Affinity): None (без привязки), Single (привязка по IP источника), Network (привязка по подсети источника).
    • Режимы работы: Unicast (рекомендуется) или Multicast.

Пример создания кластера NLB для веб-фермы из двух серверов через PowerShell:

# На первом сервере (узел 1) создаем новый кластер
New-NlbCluster -InterfaceName "Ethernet" -ClusterPrimaryIP "192.168.1.100" -SubnetMask "255.255.255.0" -ClusterName "IIS-WebFarm" -OperationMode "Unicast"

# Добавляем порт для балансировки (HTTP)
Add-NlbClusterPortRule -ClusterName "IIS-WebFarm" -StartPort 80 -EndPort 80 -Protocol "Tcp" -Affinity "Single"

# На втором сервере (узел 2) присоединяем его к существующему кластеру
Add-NlbClusterNode -InterfaceName "Ethernet" -NewNodeName "WEB-SRV-02" -NewNodeInterface "Ethernet" -HostName "WEB-SRV-01"

Типичные сценарии использования: балансировка нагрузки для веб-серверов (IIS), терминальных серверов (RDS), VPN-шлюзов, прокси-сервисов. Ограничение: NLB не проверяет состояние приложения (health check) на уровне L7, для этого нужны более продвинутые решения (HAProxy, nginx, Azure Load Balancer).