Azure App Service 混合式連線 (機器翻譯)

混合式連線既是 Azure 服務,也是 Azure App Service 功能。 作為服務時,它具有 App Service 所利用之用途和功能以外的用途和功能。 若要深入了解混合式連線及其在 App Service 之外的使用方式,請參閱 Azure 轉送混合式連線

對於可透過連接埠 443 對 Azure 進行輸出呼叫的任何網路,App Service 內可使用混合式連線來存取其中的應用程式資源。 混合式連線可讓應用程式存取 TCP 端點,並不提供什麼新方法來存取應用程式。 和在 App Service 中使用時相同,每個「混合式連線」都會與單一 TCP 主機和連接埠的組合相互關聯。 此功能可讓應用程式存取任何 OS (只要其為 TCP 端點) 上的資源。 混合式連線不知道也不在乎何種應用程式通訊協定,或您要存取什麼。 就只是支援網路存取。

運作方式

混合式連線需要在可連同時接所需端點和 Azure 的地方部署轉送代理程式。 轉送代理程式即混合式連線管理員 (HCM),可透過連接埠 443 呼叫「Azure 轉送」。 App Service 基礎結構也代表您的應用程式,從 Web 應用程式網站連線至 Azure 轉送。 應用程式透過聯結的連線,就能夠存取所需的端點。 連線會使用 TLS 1.2 以求安全性,並使用共用存取簽章 (SAS) 金鑰來進行驗證和授權。

Diagram of Hybrid Connection high-level flow.

當應用程式提出的 DNS 要求與所設定的「混合式連線」端點相符時,系統就會透過「混合式連線」將輸出 TCP 流量重新導向。

注意

這表示您應該嘗試一律對混合式連線使用 DNS 名稱。 如果端點改為使用 IP 位址,某些用戶端軟體不會執行 DNS 查閱。

App Service 混合式連線優點

「混合式連線」功能有許多優點,包括:

  • 應用程式可以安全地存取內部部署系統和服務。
  • 此功能不需要可存取網際網路的端點。
  • 設定很快又簡單。 不需要閘道。
  • 每個「混合式連線」都會與單一的「主機:連接埠」組合對應,有助於提高安全性。
  • 通常不需要防火牆孔洞。 連線全都是透過標準的 Web 連接埠輸出。
  • 此為網路層級的功能,與應用程式使用的語言及端點使用的技術無關。
  • 它可用來讓您從單一應用程式存取多個網路。
  • Windows 應用程式和 Linux 應用程式的 GA 支援。 Windows 自訂容器不支援此功能。

混合式連線無法執行的作業

混合式連線無法執行的作業包括:

  • 裝載磁碟。
  • 使用 UDP。
  • 存取使用動態連接埠的 TCP 型服務 (例如「FTP 被動模式」或「延伸被動模式」)。
  • 支援 LDAP,因為它需要 UDP。
  • 支援 Active Directory,因為您無法網域加入 App Service 背景工作角色。

在您的應用程式中新增和建立混合式連線

若要建立混合式連線,請移至 Azure 入口網站,然後選取您的應用程式。 選取 [網路]>[設定您的混合式連接端點]。 您可以在這裡看到為您應用程式設定的「混合式連線」。

Screenshot of Hybrid Connection list.

若要新增混合式連線,請選取 [[+] 新增混合式連線]。 您會看見您已建立的混合式連線清單。 若要在應用程式中新增其中的一或多個混合式連線,請按一下您想要的混合式連線,然後選取 [新增選取的混合式連線]

Screenshot of Hybrid Connection portal.

如果您想要建立新的「混合式連線」,請選取 [建立新的混合式連線]。 指定下列項目:

  • 混合式連線名稱。
  • 端點主機名稱。
  • 端點連接埠。
  • 您想要使用的「服務匯流排」命名空間。

Screenshot of Create new hybrid connection dialog box.

每個「混合式連線」都會繫結至一個「服務匯流排」命名空間,而每個「服務匯流排」命名空間都位於 Azure 區域中。 請務必嘗試使用與應用程式位於相同區域的「服務匯流排」命名空間,以避免網路所引發的延遲。

