Поделиться через


Использование шлюза Azure NAT в мультитенантном решении

Шлюз NAT Azure обеспечивает управление исходящим сетевым подключением из ресурсов, размещенных в виртуальной сети Azure. В этой статье описывается, как шлюз NAT Azure может снизить нехватку портов преобразования сетевых адресов источника (SNAT), что может повлиять на мультитенантные приложения. В нем также описывается, как шлюз NAT Azure назначает статические IP-адреса исходящему трафику из мультитенантного решения.

Замечание

Брандмауэры, такие как брандмауэр Azure, позволяют контролировать и регистрировать исходящий трафик. Брандмауэр Azure также предоставляет аналогичное масштабирование портов SNAT и контроль над исходящими IP-адресами, как в шлюзе Azure NAT. Шлюз NAT Azure является менее дорогостоящим, но он имеет меньше возможностей и не является продуктом безопасности.

Функции, поддерживающие мультитенантность

В следующих разделах описаны функции шлюза Azure NAT, которые можно использовать в мультитенантных решениях.

Высокопроизводительные порты SNAT

Порты SNAT выделяются, когда приложение делает несколько одновременных исходящих подключений к одному и тому же общедоступному IP-адресу на одном порту. Порты SNAT — это конечный ресурс в подсистемах балансировки нагрузки. Если приложение открывает большое количество отдельных подключений к одному узлу, оно может использовать все доступные порты SNAT. Этот сценарий называется исчерпанием портов SNAT.

В большинстве приложений исчерпание портов SNAT указывает, что приложение неправильно обрабатывает HTTP-подключения или tcp-порты. Однако некоторые многопользовательские приложения находятся под высоким риском превышения ограничений портов SNAT, даже если они повторно используют подключения. Например, этот сценарий может произойти, когда приложение подключается ко многим базам данных, зависящим от клиента, за тем же шлюзом баз данных.

Подсказка

Если вы наблюдаете исчерпание портов SNAT в мультитенантном приложении, сначала следует проверить , следует ли ваше приложение хорошим практикам. Убедитесь, что вы повторно используете HTTP-подключения и не создаете новые подключения при каждом подключении к внешней службе. Возможно, вы сможете развернуть шлюз преобразования сетевых адресов (NAT), чтобы обойти проблему, но если код не соответствует рекомендациям, вы можете столкнуться с проблемой в будущем.

Истощение портов SNAT ухудшается при работе со службами Azure, которые совместно используют распределение портов SNAT между несколькими клиентами. Примеры служб, которые ведут себя таким образом, включают Службу приложений Azure и Функции Azure. Дополнительные сведения см. в разделе "Устранение временных ошибок исходящего подключения" в Службе приложений.

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

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

Управление исходящими IP-адресами

Управление исходящими IP-адресами может быть полезным в мультитенантных приложениях, если у вас есть все следующие требования:

  • Службы Azure, которые не предоставляют выделенные статические IP-адреса для исходящего трафика, используются автоматически. К этим службам относятся App Service, Azure Functions, Azure API Management (при запуске на уровне потребления) и Azure Container Instances.

  • Необходимо подключиться к сетям клиентов через Интернет.

  • Ваши арендаторы должны фильтровать входящий трафик на основе IP-адреса каждого входящего запроса.

При применении экземпляра шлюза NAT Azure к подсети любой исходящий трафик из этой подсети использует общедоступные IP-адреса, связанные с шлюзом NAT.

Замечание

При связывании нескольких общедоступных IP-адресов с одним шлюзом NAT исходящий трафик может поступать из любого из этих IP-адресов. Возможно, потребуется настроить правила брандмауэра в месте назначения. Разрешить каждый IP-адрес по отдельности или использовать ресурс префикса общедоступного IP-адреса для определения набора общедоступных IP-адресов в одном диапазоне.

Модели изоляции

Если необходимо предоставить разные исходящие общедоступные IP-адреса для каждого клиента, необходимо развернуть отдельные ресурсы шлюза Azure NAT. Каждая подсеть может быть связана с одним экземпляром шлюза Azure NAT. Чтобы развернуть дополнительные шлюзы NAT, необходимо развернуть несколько подсетей или виртуальных сетей. В свою очередь, вам, скорее всего, потребуется развернуть несколько наборов вычислительных ресурсов.

Дополнительные сведения о проектировании мультитенантной топологии сети см. в разделе " Архитектурные подходы к сети" в мультитенантных решениях.

Соавторы

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

Основной автор:

  • Джон Даунс | Главный инженер программного обеспечения

Другие участники:

Чтобы просмотреть неопубликованные профили LinkedIn, войдите в LinkedIn.

Дальнейшие действия