Рекомендации по работе с сетями в Среде службы приложений

Важно!

Эта статья посвящена Среде службы приложений версии 2, которая используется с планами службы приложений (цен. категория "Изолированный"). Поддержка среды службы приложений версии 2 будет прекращена 31 августа 2024 года. Имеется новая версия среды службы приложений, которая проще в использовании и которая работает на более мощной инфраструктуре. Чтобы узнать больше о новой версии, начните с изучения статьи Введение в среду службы приложения. Если вы используете Среду службы приложений версии 2, выполните действия, описанные в этой статье, чтобы перейти на новую версию.

Среда службы приложений — это развернутая служба Службы приложений в подсети виртуальной сети Azure. Есть два типа развернутых служб для среды Службы приложений Azure.

Примечание

Эта статья о Среде службы приложений версии 2, которая используется с планами Службы приложений (ценовая категория "Изолированный").

Независимо от типа развертывания все Среды службы приложений имеют общедоступный виртуальный IP-адрес (VIP). VIP используется для входящего трафика управления и в качестве адреса при выполнении вызовов из Среды службы приложений в Интернет. Такие вызовы покидают виртуальную сеть через виртуальный IP-адрес, назначенный Среде службы приложений.

Если приложения отправляют вызовы к ресурсам в виртуальной сети или через VPN, то исходный IP-адрес является одним из IP-адресов в подсети. Так как Среда службы приложений находится в виртуальной сети, она также может обращаться к ресурсам в виртуальной сети без дополнительной настройки. Если виртуальная сеть подключена к локальной сети, ее ресурсы также доступны для приложений без дополнительных настроек.

Схема, на которую показаны элементы внешнего развертывания. 

Если у вас есть Среда службы приложений с внешним развертыванием, общедоступный виртуальный IP-адрес также является конечной точкой, в которую ваши приложения разрешаются следующими протоколами и компонентами:

  • HTTP/S
  • FTP/S
  • Веб-развертывание
  • Удаленная отладка

Схема, показывающая элементы развертывания внутренней подсистемы балансировки нагрузки.

В развертывании Среды службы приложений с внутренней системой балансировки нагрузки внутренним адресом является конечная точка для HTTP/S, FTP/S, веб-развертывания и удаленной отладки.

Размер подсети

После развертывания Среда службы приложений изменить размер подсети, используемой для ее размещения, нельзя. В Среде службы приложений используется адрес для каждой роли инфраструктуры и каждого изолированного экземпляра плана службы приложений. Кроме того, служба сетей Azure использует пять адресов для каждой создаваемой ею подсети.

В Среде службы приложений без планов службы приложений перед созданием приложения будут использоваться 12 адресов. В ASE с подсистемой балансировки нагрузки перед созданием приложения будут использоваться 13 адресов. При горизонтальном увеличении масштаба роли инфраструктуры добавляются для каждых 15 и 20 экземпляров плана Службы приложений.

Важно!

В подсети должна размещаться исключительно Среда службы приложений. Обязательно выберите достаточно большое адресное пространство для будущего расширения. Впоследствии этот параметр уже нельзя изменить. Мы рекомендуем размер /24 с 256 адресами.

При масштабировании добавляются новые роли соответствующего размера, а затем рабочие нагрузки перемещаются из текущего размера в целевой. Исходные виртуальные машины удаляются только после переноса рабочих нагрузок. Например, если у вас есть Среда службы приложений со 100 экземплярами плана Службы приложений, в течение определенного периода вам потребуется вдвое больше виртуальных машин.

Входящие и исходящие зависимости

В следующих разделах рассматриваются зависимости, которые следует учитывать для Среды службы приложений. Еще в одном разделе обсуждаются параметры DNS.

Входящие зависимости

Только для функционирования Среды службы приложений должны быть открыты следующие порты.

Использование Исходный тип Кому
Управление Адреса управления службой приложений Подсеть Среды службы приложений: 454, 455
Внутренний обмен данными в Среде службы приложений Подсеть Среды службы приложений: все порты Подсеть Среды службы приложений: все порты
Разрешение входящего трафика Azure Load Balancer Azure Load Balancer Подсеть Среды службы приложений: 16001

Порты 7564 и 1221 могут отображаться как открытые при сканировании портов. Они отвечают только IP-адресом. При необходимости их можно заблокировать.

Помимо системы мониторинга, входящий административный трафик обеспечивает контроль и управление Средой службы приложений. Исходные адреса для этого трафика перечислены в документе Адреса управления среды Службы приложений. В конфигурации безопасности сети необходимо разрешить доступ со всех адресов управления Среды службы приложений через порты 454 и 455. Если доступ с этих адресов блокируется, Среда службы приложений утратит работоспособность, а затем приостановит работу. На порты 454 и 455 TCP-трафик должен поступать с одного виртуального IP-адреса, иначе возникнет проблема с асимметричной маршрутизацией.