如果您想要移除應用程式中的「混合式連線」,請對它按一下滑鼠右鍵,然後選取 [中斷連線]

將「混合式連線」新增至應用程式之後,您只要選取它就可以查看詳細資料。

Screenshot of Hybrid connections details.

在 Azure 轉送入口網站中建立混合式連線

除了透過入口網站從您應用程式內進行的方式之外,您也可以從「Azure 轉送」入口網站內建立「混合式連線」。 若要讓 App Service 使用混合式連線,必須:

  • 要求用戶端授權。
  • 擁有中繼資料項目以及包含 host:port 組合作為值的具名端點。

混合式連線和 App Service 方案

只有在「基本」、「標準」、「進階」及「隔離」定價 SKU 中,才有提供「App Service 混合式連線」。 混合式連線不適用於「取用」方案中的函數應用程式。 定價方案會有相關聯的限制。

定價方案 方案中可用的混合式連線數目
基本 每個方案 5 個
標準 每個方案 25 個
進階 (v1-v3) 每個應用程式 220 個
隔離 (v1-v2) 每個應用程式 220 個

App Service 方案 UI 會顯示您正在使用的混合式連線數目,以及由哪些應用程式使用。

Screenshot of App Service plan properties.

請選取 [混合式連線] 以查看詳細資料。 您可以看到在應用程式檢視中所看到的所有資訊。 您也可以查看在相同的方案中,有多少其他的應用程式使用了該混合式連線。

App Service 方案中可用的混合式連線端點數目有限制。 不過,每個使用的混合式連線,則可用於方案中任何數目的應用程式上。 例如,一個在「App Service 方案」中 5 個個別應用程式上使用的「混合式連線」,只算 1 個「混合式連線」。

定價

除了有 App Service 方案 SKU 需求,使用混合式連線還有額外費用。 混合式連線使用的每個接聽程式都需要費用。 接聽程式是混合式連線管理員。 如果由兩個混合式連線管理員支援的混合式連線有五個,那就有 10 個接聽程式。 如需詳細資訊,請參閱服務匯流排價格

混合式連線管理員

「混合式連線」功能需要在裝載「混合式連線」端點的網路中有轉送代理程式。 該轉送代理程式稱為混合式連線管理員 (HCM)。 若要下載 HCM,請從您在 Azure 入口網站中的應用程式選取 [網路]>[設定您的混合式連線端點]

此工具可在 Windows Server 2012 和更新版本上執行。 HCM 以服務形式執行,並向外連線到連接埠 443 上的 Azure 轉送。

在安裝 HCM 之後,您可以執行 HybridConnectionManagerUi.exe 來使用工具的 UI。 此檔案位於混合式連線管理員的安裝目錄下。 在 Windows 10 中,您也可以在搜尋方塊中搜尋「混合式連線管理員 UI」即可。

Screenshot of Hybrid Connection Manager.

啟動 HCM UI 時,您會先看到一個表格,當中會列出與這個 HCM 執行個體搭配設定的所有「混合式連線」。 如果您想要進行任何變更,請先向 Azure 進行驗證。

若要在 HCM 中新增一或多個混合式連線︰

  1. 啟動 HCM UI。

  2. 選取 [新增混合式連線]Screenshot of Configure New Hybrid Connections.

  3. 以 Azure 帳戶登入來取得訂用帳戶可用的混合式連線。 在此步驟之外,HCM 不會繼續使用您的 Azure 帳戶。

  4. 選擇訂用帳戶。

  5. 選取您要讓 HCM 轉送的「混合式連線」。 Screenshot of Hybrid Connections.

  6. 選取 [儲存]。

現在可以看到您新增的「混合式連線」。 您也可以選取已設定的混合式連線,以查看詳細資料。

Screenshot of Hybrid Connection Details.

為了支援 HCM 所設定的混合式連線,HCM 需要︰

  • 對 Azure 的 TCP 存取權 (透過連接埠 443)。
  • 對「混合式連線」端點的 TCP 存取權。
  • 能夠對端點主機和「服務匯流排」命名空間執行 DNS 查閱。 換句話說,裝載 HCM 的電腦必須可解析 Azure 轉送連線中的主機名稱。

注意

