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

Наша инфраструктурная команда работала над настройкой 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 не блокирует этот порт:

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

1 ответ

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

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