[Azure] 使用混合式連接,讓WebApp不使用VPN就可以連接內部網路進行資料存取

要將公司內部網路的資料與Azure雲端環境進行同步,SQL Server與AD都有工具可以進行同步更新
但是若是雲端上的WebApp要將資料傳回內網的資料庫中,難度似乎就增加了
許多人第一個想到的可能是VPN連線,不過透過WebApp的混合式連接,就不用建立複雜的VPN環境,也可以快速的將資料回傳至內部網路了
本篇文章會說明如何透過混合式連線的方法,將資料回寫至本地端內部網路的SQL Server中

要在WebApp上建立混合式連線的方法很簡單,依照下面的步驟就可以完成建立了

1.在Azure WebApp的設定畫面中,點選[網路],然後點選[設定您的混合式連接端點]

2.點選[新增]

3.建立混合式連線的資訊,名稱的地方請給予一個好記的名稱,主機名稱請輸入本地端要連接的伺服器主機名稱,並輸入連接埠號,在這裡我先輸入要連的為SQL Server,所以是1433,由於混合式連線依賴一個BizTalk服務,所以也必須建立一個BizTalk服務項目

一個BizTalk服務可以給多個混合式連線使用
[重要] 主機名稱請一定要使用本地端主機的電腦名稱,使用IP會無法連線
[重要] 主機名稱請不要使用特殊字元,如減號或是底線

4.建立完成後,進入混合式連接的清單畫面,目前是還未連線的狀態,點選右方的[接聽程式設定],會取得接聽程式的連線字串內容,先將它記下來,等一下會用到

5.接著,回到本地端要連線的主機上,先下載[Microsoft Azure Hybrid Connection Manager]這個應用程式,並進行安裝 ,設定畫面中會出現輸入連線字串的方塊,請在這裡將前一個步驟複製下來的連線字串貼上並按下[OK]

6.完成設定後,回到Portal上WebApp的網路設定畫面,可以看到已經完成連線了

7.到這個步驟,WebApp就已經與HCM(Hybrid Connection Manager)主機完成連線了,接著我們把會存取到本地端SQL Server的應用程式發佈至WebApp上並進行存取的動作,可以看到Azure上的WebApp可以順利的存取到本地端SQL Server的資料庫內容了

資料庫連接字串的內容,伺服器不能用IP,必須要使用主機名稱才可以,就如同混合式連線中的設定一樣,例如:"Server=[伺服器主機名稱]"

Azure上的WebApp在某些情況下,有需要將資料同步回內部網路的資料庫或是伺服器中,在這樣簡單的需求下,不用建立到複雜的VPN環境,採用單純的混合式連接就可以達到資料與網路連接的效果了

混合式連接會用到80、443、5671、9350~9354這幾個Port,請於對外防火牆加上這幾個設定
對於本地端伺服器來說,防火牆只要開啟Outbound的連線就可以,一但HCM連接上之後,從Azure WebApp上的資料要下傳就不用再開立新通道
[重要] 混合式連接不支援UDP的通訊協定

參考資料:
混合式連線概觀
建立和管理混合式連線
將 Azure 網站連線到內部部署資源
從 Azure Web 應用程式連線至內部部署的 SQL Server 
Azure 行動服務和混合式連線