В подсети существует много портов, используемых для внутреннего взаимодействия компонентов, которые можно изменять. Для этого необходимо, чтобы все порты в подсети были доступны из нее.

Для взаимодействия между балансировщиком нагрузки Azure и подсетью Среды службы приложений необходимо открыть как минимум порты 454, 455 и 16001. Если вы используете развертывание с внутренней подсистемой балансировки нагрузки, вы можете заблокировать весь трафик, кроме портов 454, 455, 16001. При использовании внешнего развертывания необходимо открыть обычные порты доступа к приложениям. Вот некоторые из них:

Использование порты;
HTTP/HTTPS 80, 443
FTP/FTPS 21, 990, 10001-10020
Удаленная отладка в Visual Studio 4020, 4022, 4024
Служба веб-развертывания 8172

Если заблокировать порты приложения, Среда службы приложений сможет работать, а приложение, возможно, нет. Если вы используете присвоенные приложениям IP-адреса во внешнем развертывании, необходимо разрешить передачу трафика с этих адресов в подсеть. На портале Среды службы приложений перейдите в раздел IP-адреса и найдите порты, с которых необходимо разрешить трафик.

Исходящие зависимости

Что касается доступа исходящего трафика, Среда службы приложений взаимодействует с разными внешними системами. Эти системные зависимости определяются по DNS-именам и не сопоставляются с фиксированным набором IP-адресов. Среде службы приложений требуется доступ исходящего трафика из подсети на все внешние IP-адреса через различные порты.

Среда службы приложений взаимодействует с доступными адресами в Интернете через следующие порты:

Использование порты;
DNS 53
NTP 123
CRL, обновления Windows, зависимости Linux, службы Azure 80/443
Azure SQL 1433
Мониторинг 12000

Исходящие зависимости перечислены в разделе Блокирование среды службы приложений. Если у Среды службы приложений нет доступа к этим зависимостям, она прекращает работу. Когда это затягивается на длительный период, среда блокируется.

DNS пользователя

Если в виртуальной сети настроен определенный пользователем DNS-сервер, то она используется для рабочих нагрузок арендатора. Среда службы приложений по-прежнему использует Azure DNS в целях управления. Если виртуальная сеть настроена с помощью выбранного пользователем DNS-сервера, этот сервер должен быть доступен из подсети.

Примечание

При подключении хранилищ и извлечении образов контейнеров в Среде службы приложений версии 2 DNS-имена, определяемые клиентом в виртуальной сети или с помощью параметра WEBSITE_DNS_SERVER приложения, не применяются.

Чтобы протестировать разрешение DNS из веб-приложения, используйте команду консоли nameresolver. Перейдите в окно отладки на сайте scm для приложения или перейдите к приложению на портале и выберите консоль. В командной строке системного приглашения можно запустить команду nameresolver вместе с искомым DNS-именем. Получаемый результат такой же, как и тот, что приложение получает во время такого же поиска. Если используется nslookup, уточняющий запрос выполняется с помощью Azure DNS.

При изменении параметра DNS виртуальной сети, в которой находится Среда службы приложений, необходимо перезагрузить среду. Чтобы избежать перезагрузки, рекомендуется перед созданием Среды службы приложений настроить параметры DNS для своей виртуальной сети.

Зависимости портала

Помимо зависимостей, описанным в предыдущих разделах, есть и ряд дополнительных соображений, связанных с работой с порталом, о которых следует помнить. Некоторые возможности на портале Azure зависят от наличия прямого доступа к сайту диспетчера служб (SCM). Для каждого приложения в службе приложений Azure предусмотрено два URL-адреса. Первый URL-адрес предназначен для доступа к вашему приложению. Второй URL-адрес предназначен для доступа к сайту диспетчера служб, который также называется Консоль Kudu. Ниже перечислены компоненты, использующие сайт диспетчера служб.

  • Веб-задания
  • Функции
  • Потоковая передача журналов
  • Kudu
  • Модули
  • Обозреватель процессов
  • Консоль

При использовании внутренней подсистемы балансировки нагрузки сайт SCM недоступен извне виртуальной сети. Некоторые функции не будут работать на портале приложений, так как им требуется доступ к SCM-сайту приложения. Вы можете подключиться к сайту SCM напрямую, не используя портал.

Если доменное имя вашей внутренней подсистемы балансировки нагрузки — contoso.appserviceenvironment.net, а имя приложения — testapp, то приложение доступно по адресу testapp.contoso.appserviceenvironment.net. Связанный с ним сайт диспетчера служб доступен по адресу testapp.scm.contoso.appserviceenvironment.net.

