Как создать Application Load Balancer в AWS и подключить инстансы Apache
Важно: инструкция рассчитана на тестовую среду. Для продакшна используйте HTTPS и продуманную политику безопасности.

О чём эта статья
Application Load Balancer (ALB) — это компонент AWS EC2, работающий на 7‑м уровне модели OSI (уровень приложения). ALB поддерживает маршрутизацию по пути (path‑based routing), маршрутизацию по хосту (host‑based routing), правила на основе полей HTTP и регистрацию целей по IP‑адресу (включая цели вне VPC). В материале показано создание ALB, регистрация инстансов в целевой группе (target group) и проверка доступа по DNS.
Ключевые преимущества ALB:
- Маршрутизация на уровне HTTP/HTTPS (уровень приложения).
- Возможность динамически добавлять/удалять цели без остановки трафика.
- Поддержка Path/Host/Header‑правил.
- Регистрация по IP‑адресу для гибкой архитектуры.
Предварительные требования
- Учётная запись AWS.
- Один или несколько EC2‑инстансов с установленным и запущенным Apache (порт 80).
Если у вас нет инстансов — создайте их заранее и убедитесь, что Apache отвечает на порт 80 локально и в настройках security group открыт порт 80 для тестового трафика.
Что мы сделаем
- Войдём в консоль AWS.
- Создадим Application Load Balancer.
- Настроим target group и зарегистрируем EC2‑инстансы с Apache.
- Дождёмся статуса active и проверим доступ через DNS балансировщика.
Вход в AWS
- Перейдите на страницу входа в AWS и выполните аутентификацию.

После успешного входа вы увидите главный консольный экран с перечнем доступных сервисов.
Создание Application Load Balancer и подключение Apache
- В консоли выберите «Services», введите в поиске EC2 и откройте EC2 Dashboard.

- В левой навигации выберите Load Balancers и нажмите «Create Load Balancer».

- Выберите тип Application Load Balancer и нажмите «Create».

- Задайте имя балансировщика. Оставьте Scheme как Internet‑facing, если хотите принимать трафик из интернета. Оставьте остальные настройки по умолчанию и нажмите «Next: Configure Security Settings».

- Выберите как минимум две зоны доступности (Availability Zones) в вашем VPC для устойчивости. Затем «Next: Configure Security Settings».

Важно: если вы используете HTTP (порт 80) вместо HTTPS, консоль выдаст предупреждение. Для тестовой среды это допустимо, но в реальном окружении рекомендуется настроить HTTPS и сертификат (ACM).

- Создайте новую security group или выберите существующую. Security group должна разрешать входящий трафик на порт, который будет слушать балансировщик (обычно 80 для HTTP или 443 для HTTPS).

- Настройте target group: укажите имя целевой группы, протокол (HTTP) и порт (80). Убедитесь, что имя уникально в регионе.

- Зарегистрируйте один или несколько инстансов, на которых запущен Apache, и добавьте их в target group.

- Проверьте настройки и нажмите «Create».

- Закройте диалог и дождитесь, пока состояние балансировщика не станет active. Затем скопируйте DNS‑имя из вкладки Description.


- Вставьте DNS‑имя в браузер. Если всё настроено верно, вы увидите страницу, обслуживаемую Apache на ваших инстансах.

