Интеграция приложения с виртуальной сетью Azure
Примечание.
Начиная с 1 июня 2024 года только что созданные приложения службы приложений могут создать уникальное имя узла по умолчанию, использующее соглашение об именовании <app-name>-<random-hash>.<region>.azurewebsites.net
. Например: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
. Существующие имена приложений остаются неизменными.
Дополнительные сведения см. в записи блога о создании веб-приложения с уникальным именем узла по умолчанию.
Эта статья описывает функцию Службы приложений Azure — интеграцию с виртуальной сетью, а также настройку этой функции для приложений в Службе приложений. Виртуальные сети Azure позволяют размещать многие ресурсы Azure в сети, недоступной из Интернета. Функция интеграции с виртуальной сетью Службы приложений позволяет приложениям получать доступ к ресурсам в виртуальной сети или через нее.
Примечание.
Сведения об интеграции виртуальных сетей, необходимых для шлюза, перемещены в новое расположение.
Служба приложений реализована в виде двух моделей:
- Ценовые категории выделенных вычислительных ресурсов, включая "Базовый", "Стандартный", "Премиум", "Премиум v2" и "Премиум v3".
- Среда службы приложений, которая развертывается непосредственно в виртуальной сети с выделенной вспомогательной инфраструктурой и использует ценовые категории "Изолированная версия 2".
Функция интеграции с виртуальной сетью используется в ценовых категориях выделенных вычислительных ресурсов Службы приложений Azure. Если приложение находится в Среда службы приложений, оно уже интегрируется с виртуальной сетью и не требует настройки функции интеграции виртуальной сети для доступа к ресурсам в той же виртуальной сети. Дополнительные сведения обо всех сетевых компонентах см. в статье Сетевые функции Службы приложений.
Интеграция с виртуальной сетью предоставляет вашему приложению доступ к ресурсам этой сети, однако не позволяет подключаться к приложению из виртуальной сети в частном порядке. Доступ к частным сайтам подразумевает доступность приложения только из частной сети, например из виртуальной сети Azure. Интеграция с виртуальной сетью используется только для выполнения исходящих вызовов из вашего приложения к виртуальной сети. Обратитесь к частной конечной точке для входящего частного доступа.
Функция интеграции с виртуальной сетью:
- Требуется ценовая категория "Базовый", "Стандартный", "Премиум", "Премиум v2", "Премиум v3" или "Эластичная Премиум" для App Service.
- поддерживает TCP и UDP;
- Работает с приложениями App Service, функциональными приложениями и приложениями Logic.
Функции, не поддерживаемые при интеграции с виртуальной сетью:
- подключение диска
- присоединение к домену Active Directory на Windows Server;
- NetBIOS.
Интеграция виртуальной сети поддерживает подключение к виртуальной сети в одном регионе. Интеграция с виртуальной сетью позволяет приложению получать доступ:
- Ресурсы в виртуальной сети, с которой вы интегрируетесь.
- Ресурсы в виртуальных сетях, объединённых с виртуальной сетью, интегрированной с вашим приложением, включая соединения глобального пиринга.
- Ресурсы в подключениях Azure ExpressRoute.
- Службы, защищенные конечной точкой службы.
- Службы с поддержкой частных конечных узлов.
При использовании интеграции с виртуальной сетью можно использовать следующие функции сети Azure:
- Группы безопасности сети (NSG): вы можете заблокировать исходящий трафик с помощью группы безопасности сети, используемой в подсети интеграции. Правила для входящих подключений не применяются, так как вы не можете использовать интеграцию с виртуальной сетью для предоставления входящего доступа к своему приложению.
- Таблицы маршрутов (UDR). Можно поместить таблицу маршрутов в подсеть интеграции для отправки исходящего трафика.
- Шлюз NAT. Шлюз NAT можно использовать для получения выделенного исходящего IP-адреса и устранения нехватки портов SNAT.
Узнайте, как включить интеграцию с виртуальной сетью.
Как работает интеграция виртуальной сети
Приложения в службе приложений размещаются на рабочих ролях. Интеграция виртуальной сети выполняется путем подключения виртуальных интерфейсов к рабочим ролям с адресами в делегированной подсети. Используемые виртуальные интерфейсы не являются ресурсами, к которым клиенты имеют прямой доступ. Поскольку исходящий адрес находится в вашей виртуальной сети, он имеет доступ к большинству ресурсов в ней или через нее аналогично виртуальной машине в этой виртуальной сети.
Если интеграция виртуальной сети включена, приложение выполняет исходящие вызовы через виртуальную сеть. Внешние адреса, указанные на портале свойств приложений, как и прежде, представляют собой адреса, которые использует ваше приложение. Однако если исходящий вызов совершается на виртуальную машину или частную конечную точку в интеграционной или одноранговой виртуальной сети, исходящий адрес — это адрес из подсети интеграции. Частный IP-адрес, назначенный экземпляру, доступен через переменную среды WEBSITE_PRIVATE_IP.
Если включена маршрутизация всего трафика, то весь исходящий трафик отправляется в виртуальную сеть. Если маршрутизация трафика не включена, в виртуальную сеть отправляется только частный трафик (RFC1918) и конечные точки службы, настроенные в подсети интеграции. Исходящий трафик в Интернет направляется непосредственно из приложения.
Функция интеграции виртуальной сети поддерживает два виртуальных интерфейса на работника. Два виртуальных интерфейса на каждого работника означают две интеграции виртуальных сетей для каждого плана службы приложений. Другими словами, план службы приложений может иметь интеграцию с виртуальной сетью с двумя подсетями или виртуальными сетями. Приложения в том же плане службы приложений могут использовать только одно из подключений виртуальной сети к определенной подсети, что означает, что приложение может иметь только одно подключение виртуальной сети в любой момент времени.
Требования к подсети
Интеграция виртуальной сети зависит от выделенной подсети. При создании подсети подсеть Azure использует пять IP-адресов с самого начала. Один адрес используется из подсети интеграции для каждого экземпляра плана службы приложений. При масштабировании приложения до четырех экземпляров используются четыре адреса.
При изменении размера экземпляра количество IP-адресов, используемых планом службы приложений, временно удваивается до завершения операции масштабирования. Прежде чем существующие экземпляры будут выведены из эксплуатации, новые экземпляры должны быть полностью введены в эксплуатацию. Операция масштабирования влияет на реальные доступные поддерживаемые экземпляры для заданного размера подсети. Обновления платформы нуждаются в бесплатных IP-адресах, чтобы гарантировать, что обновления могут произойти без прерываний исходящего трафика. Наконец, после увеличения масштаба, уменьшения или завершения операций может потребоваться короткий промежуток времени до освобождения IP-адресов. В редких случаях эта операция может длиться до 12 часов, и при быстром горизонтальном или вертикальном масштабировании требуется больше IP-адресов, чем обеспечивает максимальный масштаб.
Так как размер подсети невозможно изменить после назначения, используйте подсеть, которая достаточно велика для любого масштаба, которого может достигнуть ваше приложение. Также следует зарезервировать IP-адреса для обновлений платформы. Чтобы избежать проблем с емкостью подсети, рекомендуется удвоить IP-адреса запланированного максимального масштаба.
/26
с 64 адресами охватывает максимальный масштаб одного мультитенантного плана службы приложений. При создании подсетей в портале Azure в рамках интеграции с виртуальной сетью необходим минимальный размер /27
. Если подсеть уже существует перед интеграцией через портал, можно использовать /28
подсеть.
С помощью соединения подсети с несколькими планами (MPSJ) можно присоединить несколько планов службы приложений в одну и ту же подсеть. Все планы службы приложений должны находиться в одной подписке, но виртуальная сеть или подсеть может находиться в другой подписке. Каждому экземпляру из каждого плана службы приложений требуется IP-адрес из подсети, и для использования MPSJ требуется минимальный размер подсети /26
. Если вы планируете присоединиться ко многим и (или) крупномасштабным планам, следует запланировать более крупные диапазоны подсети.
Конкретные ограничения для контейнеров Windows
Контейнеры Windows используют дополнительный IP-адрес для каждого приложения в каждом экземпляре плана службы приложений, и вы должны соответствующим образом настроить размер подсети. Например, если у вас есть 10 экземпляров плана Службы приложений для контейнеров Windows с четырьмя приложениями, вам потребуется 50 IP-адресов и дополнительных адресов для поддержки входящего/исходящего горизонтального масштабирования.
Пример вычисления:
Для каждого экземпляра плана службы приложений необходимо: 4 контейнерных приложения Windows, что соответствует 4 IP-адресам. 1 IP-адрес на экземпляр плана службы приложений дополнительных + 1 = 5 IP-адресов.
Для 10 экземпляров: 5 x 10 = 50 IP-адресов на план «Служба приложений»
Поскольку у вас есть 1 план службы приложений, 1 x 50 = 50 IP-адресов.
Вы также ограничены количеством ядер, доступных на используемом рабочем уровне. Каждое ядро добавляет три сетевых единицы. Рабочая роль использует одну единицу, а каждое подключение виртуальной сети использует одну единицу. Остальные единицы можно использовать для приложений.
Пример вычисления:
Экземпляр плана службы приложений, в котором запускаются четыре приложения и используется интеграция с виртуальной сетью. Приложения подключены к двум разным подсетям (подключения к виртуальной сети). Для этой конфигурации требуется семь сетевых единиц (1 рабочих и 2 подключения + 4 приложения). Минимальный размер для выполнения этой конфигурации — I2v2 (четыре ядра x 3 единицы = 12 единиц).
С помощью I1v2 можно запускать не более четырех приложений с помощью одного подключения (1) или 3 приложений с помощью 2 подключений.
Разрешения
Для настройки интеграции виртуальной сети через портал Azure, интерфейс командной строки или при непосредственном задании свойства virtualNetworkSubnetId
сайта необходимо иметь по крайней мере следующие разрешения на доступ, основанный на ролях, на подсети или на более высоком уровне.
Действие | Описание |
---|---|
Microsoft.Network/virtualNetworks/read | Чтение определения виртуальной сети |
Microsoft.Network/virtualNetworks/subnets/read | Прочитайте определение подсети виртуальной сети |
Microsoft.Network/virtualNetworks/subnets/join/action | Подключается к виртуальной сети. |
Если виртуальная сеть находится не в той же подписке, что и приложение, необходимо убедиться, что подписка с виртуальной сетью зарегистрирована для поставщика ресурсов Microsoft.Web
. Вы можете вручную зарегистрировать поставщика , воспользовавшись этой документацией, но он также автоматически регистрируется при создании первого веб-приложения в подписке.
Маршруты
Вы можете контролировать, какой трафик проходит через интеграцию с виртуальной сетью. Существует три типа маршрутизации, которые следует учитывать при настройке интеграции виртуальной сети. Маршрутизация приложений определяет, какой трафик направляется из приложения и в виртуальную сеть. Маршрутизация конфигурации затрагивает операции, выполняемые до или во время запуска приложения. Примерами являются извлечение образа контейнера и настройки приложения со ссылкой на Key Vault. Сетевая маршрутизация дает возможность управлять маршрутизацией трафика приложений и конфигурации из виртуальной сети и наружу.
С помощью параметров маршрутизации приложений или конфигурации можно настроить трафик, отправляемый через интеграцию виртуальной сети. Трафик подлежит сетевой маршрутизации только если отправлен через интеграцию виртуальной сети.
Маршрутизация приложений
Маршрутизация приложений применяется к трафику, который отправляется из приложения после его запуска. Сведения о трафике во время запуска приведены в разделе Маршрутизация конфигурации. При настройке маршрутизации приложений в виртуальную сеть можно направлять либо весь трафик, либо только частный трафик (также известный как трафик RFC1918). Это поведение можно настроить с помощью параметра исходящего интернет-трафика. Если маршрутизация исходящего интернет-трафика отключена, приложение направляет только частный трафик в виртуальную сеть. Если вы хотите перенаправить весь исходящий трафик приложения в виртуальную сеть, убедитесь, что исходящий интернет-трафик включен.
- Только трафик, настроенный в маршрутизации приложений или конфигурации, подпадает под действие сетевых групп безопасности и определяемых пользователем маршрутов, которые применяются к вашей интеграционной подсети.
- Если включена маршрутизация исходящих интернет-трафика, исходный адрес исходящего трафика из приложения по-прежнему является одним из IP-адресов, перечисленных в свойствах приложения. Если вы направляете трафик через брандмауэр или шлюз NAT, исходный IP-адрес поступает из этой службы.
Узнайте, как настроить маршрутизацию приложений.
Примечание.
Для Службы приложений при маршрутизации трафика SMTP через интеграцию виртуальной сети поддерживается исходящее подключение SMTP (порт 25). Возможность поддержки определяется параметром для подписки, в которой развернута виртуальная сеть. Для виртуальных сетей и подсетей, созданных до 1 август 2022 года, необходимо внести временные изменения в конфигурацию виртуальной сети или подсети, чтобы параметр синхронизировался с подписки. Например, можно добавить временную подсеть, связать или отключить связь группы безопасности сети или временно настроить конечную точку службы. Подробные сведения см. в статье Устранение проблем с исходящими SMTP-подключениями в Azure.
Конфигурация маршрутизации
При использовании интеграции с виртуальной сетью можно настроить, как управляются части трафика конфигурации. По умолчанию трафик конфигурации передается непосредственно через общедоступный маршрут, но для упомянутых отдельных компонентов можно активно настроить его маршрутизацию через интеграцию виртуальной сети.
Совместное использование контента
По умолчанию Функции Azure используют общий ресурс содержания в качестве источника развертывания при масштабировании функциональных приложений в плане Premium. Необходимо настроить дополнительный параметр, чтобы гарантировать маршрутизацию трафика в эту общую папку содержимого через интеграцию виртуальной сети. Дополнительные сведения см. в статье о настройке маршрутизации контента.
Помимо настройки маршрутизации, необходимо также убедиться, что любой брандмауэр или группа безопасности сети, настроенная на трафик из подсети, разрешает трафик через порт 443 и 445.
Извлечение образа контейнера
При использовании пользовательских контейнеров можно получить контейнер через интеграцию с виртуальной сетью. Чтобы маршрутизировать трафик загрузки контейнера через интеграцию виртуальной сети, необходимо убедиться, что параметр маршрутизации настроен. Узнайте , как настроить маршрутизацию извлечения изображений.
Резервное копирование и восстановление
Служба приложений имеет встроенную резервную копию и восстановление, но если вы хотите создать резервную копию в собственной учетной записи хранения, можно использовать настраиваемую функцию резервного копирования и восстановления. Если вы хотите перенаправить трафик в учетную запись хранения через интеграцию виртуальной сети, необходимо настроить параметр маршрута. Резервное копирование базы данных не поддерживается при интеграции виртуальной сети.
Параметры приложения с использованием ссылок на Key Vault
Настройки приложения с использованием ссылок на Key Vault пытаются получить секреты по публичному маршруту. Если Key Vault блокирует общедоступный трафик, а приложение использует интеграцию виртуальной сети, предпринята попытка получить секреты через интеграцию виртуальной сети.
Примечание.
- Настройка сертификатов SSL/TLS из частных хранилищ ключей сейчас не поддерживается.
Параметры приложения маршрутизации
Служба приложений имеет существующие параметры приложения для настройки маршрутизации приложений и конфигурации. Свойства сайта переопределяют параметры приложения, если существуют оба. Свойства сайта имеют преимущество в том, что их можно проверять с помощью Azure Policy и валидировать во время настройки. Мы рекомендуем вам использовать свойства сайта.
Вы по-прежнему можете использовать существующий WEBSITE_VNET_ROUTE_ALL
параметр приложения для настройки маршрутизации приложений.
Настройки приложения также существуют для некоторых настроек маршрутизации в конфигурации. Эти параметры приложения именуются WEBSITE_CONTENTOVERVNET
и WEBSITE_PULL_IMAGE_OVER_VNET
.
Сетевая маршрутизация
Таблицы маршрутов можно использовать для маршрутизации исходящего трафика из приложения без ограничений. Местами назначения часто являются брандмауэры и шлюзы. Для блокирования исходящего трафика к ресурсам в виртуальной сети или Интернете, можно также использовать группу безопасности сети (NSG). Группа безопасности сети, которую вы применяете к своей подсети интеграции, действует независимо от любых таблиц маршрутов, применяемых к этой же подсети.
Таблицы маршрутизации и группы безопасности сети применяются только к трафику, перенаправляемому через интеграцию с виртуальной сетью. Для получения дополнительных сведений см. описание маршрутизации приложений и маршрутизации конфигурации. Маршруты не применяются к ответам на входящие запросы приложений, и входящие правила в NSG не применяются к вашему приложению. Интеграция виртуальной сети влияет только на исходящий трафик из приложения. Чтобы контролировать входящий трафик в приложение, используйте функцию ограничений доступа или частные конечные точки.
При настройке групп безопасности сети или таблиц маршрутов, которые применяются к исходящему трафику, необходимо убедиться, что вы считаете зависимости приложения. Зависимости приложений включают конечные точки, необходимые приложению во время выполнения. Помимо API и служб, которые вызывает приложение, эти конечные точки также могут быть производными конечными точками, такими как конечные точки проверки списка отзыва сертификатов (CRL) и конечные точки идентификации/аутентификации, например Microsoft Entra ID. Если вы используете непрерывное развертывание в Службе приложений, вам, возможно, также придется разрешить конечные точки в зависимости от типа и языка.
Непрерывное развертывание Linux
В частности, для непрерывного развертывания Linux необходимо разрешить oryx-cdn.microsoft.io:443
. Для Python также необходимо разрешить files.pythonhosted.org
, pypi.org
.
Проверка состояния
Azure использует порт UDP 30 000 для проверки работоспособности сети. Если вы блокируете этот трафик, оно не будет напрямую влиять на приложение, но это будет сложнее для поддержка Azure обнаружить и устранить проблемы, связанные с сетью.
Частные порты
Функция Служба приложений частных портов использует порты 20 000 до 30 000 в TCP и UDP для маршрутизации трафика между экземплярами через интегрированную сеть. Указанный диапазон портов должен быть открыт и для входящего, и для исходящего трафика.
Локальный трафик
Если требуется маршрутизировать исходящий трафик локально, можно использовать таблицу маршрутизации для отправки исходящего трафика на шлюз Azure ExpressRoute. Если вы направляете трафик в шлюз, установите во внешней сети маршруты для возврата ответов. Маршруты протокола BGP также влияют на трафик приложения. Если у вас есть маршруты BGP, например для шлюза ExpressRoute, они повлияют на исходящий трафик приложения. Как и определяемые пользователем маршруты, маршруты BGP влияют на трафик в соответствии с настройками области маршрутизации.
Конечные точки служб
Интеграция виртуальной сети позволяет получить доступ к службам Azure, защищенным конечными точками службы. Для доступа к службе, защищенной конечной точкой, выполните следующие действия:
- Настройте интеграцию виртуальной сети с веб-приложением, чтобы подключиться к определенной подсети для интеграции.
- Перейти в целевую службу и настроить конечные точки службы для подсети интеграции.
Частные конечные точки
Если вы хотите выполнять вызовы к частным конечным точкам, убедитесь, что поиск в DNS разрешается в частную конечную точку. Можно принудительно применить это поведение одним из следующих способов.
- Настроить интеграцию с частными зонами Azure DNS. Когда в виртуальной сети нет настраиваемого DNS-сервера, интеграция выполняется автоматически, если зоны связаны с виртуальной сетью.
- Управляйте частной конечной точкой в DNS-сервере, используемом вашим приложением. Для управления конфигурацией необходимо знать IP-адрес частной конечной точки. Затем укажите конечную точку, с которой вы пытаетесь связаться по этому адресу, используя запись A.
- Настройка собственного DNS-сервера для перенаправления в частные зоны Azure DNS.
частные зоны Azure DNS;
После интеграции приложения с виртуальной сетью используется тот же DNS-сервер, с которым настроена виртуальная сеть. Если пользовательская служба DNS не указана, используется служба DNS Azure по умолчанию и все частные зоны, связанные с этой виртуальной сетью.
Ограничения
Существуют некоторые ограничения, связанные с интеграцией виртуальной сети:
- Для этой функции требуется неиспользуемая подсеть с блоком IPv4-адресов
/28
или больше в виртуальной сети Azure Resource Manager. Для MPSJ требуется блок/26
или больше. - Приложение и виртуальная сеть должны находиться в одном регионе.
- Для виртуальной сети интеграции не могут быть определены диапазоны адресов IPv6.
- Для интеграционной подсети не могут быть активированы политики конечных точек службы.
- Невозможно удалить виртуальную сеть с интегрированным приложением. Перед удалением виртуальной сети необходимо удалить интеграцию.
- В каждом плане App Service не может быть более двух интеграций виртуальной сети. Несколько приложений в одном плане службы приложений могут использовать интеграцию с той же виртуальной сетью.
- Вы не можете изменить подписку приложения или плана, пока приложение использует интеграцию с виртуальной сетью.
- Журналы службы приложений в частных учетных записях хранения в настоящее время не поддерживаются. Мы рекомендуем использовать ведение журнала диагностики и разрешить доступ доверенным службам для учетной записи хранения.
Доступ к локальным ресурсам
Дополнительная конфигурация не требуется для подключения функции интеграции виртуальной сети через виртуальную сеть к локальным ресурсам. Достаточно подключить виртуальную сеть к локальным ресурсам с помощью ExpressRoute или VPN типа "сеть — сеть".
Пиринг
Если вы используете пиринг с интеграцией виртуальной сети, вам больше не нужно настраивать.
Управление интеграцией с виртуальной сетью
Подключение к виртуальной сети и отключение от нее совершается на уровне приложений. Операции, которые могут повлиять на интеграцию нескольких приложений с виртуальной сетью, выполняются на уровне плана службы приложений. Открыв в приложении раздел >Сеть>Интеграция виртуальной сети, вы можете просмотреть подробные сведения о своей виртуальной сети. Аналогичную информацию можно увидеть на уровне плана службы приложений в разделе План службы приложений>Сеть>Интеграция виртуальной сети.
В представлении приложения экземпляра интеграции виртуальной сети вы можете отключить ваше приложение от виртуальной сети и настроить маршрутизацию для приложений. Чтобы отключить приложение от виртуальной сети, выберите Отключить. При отключении от виртуальной сети приложение перезапускается. Виртуальная сеть при отключении не меняется. Подсеть не удаляется. Если вы хотите удалить виртуальную сеть, сначала отключите приложение от виртуальной сети.
Частный IP-адрес, назначенный экземпляру, доступен через переменную среды WEBSITE_PRIVATE_IP. В пользовательском интерфейсе консоли Kudu также отображается список переменных среды, доступных для веб-приложения. Этот IP-адрес назначается из диапазона адресов интегрированной подсети. Этот IP-адрес используется веб-приложением для подключения к ресурсам через виртуальную сеть Azure.
Примечание.
Значение WEBSITE_PRIVATE_IP привязано к изменению. Однако он будет IP-адресом в диапазоне адресов подсети интеграции, поэтому вам потребуется разрешить доступ из всего диапазона адресов.
Сведения о тарифах
Функция интеграции с виртуальной сетью не требует дополнительной платы сверх тарифного плана App Service.
Устранение неполадок
Эту функцию легко настроить, но это не означает, что ваш опыт будет без проблем. При возникновении проблем с доступом к нужной конечной точке можно выполнить различные действия в зависимости от того, что вы наблюдаете. Для получения дополнительной информации см. руководство по устранению неполадок интеграции с виртуальной сетью.
Примечание.
- Интеграция с виртуальной сетью не поддерживается для сценариев Docker Compose в Службе приложений.
- Ограничения доступа не применяются к трафику, проходящим через частную конечную точку.
Удаление плана Службы приложений или приложения до отключения сетевой интеграции.
Если вы удалили приложение или план Служба приложений без отключения интеграции виртуальной сети, вы не сможете выполнять операции обновления и удаления в виртуальной сети или подсети, которая использовалась для интеграции с удаленным ресурсом. Делегирование подсети 'Microsoft.Web/serverFarms' все еще назначено вашей подсети, что предотвращает операции обновления и удаления.
Чтобы снова обновить или удалить подсеть или виртуальную сеть, необходимо повторно создать интеграцию виртуальной сети, а затем отключить ее:
- Повторно создайте план и приложение Служба приложений (обязательно использовать точно то же имя веб-приложения, что и раньше).
- Перейдите к сети в приложении в портал Azure и настройте интеграцию виртуальной сети.
- После настройки интеграции виртуальной сети нажмите кнопку "Отключить".
- Удалите план службы приложений или приложение.
- Обновите или удалите подсеть или виртуальную сеть.
Если после выполнения этих действий по-прежнему возникают проблемы с интеграцией виртуальной сети, обратитесь к служба поддержки Майкрософт.