IP-адреса

В Среде службы приложений есть несколько IP-адресов, на которые следует обратить внимание. К ним относятся:

  • Общедоступный IP-адрес для входящего трафика. Используется для трафика приложений во внешнем развертывании и трафика управления во внутреннем и внешнем развертываниях.
  • Общедоступный IP-адрес для исходящего трафика. Используется в качестве IP-адреса отправителя для исходящих подключений из виртуальной сети. Эти подключения не маршрутизируются через VPN.
  • IP-адрес внутренней подсистемы балансировки нагрузки. Этот адрес существует только во внутреннем развертывании.
  • Присвоенные приложению адреса с TLS/SSL на основе IP. Могут применяться, только если используется внешнее развертывание и настроена привязка TLS/SSL по IP-адресу.

Все эти IP-адреса можно просмотреть на портале Azure в пользовательском интерфейсе Среды службы приложений. Для внутреннего развертывания в списке отображается IP-адрес внутренней подсистемы балансировки нагрузки.

Примечание

Эти IP-адреса не меняются, пока Среда службы приложений запущена. Если Среда службы приложений приостанавливается (блокируется), а затем восстанавливается, используемые ею адреса изменятся. Обычной причиной приостановки является блокировка административного доступа входящего трафика или доступа к зависимости.

Снимок экрана: IP-адреса.

Присвоенные приложению IP-адреса

Внешнее развертывание позволяет назначать IP-адреса отдельным приложениям. Это невозможно сделать при внутреннем развертывании. Дополнительные сведения о настройке приложения для получения собственного IP-адреса см. в статье Защита пользовательского доменного имени с помощью привязки TLS/SSL в Службе приложений Azure.

Если у приложения есть собственный адрес с SSL на основе IP, Среда службы приложений резервирует два порта для сопоставления с этим IP-адресом. Один порт используется для трафика HTTP, а другой — для трафика HTTPS. Эти порты перечислены в разделе IP-адреса на портале Среды службы приложений. Порты должны быть открыты для трафика, поступающего с виртуального IP-адреса, иначе приложения будут недоступны. Это требование важно помнить при настройке групп безопасности сети (NSG).

Группы безопасности сети

Группы безопасности сети дают возможность управлять сетевым доступом в виртуальной сети. При использовании портала действует неявное правило всеобщего запрета с самым низким приоритетом. Поэтому необходимо создать правила разрешения.

В Среде службы приложений нет доступа к виртуальным машинам, используемым для ее размещения. Они входят в подписку, управляемую корпорацией Майкрософт. Чтобы ограничить доступ к приложениям, задайте в подсети группы безопасности сети. При этом обратите особое внимание на зависимости. Если заблокировать все зависимости, Среда службы приложений перестанет работать.

NSG можно настроить на портале Azure или с помощью PowerShell. Здесь описана настройка на портале Azure. Группы NSG создаются и управляются на портале в разделе Сеть как ресурс верхнего уровня.

Для работы среды требуются записи в NSG, разрешающие трафик:

Входящий трафик

  • TCP от тега службы IP-адреса AppServiceManagement через порты 454, 455
  • TCP от подсистемы балансировки нагрузки через порт 16001
  • Из подсети Среды службы приложений в подсеть Среды службы приложений через все порты

Исходящий трафик

  • UDP ко всем IP-адресам через порт 53
  • UDP ко всем IP-адресам через порт 123
  • TCP ко всем IP-адресам через порты 80 и 443
  • TCP к тегу службы IP-адреса Sql через порт 1433
  • TCP ко всем IP-адресам через порт 12000
  • В подсеть Среды службы приложений через все порты

Здесь не указаны порты, требующиеся для успешной работы приложений. Например, предположим, что приложению требуется вызывать сервер MySQL через порт 3306. Протокол сетевого времени (NTP), применяющий для работы порт 123, является протоколом синхронизации времени, используемый операционной системой. Конечные точки NTP не относятся к службам приложений, могут различаться в зависимости от операционной системы и не имеют четко определенного списка адресов. Чтобы предотвратить проблемы синхронизации времени, необходимо разрешить трафик UDP ко всем адресам через порт 123. Исходящий трафик TCP через порт 12000 предназначен для поддержки и анализа системы. Конечные точки являются динамическими и не имеют четко определенного набора адресов.

Стандартные порты доступа для приложения:

Использование порты;
HTTP/HTTPS 80, 443
FTP/FTPS 21, 990, 10001-10020
Удаленная отладка в Visual Studio 4020, 4022, 4024
Служба веб-развертывания 8172

