在傳統企業環境中要使用雲端服務,應該會經常被問到雲端能不能存取地端(On-Promises)的伺服器,畢竟企業內部有些資源、資料是企業主不想放在別人家的,而這問題的標準答案絕對是 YES,BizTalk 的 Hybrid Connection 是一個不錯的解決方案。
BizTalk Hybrid Connections 已於 May 31, 2018 停止服務,剩下 Azure App Service 中可繼續使用 Hybrid Connections 服務,也就是只支援 PaaS 服務使用。
Hybrid Connections
先來看看 Hybrid Connections 的示意圖:
從上圖可以很清楚的知道,我們在 Azure 上可以透過 Hybrid Connection 讓 WebApp 在某些情況下,連回地端的資料庫或伺服器,不需要用到成本較高且建立較為複雜的 VPN,使用單純的混合式連接就可以達成雲端與地端連結在一起的效果。
搭配 WebApp
如果你是使用 Azuew Paas 的 WebApp 服務,可以直接參考官方建立和管理混合式連線的文件,設定方式寫得很清楚,跟著做就差不多了,這裡就不多做說明。
比較需要注意的是地端的防火牆設定:
- Hybrid Connection 會用到 80、443、5671、9350~9354 這幾個 Port
- 地端伺服器的防火牆只要開啟 Outbound 連線就可以
- 混合式連接不支援 UDP 的通訊協定
另外,一個 BizTalk 服務可以給多個混合式連線使用,且主機名稱最好不要有特殊字元、連結號或底線,這樣有可能會有問題,且使用時請一定要使用地端伺服器的主機名稱,使用 IP 可能會無法連線
搭配 Azure VM
如果你是使用 Azure 虛擬機器的服務來構建環境了話,就無法用 Azure Portal 上的設定選項來設定 Hybrid Connection,基本的步驟如下:
- 登入 Azure 傳統入口網站
- 目前只有 Azure 傳統入口網站能單獨建立 BizTalk 服務
- BizTalk Hybrid Connection 基本有 5 個免費連線可以用(好棒棒!)
- 在左側瀏覽窗格中,選取並建立 BizTalk 服務
- 從中選取 [建立混合式連接] 並設定想要連線地端伺服器
- 在地端伺服器上使用 Hybrid Connection Manager 來設定內部部屬連接字串
到這裡都和上一節差不多,接下來不同的是 Azure VM 要怎麼做設定。
- 在 Azure VM 上安裝 Hybrid Connection Client
- 參考下方 Hybrid Connection Client 段落的下載位置
-
確認服務有開啟
-
取得 Hybrid Connection 所產生的應用程式連接字串(主要、次要都可以)
- 使用系統管理員權限開啟 PowerShell 執行下列指令
Add-HybridConnectionClient -ConnectionString "YourConnectionString"
- 其中
YourConnectionString
需替換成上一步取得的應用程式連接字串
-
執行
Get-HybridConnectionClient
檢查是否有把地端伺服器的連結加進去 - 順利加入後,可執行
ping <地端主機名稱>
來試試看有沒連結到
以下為相關的整理文件
記得一個大方向:Hybrid Connection Manager 用於地端,Hybrid Connection Client 用於雲端。
Hybrid Connection Manager
Microsoft Azure Hybrid Connection Manager 下載位置
官方文件:PowerShell CmdLet 混合式連線管理員
重要事項:這裡的 -ConnectionString 參數是指 Azure 管理入口網站中列出的完整內部部署連接字串。
PowerShell CmdLet
Add-HybridConnection
- 在混合式連線管理員中,將新的內部部署接聽程式連線新至 Azure 上現有的混合式連接。
- 語法 & 範例:
Add-HybridConnection -ConnectionString <string> [<CommonParameters>]
Add-HybridConnection -ConnectionString "Endpoint=hc://YourBizTalkServiceName.hybrid.biztalk.windows.net/YourNewHybridConnectionName;SharedAccessKeyName=defaultListener;SharedAccessKey=xxxx"
Update-HybridConnection
- 針對本機混合式連線管理員上設定的內部部署接聽程式,更新連線參數。
Remove-HybridConnection
- 從本機混合式連線管理員中,移除特定混合式連接的內部部署接聽程式。
- 語法 & 範例:
Remove-HybridConnection -ConnectionString <string> [<CommonParameters>]
Remove-HybridConnection -ConnectionString "Endpoint=hc://YourBizTalkServiceName.hybrid.biztalk.windows.net/YourHybridConnectionName;SharedAccessKeyName=defaultListener;SharedAccessKey=xxxx"
Get-HybridConnection
- 針對本機混合式連線管理員上設定的所有混合式連接,傳回內部部署接聽程式的相關資訊。
- 語法 & 範例:
Get-HybridConnection [-ConnectionString <string>] [-Uri <uri>]
Get-HybridConnection -URI "hc://YourBizTalkServiceName.hybrid.biztalk.windows.net/YourHybridConnectionName"
Set-HybridConnectionManagerConfiguration
- 設定混合式連線管理員的本機管理 TCP 通訊埠。
Hybrid Connection Client
Microsoft Azure Hybrid Connection Client 下載位置
這段沒有官方文件,但基本操作和 Hybrid Connection Manager 差不多。
重要事項:這裡的 -ConnectionString 參數是指 Azure 管理入口網站中列出的完整應用程式連接字串。
PowerShell CmdLet
Add-HybridConnection
- 在混合式連線管理員中,將新的內部部署接聽程式連線新至 Azure 上現有的混合式連接。
- 語法 & 範例:
Add-HybridConnectionClient -ConnectionString <string> [<CommonParameters>]
Add-HybridConnectionClient -ConnectionString "Endpoint=hc://YourBizTalkServiceName.hybrid.biztalk.windows.net/YourNewHybridConnectionName;SharedAccessKeyName=defaultListener;SharedAccessKey=xxxx"
Remove-HybridConnection
- 從本機混合式連線管理員中,移除特定混合式連接的內部部署接聽程式。
- 語法 & 範例:
Remove-HybridConnectionClient -ConnectionString <string> [<CommonParameters>]
Remove-HybridConnectionClient -ConnectionString "Endpoint=hc://YourBizTalkServiceName.hybrid.biztalk.windows.net/YourHybridConnectionName;SharedAccessKeyName=defaultListener;SharedAccessKey=xxxx"
Get-HybridConnection
- 針對本機混合式連線管理員上設定的所有混合式連接,傳回內部部署接聽程式的相關資訊。
- 語法 & 範例:
Get-HybridConnectionClient [-ConnectionString <string>] [-Uri <uri>]
Get-HybridConnectionClient -URI "hc://YourBizTalkServiceName.hybrid.biztalk.windows.net/YourHybridConnectionName"
這段純屬個人抒發,可忽略
之所以會有這篇的出現,是因為要在 Azure VM 上面使用 Hybrid Connection 跟地端伺服器連線的使用介紹真的超級少,google 了半天,也只有這一篇短短的討論串 Is there way to create HYBRID CONNECTIONS for azure could service or azure VM? 和這篇短文 Connect Azure to Your On-premises Data with the Hybrid Connection Client有提到關鍵字 Hybrid Connection Client,再來就都沒有了。
我也是瞎貓碰上死耗子才領悟出上面的用法,費了我大半天呢。
參考資料: