Сбой запроса локального SQL Server из веб-приложения Azure (через Azure S2S VPN) - PullRequest
0 голосов
/ 05 февраля 2019

Наша инфраструктурная команда работала над настройкой VPN-соединения Azure между сайтами между нашей подпиской Azure и нашим брандмауэром, предварительно выполнив эти шаги .Чтобы проверить это, мы создали простое веб-приложение Azure, которое выполняет запрос к SQL-серверу, расположенному за брандмауэром.

Это веб-приложение работает локально без проблем.Кроме того, тот же код и строка подключения, скомпилированные как консольное приложение и запущенные на виртуальной машине Azure, также работают правильно.Но при развертывании в веб-приложении в Azure происходит сбой подключения к SQL Server:

[Win32Exception (0x80004005): истекло время ожидания операции ожидания]

[SqlException (0x80131904): При установлении соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром.Сервер не найден или не был доступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(поставщик: поставщик TCP, ошибка: 0 - истекло время ожидания операции ожидания.)]

Виртуальная машина Azure и веб-приложение настроены для указания на виртуальную сеть Azure.Похоже, что-то мешает веб-приложению обмениваться данными с сервером SQL через порт по умолчанию (1433).Если я открою консоль отладки веб-приложения и выполню команду tcpping на сервере SQL с портом по умолчанию (80), он успешно завершится.Но tcpping для порта 1433 истекло.

Похоже, что группа сетевой безопасности Azure не блокирует этот порт:

enter image description here

Единственные решения, которые я нашел и которые имеют отношение к нашей конкретной установке, сводятся к тому, что « использует вместо Azure Hybrid Connections », что не будет нашим первым выбором.

1 Ответ

0 голосов
/ 06 февраля 2019

После работы с поддержкой Microsoft были внесены следующие изменения, и теперь интеграция с VNet работает.Я извиняюсь за отсутствие подробностей по некоторым из них, но наша команда по инфраструктуре выполнила большую часть устранения неполадок.Надеемся, что некоторые из этих пунктов помогут кому-то еще указать направление решения для их настройки:

  • Первоначально подключение осуществлялось через общедоступный Интернет, а не через VNET Integration и VPN.Мы обнаружили, что интеграция с VNET не удалась из-за используемого типа туннеля.Служба приложений Azure требует, чтобы тип туннеля был SSTP.После того, как мы изменили его и синхронизировали сеть, мы смогли tcpping SQL Server через его частный IP-адрес.
  • Мы заметили, что он должен разрешить в локальной сети пул адресов точка-сайт,В качестве обходного пути мы решили использовать новую интеграцию с VNET (предварительная версия).Мы создали пустую подсеть и смогли использовать эту новую функцию.
  • Мы заметили, что служба приложений не использовала собственный DNS.Для решения этой проблемы мы добавили DNS в виртуальной сети, а также в настройках приложения («WEBSITE_DNS_SERVER») для веб-приложения.
...