簡體   English   中英

從Azure Web應用程序(通過Azure S2S VPN)查詢本地SQL Server失敗

[英]Query of on-premises SQL Server from Azure web app (over Azure S2S VPN) fails

我們的基礎架構團隊已經按照以下步驟努力在Azure訂閱與本地防火牆之間配置了站點到站點Azure VPN連接。 為了測試這一點,我們創建了一個簡單的Azure Web應用程序,該應用程序針對位於防火牆后面的本地SQL Server進行查詢。

此網絡應用程序可在本地正常運行。 此外,相同的代碼和連接字符串在編譯為控制台應用程序並在Azure虛擬機上運行時也可以正常工作。 但是,當部署到Azure中的Web應用程序時,與SQL Server的連接失敗:

[Win32Exception(0x80004005):等待操作超時]

[SqlException(0x80131904):建立與SQL Server的連接時發生與網絡相關或特定於實例的錯誤。 服務器未找到或無法訪問。 驗證實例名稱正確,並且已將SQL Server配置為允許遠程連接。 (提供者:TCP提供程序,錯誤:0-等待操作超時。)]

Azure VM和Web應用程序都配置為指向Azure VNet。 似乎是某種原因阻止了Web應用程序在其默認端口(1433)上與SQL Server通信。 如果打開Web應用程序的調試控制台,並使用默認端口(80)在SQL Server上進行tcpping ,則它將成功返回。 但是tcpping端口1433超時。

看來Azure網絡安全組沒有阻止該端口:

在此處輸入圖片說明

我發現與我們的特定設置相關的唯一解決方案基本上可以歸結為“ 改為使用Azure混合連接 ”,這不是我們的首選。

在獲得Microsoft支持之后,進行了以下更改,並且VNet集成現在可以正常工作。 對於其中的一些細節,我深表歉意,但是我們的基礎架構團隊做了大部分的故障排除。 希望其中一些項目可以幫助其他人為他們的安裝解決方案指明方向:

  • 最初,連接是通過公共Internet進行的,而不是通過VNET Integration和VPN進行的。 我們發現由於使用了隧道類型,VNET集成失敗。 Azure App Service要求隧道類型為SSTP。 更改並同步網絡后,我們便可以通過其專用IP來tcpping SQL Server。
  • 我們注意到,它必須允許本地網絡上的點對站點地址池。 解決方法是,我們決定使用新的VNET集成(預覽)。 我們創建了一個空子網,並且能夠使用此新功能。
  • 我們注意到應用服務未使用自定義DNS。 為解決此問題,我們在虛擬網絡上以及Web應用程序的“應用程序設置”(“ WEBSITE_DNS_SERVER”)中添加了DNS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM