Network Load Balancer в AWS — как создать и настроить

Кратко о Network Load Balancer
Network Load Balancer — это компонент сервиса EC2 в AWS, работающий на транспортном уровне (четвёртый уровень модели OSI). Он открывает TCP-подключение к целевому ресурсу на порту, указанном в конфигурации слушателя (listener). NLB поддерживает статические IP-адреса, позволяет регистрировать цели по IP (то есть добавлять ресурсы за пределами VPC), масштабируется для очень высоких нагрузок и иногда называется TCP Load Balancer.
Важно: если целевые инстансы помечены как unhealthy (нездоровые), NLB прекращает маршрутизацию к ним и отправляет трафик только на здоровые цели, как в той же, так и в других зонах доступности.
Зачем использовать NLB — преимущества и ограничения
Преимущества:
- Низкая задержка и высокая пропускная способность для TCP-трафика.
- Поддержка статических IP и регистрации по IP-адресу.
- Простая маршрутизация на уровне четвертого слоя (без вмешательства в HTTP/HTTPS).
- Подходит для нестандартных TCP-протоколов и протоколов с длительными соединениями.
Ограничения и когда NLB не подходит:
- NLB не работает с правилами уровня HTTP (Host-based routing, path-based routing) — если вам нужны маршруты по URL или продвинутая обработка HTTP, выбирайте Application Load Balancer (ALB).
- Для простых веб-приложений с необходимостью SSL-termination и WAF чаще удобнее ALB или интеграция с CloudFront.
- Если требуется балансировка UDP/QUIC — проверяйте поддержку протоколов и режимов в текущем регионе.
Альтернативные подходы и когда их использовать
- Application Load Balancer (ALB): нужен для HTTP/HTTPS, host/path routing, WebSocket, интеграции с WAF.
- Classic Load Balancer (CLB): устаревший вариант, подходит только для старых сценариев совместимости.
- Network Load Balancer + TLS termination на целевых инстансах: если требуется L4 с шифрованием end-to-end.
Предварительные требования
- Аккаунт AWS. Если его нет — создайте на aws.amazon.com.
- Один или несколько EC2-инстансов с работающим Apache (или другим TCP-сервисом).
- Правильные Security Group и правила сетевого маршрутизации, позволяющие трафику от NLB доходить до инстансов (обычно входящий трафик на порт 80/443 или на ваш порт приложения).
Что мы сделаем
- Войдём в AWS Management Console.
- Создадим Network Load Balancer.
- Зарегистрируем EC2-инстансы (или IP-адреса) как цели.
- Дождёмся статуса healthy и проверим работу приложения через DNS балансировщика.
Шаг 1 — Вход в AWS
Нажмите в консоли входа AWS и введите свои учётные данные. После успешного входа вы увидите консоль с перечнем сервисов.

Шаг 2 — Откройте консоль EC2 и раздел Load Balancers
В верхнем меню Services найдите «ec2» и перейдите в сервис EC2.

На дашборде EC2 найдите в боковой панели раздел “Load Balancers” и откройте его.

Нажмите кнопку «Create Load Balancer», чтобы начать создание нового балансировщика.

Выберите тип “Network Load Balancer” и нажмите «Create».

Шаг 3 — Конфигурация Network Load Balancer
- Дайте уникальное имя балансировщику.
- Выберите схему: “internet-facing” для внешнего доступа из интернета или “internal” для доступа только внутри VPC. Если нужно принять трафик из интернета — выберите internet-facing.

Выберите не менее двух зон доступности (Availability Zones) для отказоустойчивости. В демонстрации выбранны три зоны.

Если вы не используете TLS для тестовой среды, консоль может показать предупреждение. Для production всегда настраивайте TLS.

Шаг 4 — Маршрутизация и группа целей (Target Group)
- Создайте новую Target Group. Укажите уникальное имя группы в регионе.
- Выберите тип цели: Instance (регистрация по инстансу) или IP (регистрация по IP-адресу). При выборе IP можно подключать ресурсы за пределами VPC.
- Оставьте порт и протокол (TCP) или укажите свой порт приложения.

Шаг 5 — Регистрация целей
Выберите EC2-инстансы, на которых работает Apache, и нажмите «Add to registered».

