В этом сценарии организация объединяет несколько API внутри виртуальной сети с помощью Azure Управление API развернутых в виртуальной сети.
Архитектура
Скачайте файл Visio для этой архитектуры.
На предыдущей схеме рассматривается полный жизненный цикл внутренних API, потребляемых внешними пользователями.
Поток данных
Путь потока данных выглядит следующим образом:
- Разработчики проверяют код в репозитории GitHub, подключенном к агенту конвейера CI/CD, установленному на виртуальной машине Azure.
- Агент отправляет сборку в приложение API, размещенное на Среда службы приложений подсистемы балансировки нагрузки.
- Управление API Azure использует предыдущие API через заголовки HOST, указанные в политике Управление API.
- Управление API использует Среда службы приложений DNS-имя для всех API.
- Шлюз приложений предоставляет портал разработчика и API Управление API.
- Azure Частная зона DNS используется для внутреннего маршрутизации трафика между Среда службы приложений, Управление API и Шлюз приложений.
- Внешние пользователи используют предоставленный портал разработчика для использования API через общедоступный IP-адрес Шлюз приложений.
Компоненты
- Виртуальная сеть Azure позволяет ресурсам Azure безопасно взаимодействовать друг с другом, с Интернетом и локальными сетями.
- Частная зона DNS Azure позволяет разрешать доменные имена в виртуальной сети без необходимости добавлять пользовательское решение DNS.
- Управление API Azure помогает организациям публиковать API для внешних пользователей, партнеров и собственных разработчиков, давая им возможность использовать свои данные и услуги.
- Шлюз приложений — это подсистема балансировки нагрузки веб-трафика, которая помогает управлять трафиком в веб-приложениях.
- Внутренняя подсистема балансировки нагрузки Среда службы приложений — это функция службы приложение Azure, которая предоставляет полностью изолированную и выделенную среду для безопасного запуска приложений Служба приложений в большом масштабе.
- Azure DevOps — это служба для управления жизненным циклом разработки, которая включает в себя функции для планирования проектов и управления ими, управления кодом, выполнения сборки и выпуска.
- Application Insights — это расширяемая служба управления производительностью приложений (APM) для веб-разработчиков на нескольких платформах.
- Azure Cosmos DB — это глобально распределенная многомодельная служба базы данных Майкрософт.
Альтернативные варианты
- В сценарии лифта и смены Azure, развернутого в виртуальной сети Azure, серверные серверы могут обращаться непосредственно через частные IP-адреса.
- При использовании локальных ресурсов экземпляр Управление API может получить доступ к внутренней службе в частном порядке через vpn-подключение Azure VPN-шлюз и VPN-подключение типа "сеть — сеть" (IPSec) или ExpressRoute, что делает гибридный сценарий Azure и локальной среды.
- Вместо службы DNS на основе Azure можно использовать существующие поставщики DNS или поставщики DNS с открытым кодом.
- Внутренние интерфейсы API, развернутые вне Azure, по-прежнему могут быть полезны, так как их можно предоставлять через службу "Управление API".
Подробности сценария
В этом сценарии организация размещает несколько API с помощью среды службы приложение Azure (ILB Среда службы приложений), и они хотят консолидировать эти API внутри виртуальной сети с помощью Azure Управление API (APIM). Внутренний экземпляр Управления API также может быть предоставлен внешним пользователям для использования всех возможностей этих API. Эту внешнюю экспозицию можно достичь с помощью Шлюз приложений Azure перенаправления запросов во внутреннюю службу Управление API, которая, в свою очередь, использует API, развернутые в Среда службы приложений.
- Веб-API размещаются посредством защищенного протокола HTTPS, и они будут использовать TLS-сертификат.
- Шлюз приложений также настроен через порт 443 для защищенных и надежных исходящих вызовов.
- Служба "Управление API" настраивается для использования личных доменов с помощью TLS-сертификатов.
- Ознакомьтесь с предлагаемой конфигурацией сети для сред Службы приложений.
- Необходимо явно упомянуть порт 3443, позволяющий Управлению API выполнять операции управления с помощью портала Azure или PowerShell.
- Используйте политики в APIM, чтобы добавить заголовок HOST для API, размещенного на Среда службы приложений. Это гарантирует, что подсистема балансировки нагрузки Среда службы приложений будет правильно пересылать запрос.
- Управление API принимает запись DNS Среда службы приложений для всех приложений, размещенных в Среда службы приложений. Добавьте политику APIM, чтобы явно задать заголовок HOST, чтобы позволить подсистеме балансировки нагрузки Среда службы приложений различать приложения в Среда службы приложений.
- Рассмотрим интеграцию управления API Azure в Azure Application Insights, которая также отображает метрики через Azure Monitor.
- Если вы используете конвейеры CI/CD для развертывания внутренних API, рассмотрите возможность создания собственного размещенного агента на виртуальной машине в виртуальной сети.
Потенциальные варианты использования
- Синхронизация сведений об адресе клиента внутри системы после внесения изменений.
- Привлекайте разработчиков к своей платформе, предоставляя уникальные ресурсы данных.
Рекомендации
Эти рекомендации реализуют основные принципы платформы Azure Well-Architected Framework, которая является набором руководящих принципов, которые можно использовать для улучшения качества рабочей нагрузки. Дополнительные сведения см. в статье Microsoft Azure Well-Architected Framework.
Надежность
Надежность гарантирует, что ваше приложение позволит вам выполнить ваши обязательства перед клиентами. Дополнительные сведения см. в разделе "Обзор основы надежности".
Availability
Вы можете развернуть службу Azure Управление API в качестве развертывания с несколькими регионами для повышения доступности, а также сократить задержки. Эта функция доступна только в режиме "Премиум". Служба "Управление API" в этом конкретном сценарии использует интерфейсы API из сред Службы приложений. ApiM можно также использовать для API, размещенных во внутренней локальной инфраструктуре.
Среды Службы приложений могут использовать профили Диспетчера трафика для распределения трафика, размещенного в средах Службы приложений. Это позволит повысить масштабируемость и уровень доступности.
Устойчивость
Хотя этот пример сценария больше рассказывает о конфигурации, API, размещенные на Среда службы приложений, должны быть достаточно устойчивыми для обработки ошибок в запросах, которые в конечном итоге управляются службой Управление API и Шлюз приложений. Рассмотрим алгоритмы повторных попыток и автоматического выключения в структуре API. Общее руководство по проектированию устойчивых решений см. в разделе Проектирование устойчивых приложений для Azure.
Безопасность
Безопасность обеспечивает гарантии от преднамеренного нападения и злоупотребления ценными данными и системами. Дополнительные сведения см. в разделе "Общие сведения о компоненте безопасности".
Так как предыдущий пример сценария размещен полностью в внутренней сети, Управление API и Среда службы приложений уже развернуты в защищенной инфраструктуре (Azure виртуальная сеть). Вы можете интегрировать Шлюз приложений с Microsoft Defender для облака, чтобы обеспечить простой способ предотвращения, обнаружения и реагирования на угрозы в среде. Общие рекомендации по разработке безопасных решений см. в разделе Документация по системе безопасности Azure.
Оптимизация затрат
Оптимизация затрат заключается в поиске способов уменьшения ненужных расходов и повышения эффективности работы. Дополнительные сведения см. в разделе Обзор критерия "Оптимизация затрат".
Для службы управления API предлагаются четыре уровня: "Разработка", "Базовый", Стандартный" и "Премиум". Подробное руководство по различиям этих уровней можно найти на странице Цены на управление API.
Клиенты могут масштабировать управление API путем добавления и удаления единиц. Мощность единиц зависит от их уровня.
Примечание.
Уровень разработчика можно использовать для оценки функций Управление API. Для рабочей среды не следует использовать уровень разработчика.
Чтобы просмотреть прогнозируемые затраты и настроить потребности развертывания, вы можете изменить количество единиц масштабирования и экземпляров службы приложений в Калькуляторе цен Azure.
Аналогичным образом можно найти рекомендации по ценам на Среда службы приложений.
Вы можете настроить Шлюз приложений цены в зависимости от требуемого уровня и ресурсов.
Оптимизация производительности
Уровень производительности — это способность вашей рабочей нагрузки эффективно масштабироваться в соответствии с требованиями, предъявляемыми к ней пользователями. Дополнительные сведения см. в разделе "Общие сведения о эффективности производительности".
Масштабируемость
Вы можете масштабировать экземпляры Управление API в зависимости от ряда факторов, таких как число и скорость одновременных подключений, тип и количество настроенных политик, размеров запросов и ответов, а также задержки серверной части в API. Параметры масштабирования экземпляров доступны в уровнях "Базовый", "Стандартный" и "Премиум", но привязаны к верхнему масштабу на уровнях "Базовый" и "Стандартный". Экземпляры называются единицами, и их можно масштабировать до двух единиц на уровне "Базовый", до четырех единиц на уровне "Стандартный" и до любого количества единиц на уровне "Премиум". Параметры автомасштабирования также доступны для включения горизонтального увеличения масштаба на основе правил.
Среда службы приложений предназначены для масштабирования с ограничениями на основе ценовой категории. Приложения, размещенные в Среда службы приложений, можно настроить для горизонтального масштабирования (количество экземпляров) или увеличения масштаба (размера экземпляра) в зависимости от требований приложения.
Автомасштабирование Шлюза приложений Azure доступно в составе SKU, обеспечивающего избыточность между зонами, во всех глобальных регионах Azure. Ознакомьтесь с предварительной версией функции, чтобы узнать об автомасштабировании шлюза приложений.
Развертывание этого сценария
Предварительные требования и предположения
- Необходимо приобрести имя личного домена.
- Вам нужен СЕРТИФИКАТ TLS (мы использовали подстановочный сертификат из службы сертификатов Azure) для использования одного для всех наших пользовательских доменов. Вы также можете приобрести самозаверяющий сертификат для сценариев тестирования разработки.
- Это конкретное развертывание использует доменное имя contoso.org и сертификат TLS подстановочного знака для домена.
- В развертывании используются имена ресурсов и адресные пространства, упомянутые в разделе "Развертывание". Можно настроить имена ресурсов и адресные пространства.
Развертывание и компоновка элементов
Необходимо дополнительно настроить компоненты, развернутые с помощью предыдущего шаблона Resource Manager следующим образом:
Виртуальная сеть со следующими конфигурациями:
- Имя:
ase-internal-vnet
- Адресное пространство для виртуальной сети: 10.0.0.0/16
- Четыре подсети
backendSubnet
для службы DNS: 10.0.0.0/24apimsubnet
для внутренней службы "Управление API": 10.0.1.0/28asesubnet
для ILB Среда службы приложений: 10.0.2.0/24- Подсеть виртуальной сети для тестовых виртуальных машин и виртуальной машины внутреннего размещенного агента DevOps: 10.0.3.0/24
- Имя:
Частная зона DNS служба (общедоступная предварительная версия) после добавления службы DNS требует, чтобы виртуальная сеть была пуста.
- Дополнительные сведения см. в руководстве по развертыванию.
Среда службы приложений с параметром
aseinternal
внутренней подсистемы балансировки нагрузки (ILB): (DNS:aseinternal.contoso.org
). После завершения развертывания передайте групповой сертификат для ILB.Служба приложений План с Среда службы приложений в качестве расположения
Приложение API (Служба приложений для простоты) — (URL:
https://srasprest.contoso.org
) —srasprest
ASP.NET веб-API на основе модели-представления контроллера (MVC). После развертывания настройте:- Веб-приложение для использования сертификата TLS
- Application Insights для предыдущих приложений:
api-insights
- Создайте службу Azure Cosmos DB для веб-API, размещенных внутри виртуальной сети:
noderestapidb
- Создание записей DNS в зоне Частная зона DNS Azure
- Azure Pipelines можно использовать для настройки агентов в Виртуальные машины для развертывания кода веб-приложения в внутренней сети.
- Для внутреннего тестирования приложения API создайте тестовую виртуальную машину в подсети виртуальной сети.
Создайте службу Управление API:
apim-internal
Настройте службу для подключения к внутренней виртуальной сети в подсети:
apimsubnet
После завершения развертывания выполните следующие дополнительные действия.- Настройка пользовательских доменов для служб APIM с помощью TLS
- Портал API (
api.contoso.org
) - Портал разработки (
portal.contoso.org
) - В разделе API настройте приложения Среда службы приложений с помощью добавленной политики Среда службы приложений DNS-имени для заголовка HOST для веб-приложения.
- Используйте предыдущую созданную тестовую виртуальную машину для тестирования внутренней службы Управление API на виртуальная сеть
- Портал API (
Примечание.
Тестирование APIM-интерфейсов из портал Azure не будет работать, так как
api.contoso.org
не может быть открыто разрешено.*- Настройка пользовательских доменов для служб APIM с помощью TLS
Настройте шлюз приложений для доступа к службе API:
apim-gateway
через порт 80. Добавьте сертификаты TLS в шлюз приложений и соответствующие пробы работоспособности и параметры HTTP. Также настройте правила и прослушиватели для использования TLS-сертификата.
После успешного завершения предыдущих шагов настройте записи DNS в записях api.contoso.org
CNAME веб-регистратора и portal.contoso.org
с помощью Шлюз приложений общедоступного DNS-имени: ase-appgtwy.westus.cloudapp.azure.com
Убедитесь, что вы можете получить доступ к порталу разработки из общедоступной версии и проверить API-интерфейсы служб APIM с помощью портал Azure.
Примечание.
Рекомендуется использовать тот же URL-адрес для внутренних и внешних конечных точек для служб APIM.
Соавторы
Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующим участником.
Автор субъекта:
- Срикант Сарва | Старший инженер клиента
Другие участники:
- Шон Kupfer | Технический писатель
Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.
Следующие шаги
- Учебник. Импорт и публикация первого API
- Руководство по создавать и публиковать продукт;
- Руководство по Публикация нескольких версий API