「Azure 轉送」需倚賴「Web 通訊端」來取得連線能力。 此功能只有在 Windows Server 2012 或更新版本上才有提供。 因此,Windows Server 2012 以前的所有版本皆不支援 HCM。

備援

每個 HCM 都可以支援多個「混合式連線」。 此外,任何指定的「混合式連線」也都可以受到多個 HCM 支援。 預設行為是在任何給定端點所設定的 HCM 之間路由傳送流量。 如果您想要讓來自您網路的「混合式連線」具有高可用性,請在不同電腦上執行多個 HCM。 轉送服務用來將流量散發至 HCM 的負載分配演算法會隨機指派。

手動新增混合式連線

若要想讓訂用帳戶外的人員裝載指定「混合式連線」的 HCM 執行個體,您可以與他們共用「混合式連線」的閘道連接字串。 您可以在 Azure 入口網站的混合式連線屬性中看到閘道連接字串。 若要使用該字串,請在 HCM 中選取 [手動輸入],然後貼上閘道連接字串。

Manually add a Hybrid Connection.

升級

混合式連線管理員會定期更新,以修正問題或改善效能。 當升級發佈時,HCM UI 中會隨即顯示快顯視窗。 套用升級會套用變更,並重新啟動 HCM。

以程式設計方式將混合式連線新增至應用程式

支援以 Azure CLI 使用混合式連線。 提供的命令在應用程式和 App Service 方案層級運作。 應用程式層級命令如下:

az webapp hybrid-connection

Group
    az webapp hybrid-connection : Methods that list, add and remove hybrid-connections from webapps.
        This command group is in preview. It may be changed/removed in a future release.
Commands:
    add    : Add a hybrid-connection to a webapp.
    list   : List the hybrid-connections on a webapp.
    remove : Remove a hybrid-connection from a webapp.

App Service 方案命令可讓您設定指定混合式連線使用的金鑰。 每個混合式連線上設定兩個金鑰,即主要和次要。 您可以透過下列命令來選擇使用主要或次要金鑰。 此選項可讓您在想要週期性重新產生金鑰時切換金鑰。

az appservice hybrid-connection --help

Group
    az appservice hybrid-connection : A method that sets the key a hybrid-connection uses.
        This command group is in preview. It may be changed/removed in a future release.
Commands:
    set-key : Set the key that all apps in an appservice plan use to connect to the hybrid-
                connections in that appservice plan.

保護混合式連線

任何在基礎 Azure 服務匯流排轉送上有足夠權限的使用者,都可以將現有的混合式連線新增至其他 App Service Web Apps。 這表示,如果必須防止其他人重複使用相同的混合式連線 (例如,當目標資源是沒有任何其他安全性措施就地的服務,因此無法防止未經授權的存取),您必須禁止存取 Azure 服務匯流排轉送。

任何人只要有轉送的 Reader 存取權,則在 Azure 入口網站中嘗試將混合式連線新增至 Web 應用程式時,都可看到混合式連線,但因為他們缺少擷取用來建立轉送連線之連接字串的權限,因此無法新增混合式連線。 他們必須具有 listKeys 權限 (Microsoft.Relay/namespaces/hybridConnections/authorizationRules/listKeys/action) 才能成功新增混合式連線。 Contributor 角色或在轉送上包含此權限的其他任何角色都可讓使用者使用混合式連線並將其新增至自己的 Web Apps。

管理混合式連線

如果您需要變更混合式連線的端點主機或連接埠,請遵循下列步驟:

  1. 在本機電腦上,選取連線,然後選取 [混合式連線詳細資料] 視窗左上方的 [移除],從混合式連線管理員中移除混合式連線。
  2. 在 App Service [網路] 頁面中巡覽至 [混合式連線],以中斷「混合式連線」與 App Service 的連線。
  3. 巡覽至轉送找出您需要更新的端點,然後在左側導覽功能表中的 [實體] 下,選取 [混合式連線]
  4. 選取您要更新的混合式連線,然後在左側導覽功能表中的 [設定] 下選取 [屬性]
  5. 進行變更,然後按頂端的 [儲存變更]
  6. 返回 App Service 的 [混合式連線] 設定,然後再次新增混合式連線。 請確定端點如預期般更新。 如果在清單中沒看到混合式連線,請在 5-10 分鐘內重新整理。
  7. 返回本機電腦上的混合式連線管理員,然後再次新增連線。