Затем нажмите “Review” и “Create” для завершения настройки.

Если создание прошло успешно, закройте окно и вернитесь в список балансировщиков.

Шаг 6 — Проверка статуса и доступ по DNS
Дождитесь, пока состояние балансировщика станет “active”. Откройте Target Group и проверьте, что цели имеют статус Healthy — на это может потребоваться несколько секунд или минут.
Скопируйте DNS-имя балансировщика из вкладки “Description” и вставьте в браузер для теста.

Если всё настроено верно, ваше Apache-приложение отобразится через Network Load Balancer.

Контрольный список перед развертыванием в продакшн
- Настроены Security Group: входящий трафик с NLB до инстансов разрешён на нужный порт.
- Health checks настроены корректно (путь, порт, интервал, таймаут).
- Выбрана схема (internet-facing vs internal) согласно требованиям безопасности.
- Установлены логи и мониторинг (CloudWatch Metrics, Access Logs при необходимости).
- TLS/шифрование организовано (либо на NLB с TLS passthrough, либо на целевых инстансах).
- Резервирование по зонам доступности выполнено.
Критерии приёмки
- DNS балансировщика возвращает страницу приложения в браузере.
- Все зарегистрированные цели находятся в состоянии Healthy согласно настройкам Health Check.
- Метрики CloudWatch показывают ожидаемую нагрузку и отсутствие ошибок соединения.
- Для production: TLS подключение установлено и сертификаты валидны.
План действий при проблемах (Runbook)
- Проверить статус Target Group: есть ли Healthy цели.
- Если все цели Unhealthy — проверить настройки Health Check (порт, путь, интервал, таймаут).
- Проверить Security Group и Network ACL, разрешены ли входящие соединения от NLB.
- Пингуйте/подключайтесь напрямую к инстансам на целевой порт (например, curl на порт 80) из внутри VPC.
- Просмотрите логи Apache на инстансах и системные логи для ошибок привязки порта.
- Проверить, не превышен ли лимит подключений или нет проблем с ресурсами инстансов.
- При необходимости заменить цель на другой инстанс и проверить, восстанавливается ли traffic.
Советы по безопасности и соответствию
- В production всегда используйте TLS. При необходимости Termination SSL можно оставить на инстансах или организовать TLS passthrough.
- Контролируйте доступ к консоли AWS и включайте многфакторную аутентификацию (MFA) для администраторов.
- В случае обработки персональных данных убедитесь, что логирование и хранение данных соответствуют требованиям конфиденциальности и локальным законам.
Тестовые сценарии и критерии приёмки
- Простая проверка: запрос по DNS возвращает HTTP 200 с ожидаемым содержимым.
- Failover: выключить один инстанс — трафик должен направиться на оставшиеся здоровые инстансы без заметного прерывания.
- Масштабируемость: отправить нагрузочный трафик и проверить, что NLB не теряет подключений (проверяется на тестовой среде).
Роли и обязанности
Администратор сети:
- Проверяет Security Group, Subnet и NACL.
- Контролирует статические IP (если используются).
DevOps-инженер:
- Создаёт Target Group, настраивает Health Checks.
- Регистрирует инстансы/IP.
Разработчик/QA:
- Тестирует приложение через DNS балансировщика.
- Проводит тесты отказоустойчивости и производительности.
Короткое резюме
Network Load Balancer — инструмент для высокопроизводительной TCP-балансировки на уровне L4. Он прост в настройке, поддерживает регистрацию по IP и статические IP, а также подходит для сценариев с длительными соединениями или нестандартными TCP-протоколами. Для веб-специфичных задач с обработкой HTTP/HTTPS лучше рассмотреть Application Load Balancer. Следуйте контрольному списку и runbook для корректного развёртывания в production.
Ключевые ссылки и примечания
- Для детальной документации AWS по Network Load Balancer используйте официальную документацию в консоли AWS или на aws.amazon.com.
Похожие материалы
Как писать эффективные деловые письма
Как проверить, разблокирован ли ваш телефон
Windows 10 зависает — как исправить (8 шагов)
3D эффект вырывающегося изображения в Photoshop
Как оценить приложение в App Store на iPhone