Маршрутизация трафика с помощью Шлюза приложений
Шлюз приложений управляет запросами, которые могут отправляться в веб-приложение клиентскими приложениями. Шлюз приложений направляет трафик в пул веб-серверов на основе URL-адреса запроса. Этот процесс известен как маршрутизация прикладного уровня. Пул веб-серверов может быть образован виртуальными машинами Azure, масштабируемыми наборами виртуальных машин Azure, Службой приложений Azure и даже локальными серверами.
Маршрутизация запросов Шлюзом приложений
Клиенты отправляют запросы к веб-приложению на IP-адрес или DNS-имя Шлюза. Шлюз направляет запросы на выбранный веб-сервер из пул серверов, используя набор заданных для шлюза правил, чтобы определить, куда должен поступить запрос.
Существует два основных метода маршрутизации трафика — маршрутизация на основе пути и размещение на нескольких сайтах. Рассмотрим возможности каждого из них.
Маршрутизация на основе пути
Маршрутизация на основе пути позволяет отправлять запросы с различными путями в URL-адресе в другой пул внутренних серверов. Например, запросы с путем /video/*
можно направить в пул серверов, содержащий оптимизированные для обработки потокового видео серверы, а запросы /images/*
направить в пул серверов, обрабатывающих извлечение изображений.
Размещение нескольких сайтов
Размещение нескольких сайтов позволяет настроить несколько веб-приложений в одном экземпляре шлюза приложений. В конфигурации с несколькими сайтами можно зарегистрировать несколько DNS-имен (CNAMEs) для IP-адреса Шлюз приложений, указав имя каждого сайта. Шлюз приложений использует отдельные прослушиватели для ожидания поступления запросов для каждого сайта. Каждый прослушиватель передает запрос на отдельный фильтр, который может направлять запросы на свой серверный пул. Например, шлюз приложений можно настроить таким образом, что все запросы для http://contoso.com
будут направляться на серверы одного пула, а запросы для http://fabrikam.com
— на серверы другого. На схеме ниже показана эта конфигурация.
Конфигурации с несколькими сайтами полезны для поддержки мультитенантных приложений, где каждый клиент имеет собственный набор виртуальных машин или других ресурсов, в которых размещено веб-приложение.
Другие возможности маршрутизации
Наряду с маршрутизацией на основе пути и на основе размещения на нескольких сайтах, при маршрутизации с помощью Шлюза приложений доступны несколько дополнительных возможностей.
- Перенаправление. Перенаправлять можно на другой сайт или с HTTP на HTTPS.
- Переопределите заголовки HTTP: заголовки HTTP позволяют клиенту и серверу передавать дополнительные сведения с запросом или ответом.
- Пользовательские страницы ошибок. Шлюз приложений позволяет создавать пользовательские страницы ошибок, которые будут отображаться вместо страниц ошибок по умолчанию. На пользовательской странице ошибок вы можете использовать собственные символику и макет.
Балансировка нагрузки в Шлюзе приложений
Шлюз приложений автоматически загружает запросы балансировки нагрузки, отправленные на серверы в каждом серверном пуле, используя механизм циклического перебора. Однако вы можете настроить прилипание сеансов, если необходимо убедиться, что все запросы клиента в одном сеансе направляются на один и тот же сервер в серверном пуле.
Балансировка нагрузки работает с маршрутизацией уровня 7 OSI, которая Шлюз приложений реализует маршрутизацию, что означает, что она балансирует запросы на основе параметров маршрутизации (имен узлов и путей) используемых правил Шлюз приложений. Другие же подсистемы балансировки нагрузки, такие как Azure Load Balancer, функционируют на уровне 4 уровне OSI и распределяют трафик на основе IP-адреса целевого объекта запроса.
Работа с OSI Layer 7 позволяет балансировке нагрузки воспользоваться другими функциями, которые Шлюз приложений предоставляют. К этим функциям относятся:
- Поддержка протоколов HTTP, HTTPS, HTTP/2 и WebSocket.
- Брандмауэр веб-приложений предназначен для защиты от уязвимостей веб-приложения.
- Сквозное шифрование запроса.
- Автомасштабирование для динамической регулировки производительности при изменении нагрузки веб-трафика.
Маршрутизация для отдела транспортных средств
Пересмотрев наш сценарий в отделе автомобилей, мы можем использовать Шлюз приложений для решения обоих проблем. Мы можем использовать возможности балансировки нагрузки и пробы работоспособности, чтобы гарантировать, что сбои обрабатываются без влияния пользователя. Маршрутизацию на основе путей можно использовать, чтобы предоставить пользователям единую конечную точку для доступа к сайтам, размещенным в разных веб-службах.
Рассмотрим подробнее, как это сделать.