疑難排解

「已連線」狀態意謂著該「混合式連線」至少有一個已設定的 HCM,並且能夠連線至 Azure。 如果混合式連線的狀態未顯示已連線,則表示任何可存取 Azure 的 HCM 上都未設定混合式連線。 當 HCM 顯示未連線時,請檢查幾件事:

  • 您的主機是否可透過連接埠 443 對外存取 Azure? 您可以從 HCM 主機使用 PowerShell 命令 Test-NetConnection Destination -P Port 來測試

  • 您的 HCM 是否可能處於不良狀態? 請嘗試重新啟動 "Azure Hybrid Connection Manager Service" 本機服務。

  • 您是否安裝衝突的軟體? 混合式連線管理員與 Biztalk 混合式連線管理員或適用於 Windows Server 的服務匯流排無法共同存在。 安裝 HCM 時,應先移除這些封裝的任何版本。

  • 您的 HCM 主機與 Azure 之間有防火牆? 若是如此,您需要同時允許對服務匯流排端點 URL 以及為混合連線提供服務之服務匯流排閘道的輸出存取權。

    • 您可以在混合式連線管理員 UI 中找到服務匯流排端點 URL。

    Screenshot of Hybrid Connection Service Bus endpoint.

    • 服務匯流排閘道是接受進行混合式連線之要求,並將要求透過 Azure 轉送傳遞的資源。 您必須將所有 128 個閘道加入允許清單。 閘道的格式為 G#-prod-[stamp]-sb.servicebus.windows.net,其中 “#” 是介於 0 到 127 之間的數字,而 “stamp” 是您的服務匯流排所在之 Azure 資料中心內的執行個體名稱。
      • 如果您可以使用萬用字元,則可以將 "*.servicebus.windows.net" 加入允許清單。

      • 如果您無法使用萬用字元,則必須將所有 128 個閘道加入允許清單。

        您可以在服務匯流排端點 URL 上使用 "nslookup" 來找出戳記。

        Screenshot of terminal showing where to find the stamp name for the Service Bus.

        在此範例中,戳記為 "sn3-010"。 若要將服務匯流排閘道加入允許清單,您需要下列項目:

        G0-prod-sn3-010-sb.servicebus.windows.net
        G1-prod-sn3-010-sb.servicebus.windows.net
        G2-prod-sn3-010-sb.servicebus.windows.net
        G3-prod-sn3-010-sb.servicebus.windows.net
        ...
        G126-prod-sn3-010-sb.servicebus.windows.net
        G127-prod-sn3-010-sb.servicebus.windows.net

如果狀態顯示已連線,但應用程式無法連線端點,則:

  • 請確定您在混合式連線中使用 DNS 名稱。 如果您使用 IP 位址,則必要的用戶端 DNS 查閱可能不會發生。 如果 Web 應用程式中執行的用戶端未執行 DNS 查閱,則混合式連線無法運作。
  • 請檢查混合式連線中使用的 DNS 名稱是否可以從 HCM 進行解析。 使用 nslookup EndpointDNSname 來檢查解析,其中 EndpointDNSname 完全符合混合式連線定義中使用的值。
  • 從 HCM 主機使用 PowerShell 命令 Test-NetConnection EndpointDNSname -P Port 來測試存取權。如果無法從 HCM 主機連線端點,請檢查兩部主機之間的防火牆,包括目的地主機上的任何主機型防火牆。
  • 如果您在 Linux 上使用 App Service,請確定您不是使用 "localhost" 作為端點主機。 如果您嘗試對本機電腦上資源建立連線,請改用機器名稱。

在 App Service 中,可從進階工具 (Kudu) 主控台叫用 tcpping 命令列工具。 此工具可指出您能否存取 TCP 端點,但無法指出您能否存取混合式連線端點。 在主控台對混合式連線端點使用此工具時,只是確認端點使用「主機:連接埠」組合。

如果您有端點的命令列用戶端,則可以從應用程式主控台測試連線能力。 例如,您可以使用 curl 來測試能否存取 Web 伺服器端點取。