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


Connect your application to Azure SQL Managed Instance (Подключение приложения к управляемому экземпляру SQL Azure)

Область применения: Управляемый экземпляр SQL Azure

В этой статье описывается, как подключить приложение к Управляемому экземпляру SQL Azure в нескольких различных сценариях приложений внутри или между виртуальными сетями Azure.

Сейчас вам доступно много вариантов для размещения приложений. Вы можете разместить приложение в облаке с помощью Службы приложений Azure или некоторых интегрированных параметров виртуальной сети Azure. Например, среда службы приложений Azure, виртуальные машины Azure и масштабируемые наборы виртуальных машин. Вы также можете использовать гибридный (смешанный) облачный подход и хранить приложения в локальной среде. Независимо от выбранного варианта приложение может подключаться к Управляемому экземпляру SQL Azure во многих различных сценариях приложений внутри или между виртуальными сетями Azure.

Вы также можете включить доступ к управляемому экземпляру SQL извне виртуальной сети, например из мультитенантных служб Azure, таких как Power BI и Служба приложений Azure, или из локальной сети, не подключенной к виртуальным сетям через VPN. Чтобы выполнить эти и аналогичные сценарии, см. инструкции по настройке общедоступной конечной точки для Управляемого экземпляра SQL Azure.

Схема, демонстрирующая высокий уровень доступности.

Подключение из одной виртуальной сети

Самый простой сценарий — подключение приложения в той же виртуальной сети, что и управляемый экземпляр SQL. Виртуальные машины внутри виртуальной сети могут подключаться друг к другу напрямую, даже если они в разных подсетях. Это означает, что для подключения приложения внутри среды службы приложений или виртуальной машины, развернутой в той же виртуальной сети, что и управляемый экземпляр SQL, необходимо настроить строку подключения для целевой конечной точки, локальной для VNet.

Подключение из другой виртуальной сети

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

Существует три варианта подключения к управляемому экземпляру SQL в другой виртуальной сети.

Из трех вариантов частные конечные точки являются наиболее безопасным и экономичным, так как они:

  • открывает доступ к Управляемому экземпляру SQL только из его виртуальной сети.
  • разрешить только одностороннее соединение.
  • требуется только один IP-адрес в виртуальной сети приложения.

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

Подключение из локальной сети

Вы можете подключить ваше локальное приложение на локальном сервере к локальной конечной точке VNet вашего управляемого экземпляра SQL. Чтобы получить к нему доступ из локальной среды, необходимо установить подключение типа "site-to-site" между приложением и виртуальной сетью управляемого экземпляра SQL. Если для управляемого экземпляра SQL достаточно доступа только к данным, вы можете подключиться к нему извне виртуальной сети через общедоступную конечную точку. Дополнительные сведения см. в статье "Настройка общедоступной конечной точки в управляемом экземпляре SQL Azure ".

Существует два варианта подключения локального приложения к виртуальной сети Azure:

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

Подключить блок разработчика

Кроме того, можно подключить разработческую среду к управляемому экземпляру SQL. Чтобы получить доступ к нему с вашей рабочей станции разработчика через виртуальную сеть, сначала необходимо установить подключение между вашей рабочей станцией разработчика и виртуальной сетью "Управляемый экземпляр SQL". Для этого настройте подключение "точка — сеть" к виртуальной сети с помощью собственной аутентификации Azure на основе сертификата. Дополнительные сведения см. в статье Configure a point-to-site connection to connect to an Azure SQL Database Managed Instance from on-premises computer (Установка подключения "точка — сеть" к Управляемому экземпляру Базы данных SQL Azure из локального компьютера).

Сведения о доступе к управляемому экземпляру SQL за пределами виртуальной сети см. в статье "Настройка общедоступной конечной точки в Управляемом экземпляре SQL Azure".

Подключение к спицевой сети

Другой распространенный сценарий заключается в том, что VPN-шлюз устанавливается в отдельной виртуальной сети (и, возможно, подписке) — в периферийной сети — из той, в которой размещается управляемый экземпляр SQL (сеть концентратора). Подключение к управляемому экземпляру SQL из периферийной сети настраивается с помощью одного из вариантов, перечисленных в разделе Connect из другой виртуальной сети: частные конечные точки, пиринг между виртуальными сетями Azure или шлюз виртуальной сети.

На следующей схеме архитектуры показан пиринг между виртуальными сетями:

Схема пиринга виртуальной сети.

Убедитесь, что при установлении пиринговой связи между центральной сетью и периферийными сетями VPN-шлюз видит IP-адреса из центральной сети. Для этого внесите следующие изменения в параметры пиринга:

  1. В виртуальной сети, где размещен VPN-шлюз (spoke-сеть), перейдите в Пиринги, перейдите к одноранговому соединению виртуальной сети для управляемого экземпляра SQL и выберите Разрешить транзит шлюза.
  2. В виртуальной сети, которая размещает Управляемый экземпляр SQL (сеть концентратора), перейдите на Пиринги, найдите соединение одноранговой виртуальной сети для VPN-шлюза и выберите "Использовать удаленные шлюзы".

