Коллеги, всем привет!
Обращали внимание, что профильных статей на английском выше крыши, а с русскоязычными источниками какой-то голод? Что ж, перехожу на русский язык! Но продолжаем учить, понимать и совершенствовать Английский – один из самых важных навыков в вашем арсенале 🙂
И так, Azure Application Gateway — это балансировщик нагрузки веб-трафика, который позволяет вам управлять трафиком ваших веб-приложений, который работает на уровне 7 (application layer) модели OSI.
Седьмой уровень модели OSI иногда еще называют уровень приложений, но, чтобы не запутаться можно использовать оригинальное название — application layer. Прикладной уровень — это то, с чем взаимодействуют пользователи, своего рода графический интерфейс всей модели OSI.

На данный момент Azure Application Gateway обладает внушительным перечнем полезных фич:
- SSL терминация (Secure Sockets Layer (SSL/TLS) termination).
- aвтоскейлинг (Autoscaling).
- резервирование зон работы (Zone redundancy).
- статический ИП Адресом (Static VIP).
- файрволл (Web Application Firewall).
- может выступать в роли ингресс контроллера для Кубернетис Кластера (Ingress Controller for AKS).
- роутинг на базе URL (URL-based routing).
- хостинг несколько сайтов (Multiple-site hosting).
- редирект (Redirection).
- сходство сеансов (Session affinity).
- поддерживает работу с WebSocket и HTTP/2 (WebSocket and HTTP/2 traffic).
- поддерживает настройку жизни подключений (Connection draining).
- кастомные страницы ошибок (Custom error pages).
- поддерживает изменение заголовков (Rewrite HTTP headers and URL).
А теперь вкратце про каждую из этих фич.
SSL Терминация (Secure Sockets Layer (SSL/TLS) termination
Служит для того, чтоб запрос приходил по HTTPS, но к внутренним ресурсам уже шел по HTTP, то есть снимается нагрузка с бэк-энд серверов..
Автоскейлин (Autoscaling)
Позволяет Azure Application Gateway добавлять и убавлять количество инстансов в зависимости от нагрузки. Помогает экономить, не нужно держать статическое число (а это обычно максимальное).
Резервирование зон работы (Zone redundancy)
Azure Application Gateway – региональный балансер, то есть, если в ДатаЦентре МС что-то случиться с одной из зон доступности (Availability Zones), то он автоматически продолжить работать на других, то есть не надо создавать несколько гейтвеев для каждой зоны.
Стастический ИП Адрес (Static VIP)
Так как гейтвей использует Standard_v2 SKU ИП адреса, то можно быть уверенными, чтоб ИП никогда не измениться.
Файрволл (Web Application Firewall)
Azure Application Gateway использует Файрволл для Веб Приложений (WAF) – сервис, который предоставляет централизованную защиту для вашего веб-приложения. Защищает от таких типов атак, как: “sql инъекций”, “межсайтовые скрипт атаки” и прочих.
Ингресс контроллера для Кубернетис Кластера (Ingress Controller for AKS)
Azure Application Gateway предоставляет возможность использовать его как игресс для Кубернетиса.
Роутинг на базе URL (URL-based routing)
Одна из самых интересных фич – дает возможность разнести различные URL на сайте по разным таргетам:
Хостиг несколько сайтов (Multiple-site hosting)
Позволяет настроить использование нескольких доменных имён.
Редирект (Redirection)
Дает возможность редиректить трафик на различные таргеты
Сходств сеансов (Session affinity)
Предоставляет возможность на основе куки-файлов отправлять запрос на тот же сервер.
Работа с WebSocket и HTTP/2 (WebSocket and HTTP/2 traffic)
Протоколы WebSocket и HTTP/2 обеспечивают полную дуплексную связь между клиентом и сервером через длительное TCP-подключение.
Настройка жизни подключений (Connection draining)
Дает возможность контролировать время подключения, например, не более 3 или 5 минут и дальше разорвать подключение.
Кастомные страницы ошибок (Custom error pages)
Вы можете заменить страницы ошибок на свои кастомные страницы через Azure Application Gateway
Изменение заголовков (Rewrite HTTP headers and URL)
Заголовки HTTP позволяют клиенту и серверу передавать дополнительную информацию вместе с запросом или ответом. Перезаписывая эти заголовки HTTP, можно реализовать несколько важных сценариев, в том числе:
- Добавление полей заголовка, связанных с безопасностью, например HSTS или X-XSS-Protection.
- Удаление полей заголовка ответа, которые могут раскрыть конфиденциальную информацию.
- Чередование информации о портах из заголовков X-Forwarded-For.
Примеры использования
Теперь главное: как это можно использовать.
На мой взгляд, самый удобный кейс для Azure Application Gateway — в момент миграции вашего приложения с одной платформы на другую. Например: вы хостите приложение на виртуальных машинах и хотите перенести его на Azure Web Application Service или на Kubernetes Cluster. Переносить “все и сразу” – страшно, поэтому вы “разрезаете” своё приложение по URL-based routing и переносите частями.
Полезные команды
Встречал случай, когда Azure Application Gateway начинал вести себя странно. Поэтому считаю полезным знать, что его можно перезагрузить средствами PowerShell / Az Cli:
PowerShell:
Get-AzureRmApplicationGateway | Stop-AzureRmApplicationGateway | Start-AzureRmApplicationGateway
Az Cli:
az network application-gateway stop --id /subscriptions/<sub-id>/resourceGroups/<resource-group>/providers/Microsoft.Network/applicationGateways/<waf-name>
az network application-gateway start --id /subscriptions/<sub-id>/resourceGroups/<resource-group>/providers/Microsoft.Network/applicationGateways/<waf-name>
Остались вопросы? Спрашивайте! Всегда рад ответить.