Когда учтены требования к входящему и исходящему трафику, группы безопасности сети должны быть оформлены, как показано на этом снимке экрана:

Снимок экрана: правила безопасности для входящего трафика.

Правило по умолчанию активирует обмен данными между IP-адресами в виртуальной сети и подсетью. Другое правило по умолчанию позволяет подсистеме балансировки нагрузки, которую также называют общедоступным виртуальным IP-адресом, обмениваться данными со Средой службы приложений. Чтобы просмотреть правила по умолчанию, щелкните Правила по умолчанию рядом со значком Добавить.

Если поместить правило всеобщего запрета перед правилами по умолчанию, это будет препятствовать трафику между виртуальным IP-адресом и Средой службы приложений. Чтобы запретить трафик, поступающий из виртуальной сети, добавьте собственное правило для разрешения входящего трафика. Укажите для источника значение AzureLoadBalancer, для назначения — значение Any (Любое), а для диапазона портов — *. Поскольку правило группы безопасности сети применяется к подсети, указывать конкретное назначение не требуется.

Если приложению присвоен IP-адрес, то убедитесь, что порты остаются открытыми. Чтобы просмотреть порты, последовательно выберите Среда службы приложений>IP-адреса.  

Требуются все элементы, показанные в следующих правилах для исходящего трафика, за исключением правила ASE-internal-outbound. Они обеспечивают доступ к сети для зависимостей Среды службы приложений, которые упоминались ранее в этой статье. При блокировке любой из этих зависимостей Среда службы приложений прекратит работу. Правило с именем ASE-Internal-Outbound в списке позволяет Среде службы приложений взаимодействовать с другими ресурсами в виртуальной сети.

Снимок экрана: правила безопасности для исходящего трафика.

Примечание

Диапазон IP-адресов в правиле ASE-Internal-Outbound приведен только в качестве примера, а его необходимо изменить в соответствии с диапазоном подсети Среды службы приложений.

Определив группы безопасности сети, присвойте их подсети. Если вы не помните название виртуальной сети или подсети, его можно найти на портале управления Среды службы приложений. Чтобы присвоить подсети группу NSG, перейдите к пользовательскому интерфейсу подсети и выберите NSG.

Маршруты

Принудительное туннелирование применяется при настройке маршрутов в виртуальной сети, чтобы исходящий трафик не направлялся не в Интернет, а куда-то еще, например в шлюз ExpressRoute или на виртуальное устройство. Если требуется настроить Среду службы приложений таким образом, см. статью Настройка принудительного туннелирования в среде службы приложений.

При создании Среды службы приложений на портале также создается набор таблиц маршрутов для подсети. По этим маршрутам исходящий трафик отправляется непосредственно в Интернет.

Чтобы создать эти маршруты вручную, сделайте следующее:

  1. Перейдите на портал Azure и выберите элементы Сеть>Таблицы маршрутов.

  2. Создайте таблицу маршрутов в том же регионе, где находится виртуальная сеть.

  3. В пользовательском интерфейсе таблицы маршрутов последовательно выберите Маршруты>Добавить.

  4. Задайте для параметра Тип следующего прыжка значение Интернет, а для параметра Префикс адреса — значение 0.0.0.0/0. Нажмите кнопку Сохранить.

    Отобразится примерно следующее:

    Снимок экрана: функциональные маршруты.

  5. Создав таблицу маршрутов, перейдите к подсети. Выберите свою таблицу маршрутов из списка на портале. После сохранения изменений отобразится список групп безопасности сети и маршрутов, указанных в подсети.

    Снимок экрана: группы безопасности сети и маршруты.

Конечные точки служб

Конечные точки службы позволяют ограничить доступ к мультитенантным службам для набора виртуальных сетей и подсетей. Дополнительные сведения см. в статье Конечные точки служб в виртуальной сети.

При включении конечных точек службы в ресурс создаются маршруты с более высоким приоритетом. Если конечные точки службы используются в любой службе Azure с принудительным туннелированием Среды службы приложений, трафик к этим службам не будет подвергаться принудительному туннелированию.

Если конечные точки службы включены в подсеть с экземпляром Azure SQL, все экземпляры Azure SQL, подключенные к этой подсети, должны содержать конечные точки службы. Если вы хотите получить доступ к нескольким экземплярам Azure SQL в той же подсети, нельзя включать конечные точки службы только в один экземпляр SQL Azure. Из всех служб Azure служба Azure SQL является уникальной в отношении конечных точек службы. При включении конечных точек службы в хранилище Azure доступ к этому ресурсу из подсети блокируется, но он остается доступен для других учетных записей хранилища Azure, даже если они не содержат конечных точек службы.

Схема конечных точек службы.