Подключение службы приложений Azure App Service

Вы также можете подключить приложение, размещенное службой приложение Azure, при интеграции с виртуальной сетью. Для этого выберите один из механизмов, перечисленных в разделе Connect из другой виртуальной сети. Сведения о доступе к управляемому экземпляру SQL за пределами виртуальной сети см. в статье "Настройка общедоступных конечных точек в Управляемом экземпляре SQL Azure".

Особый случай подключения службы приложений Azure к Управляемому экземпляру SQL заключается в интеграции службы приложений Azure с сетью, связанной с виртуальной сетью Управляемого экземпляра SQL. В этом случае следует дополнительно настроить следующее.

  • Виртуальная сеть Управляемого экземпляра SQL не должна иметь шлюз
  • Для виртуальной сети SQL Managed Instance должен быть установлен параметр Use remote gateways
  • Для одноранговой виртуальной сети должен быть установлен параметр Allow gateway transit

Этот вариант сценария показан на схеме ниже.

Схема интегрированного пиринга приложений.

Примечание.

Функция интеграции виртуальной сети не интегрирует приложение с виртуальной сетью с шлюзом ExpressRoute. Даже если шлюз ExpressRoute настроен в режиме сосуществования, интеграция виртуальной сети не работает. Если требуется получить доступ к ресурсам через соединение ExpressRoute, можно использовать Среду службы приложений, которая работает в виртуальной сети.

Чтобы устранить неполадки с доступом к службе Azure App через виртуальную сеть, просмотрите руководство по устранению неполадок виртуальных сетей и приложений.

Устранение неполадок с подключением

Чтобы устранить проблемы с подключением, ознакомьтесь со следующими параметрами:

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

  • Убедитесь, что распространение маршрутов шлюза отключено для таблицы маршрутов, связанной с виртуальной сетью.

  • Если вы используете VPN типа "точка — сеть", проверьте конфигурацию в портале Azure, чтобы узнать, отображаются ли номера входящего и исходящего трафика. Номера, отличные от нуля, указывают на то, что Azure направляет трафик в локальную среду или из нее.

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

  • Убедитесь, что у клиентского компьютера (на котором запущен VPN-клиент) есть записи маршрутов для всех виртуальных сетей, к которым нужно получать доступ. Маршруты хранятся в %AppData%\Roaming\Microsoft\Network\Connections\Cm\<GUID>\routes.txt.

    Снимок экрана: route.txt.

    Как показано на этом рисунке, существуют две записи для каждой используемой виртуальной сети и третья запись для конечной точки VPN, которая настроена на портале.

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

    C:\ >route print -4
    ===========================================================================
    Interface List
    14...54 ee 75 67 6b 39 ......Intel(R) Ethernet Connection (3) I218-LM
    57...........................rndatavnet
    18...94 65 9c 7d e5 ce ......Intel(R) Dual Band Wireless-AC 7265
    1...........................Software Loopback Interface 1
    Adapter===========================================================================
    
    IPv4 Route Table
    ===========================================================================
    Active Routes:
    Network Destination        Netmask          Gateway       Interface  Metric
           0.0.0.0          0.0.0.0       10.83.72.1     10.83.74.112     35
          10.0.0.0    255.255.255.0         On-link       172.26.34.2     43
          10.4.0.0    255.255.255.0         On-link       172.26.34.2     43
    ===========================================================================
    Persistent Routes:
    None
    
  • Если вы используете пиринг между виртуальными сетями, убедитесь, что вы выполнили инструкции по настройке разрешения транзита шлюза и использования удаленных шлюзов.

  • Если для подключения размещенного приложения Службы приложений Azure используется пиринг виртуальной сети, а у виртуальной сети SQL Managed Instance есть диапазон общедоступных IP-адресов, убедитесь, что параметры размещенного приложения позволяют маршрутизировать исходящий трафик на общедоступные IP-адреса. Следуйте инструкциям в статье Интеграция с региональными виртуальными сетями.

Хотя старые версии могут работать, в следующей таблице перечислены рекомендуемые минимальные версии средств и драйверов для подключения к Управляемый экземпляр SQL:

Драйвер или средство Версия
.NET Framework 4.6.1 (или .NET Core)
Драйвер ODBC версия 17
Драйвер PHP 5.2.0
Драйвер JDBC 6.4.0
Драйвер Node.js 2.1.1
Драйвер OLEDB 18.0.2.0
SSMS 18.0 или выше
SMO 150 или больше

Примечание.

Старые версии драйверов JDBC 4.0 и 4.1 (доступные в Java SE 6 и Java SE 7 соответственно) могут отображаться на сервере как TDS 7.4, даже если они не полностью реализуют TDS 7.4. Эти драйверы не могут подключаться к управляемым экземплярам SQL при установленном типе подключения на перенаправление. Обновите драйверы до JDBC 4.2 или более поздней версии или переключите тип подключения экземпляра на прокси-сервер.