Контроль состояния и базовая отладка
- Проверьте Health Checks в target group. ALB пометит цель как unhealthy, если она не отвечает на проверочный URL/порт.
- Если инстансы не проходят проверку, проверьте security group инстанса и настройки сетевого ACL. Убедитесь, что Apache отвечает на локальном порту 80.
- Логи доступа/ошибок Apache помогут найти проблему на уровне приложения.
Критерии приёмки
- Балансировщик в статусе active.
- Все зарегистрированные цели имеют статус healthy в target group.
- DNS‑имя балансировщика отдаёт контент Apache в браузере.
- Для HTTPS: корректный сертификат и перенаправление HTTP→HTTPS (если требуется).
Роли и чек‑лист перед деплоем
Администратор сети:
- Проверил VPC, подсети и маршруты.
- Убедился в наличии минимум двух AZ для Alta‑доступности.
DevOps инженер:
- Настроил target group и health check (путь и таймауты).
- Выбрал корректную security group.
- Настроил правила listeners (HTTP/HTTPS).
Разработчик приложения:
- Проверил, что Apache отдаёт страницу на порт 80.
- Убедился в корректности ответа для health check (200).
Альтернативные подходы
- Network Load Balancer (NLB): используйте для TCP/UDP и высокой пропускной способности на сетевом уровне (Layer 4).
- Classic Load Balancer (CLB): устаревший вариант, подходит только для старых сценариев; не поддерживает современные правила на уровне приложения.
- Использование внешнего proxy (NGINX/HAProxy) в качестве балансировщика, если нужен полный контроль над логикой маршрутизации.
Когда ALB не подойдёт (контрпример)
- Нужна балансировка на TCP/UDP без анализа HTTP — используйте NLB.
- Требуется статический IP для входящего трафика — NLB предоставляет Elastic IP, ALB нет.
- Высокая пропускная способность с минимальной задержкой на сетевом уровне — NLB предпочтительнее.
Ментальные модели и примеры настроек
Ментальная модель: ALB = «HTTP‑шлюз», который принимает запросы, применяет правила маршрутизации (host/path), и отправляет их в целевые группы, где каждое приложение отвечает на своём порту.
Мини‑методология быстрой проверки:
- Убедиться, что Apache на инстансе отвечает локально на порт 80.
- Проверить security group для 80 на инстансе и для 80 на ALB.
- Создать ALB и target group с тем же портом.
- Зарегистрировать инстансы и дождаться healthy.
- Проверить DNS в браузере.
Безопасность и рекомендации для продакшна
- Используйте HTTPS: подключите сертификат через AWS Certificate Manager (ACM) и настройте слушатель на 443.
- Ограничьте доступ к security group: разрешайте трафик только из нужных источников.
- Логи: включите access logs для ALB и собирайте их в S3/CloudWatch для анализа.
- Защитите приложение от common‑атак: настройте WAF (Web Application Firewall), если необходима защита на уровне приложений.
Откат и план реагирования при инциденте
- Если новые правила мешают трафику, временно переключите listener на резервную target group с проверенными инстансами.
- Если ALB перестал отвечать, проверьте health check и security groups.
- В случае серьёзных проблем — удалите новые правила и восстановите предыдущую конфигурацию по сохранённым параметрам.
Часто задаваемые вопросы
Как ALB проверяет здоровье инстансов?
ALB использует health check по указанному протоколу, пути и порту. Если цель не отвечает успешным кодом (например, 200) в течение заданного числа попыток, она помечается как unhealthy.
Можно ли регистрировать IP‑адреса вместо инстансов?
Да, ALB поддерживает регистрацию целей по IP‑адресу. Это полезно, если цель находится вне VPC или представляет собой контейнер/платформу с динамическими инстансами.
Нужен ли мне HTTPS для ALB?
Для продакшна — да. HTTPS защищает трафик между клиентом и ALB. Между ALB и целями вы можете использовать HTTP или HTTPS по необходимости.
Заключение
Мы создали Application Load Balancer, настроили target group, зарегистрировали инстансы с Apache и проверили доступ через DNS. Для тестовой среды достаточно HTTP, но для продакшна обязательно настройте HTTPS, логирование и дополнительные меры безопасности.
Краткие выводы:
- ALB удобен для HTTP(S)‑маршрутизации на уровне приложения.
- Всегда проверяйте health checks и security groups.
- Выбирайте NLB, если нужна балансировка на уровне TCP/UDP или статический IP.
Если нужно, могу подготовить краткий Playbook в формате checklist или Mermaid‑диаграмму для принятия решения между ALB и NLB.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента