Azure 應(yīng)用服務(wù)混合連接

來源: Microsoft
作者:Microsoft
時(shí)間:2021-04-27
17356
混合連接既是 Azure 中的一個(gè)服務(wù),也是 Azure 應(yīng)用服務(wù)中的一項(xiàng)功能。 作為服務(wù),它的用途和功能超越了應(yīng)用服務(wù)中使用的功能。 若要詳細(xì)了解混合連接及其在應(yīng)用服務(wù)外部的用途,請參閱 Azure 中繼混合連接。

混合連接既是 Azure 中的一個(gè)服務(wù),也是 Azure 應(yīng)用服務(wù)中的一項(xiàng)功能。 作為服務(wù),它的用途和功能超越了應(yīng)用服務(wù)中使用的功能。 若要詳細(xì)了解混合連接及其在應(yīng)用服務(wù)外部的用途,請參閱 Azure 中繼混合連接。

在應(yīng)用服務(wù)中,混合連接可用于訪問任何網(wǎng)絡(luò)中的應(yīng)用程序資源,這些網(wǎng)絡(luò)可以通過端口 443 對 Azure 進(jìn)行出站調(diào)用。 混合連接提供從應(yīng)用到 TCP 終結(jié)點(diǎn)的訪問權(quán)限,而不會啟用新的訪問應(yīng)用的方式。 在應(yīng)用服務(wù)中使用時(shí),每個(gè)混合連接與單個(gè) TCP 主機(jī)和端口組合相關(guān)聯(lián)。 這樣,應(yīng)用就可以訪問任何 OS 上的資源,前提是它是 TCP 終結(jié)點(diǎn)。 混合連接功能不知道、也不關(guān)心應(yīng)用程序協(xié)議或者要訪問的內(nèi)容是什么。 它只提供網(wǎng)絡(luò)訪問。

工作原理

混合連接要求將中繼代理部署到可以同時(shí)到達(dá)所需終結(jié)點(diǎn)和 Azure 的位置。 中繼代理混合連接管理器 (HCM) 通過端口 443 調(diào)用 Azure 中繼。 在 Web 應(yīng)用站點(diǎn)上,應(yīng)用服務(wù)基礎(chǔ)結(jié)構(gòu)還代表應(yīng)用程序連接到 Azure 中繼。 通過已聯(lián)接的連接,應(yīng)用可以訪問所需的終結(jié)點(diǎn)。 連接使用 TLS 1.2 來確保安全,使用共享訪問簽名 (SAS) 密鑰進(jìn)行身份驗(yàn)證和授權(quán)。

混合連接高級別流示意圖

如果應(yīng)用發(fā)出了與配置的混合連接終結(jié)點(diǎn)匹配的 DNS 請求,則會通過混合連接重定向出站 TCP 流量。

 備注

這意味著,始終應(yīng)該盡量為混合連接使用 DNS 名稱。 如果終結(jié)點(diǎn)使用 IP 地址,某些客戶端軟件不會執(zhí)行 DNS 查找。

應(yīng)用服務(wù)混合連接的優(yōu)勢

混合連接功能提供許多優(yōu)勢,包括:

  • 應(yīng)用可以訪問本地系統(tǒng)和服務(wù)。

  • 該功能不需要可訪問 Internet 的終結(jié)點(diǎn)。

  • 設(shè)置過程快速而輕松。 無需網(wǎng)關(guān)

  • 每個(gè)混合連接與單個(gè)“主機(jī):端口”組合匹配,這非常有利于安全性。

  • 通常不需要在防火墻中開放端口。 連接全部是通過標(biāo)準(zhǔn) Web 端口建立的。

  • 由于該功能在網(wǎng)絡(luò)級別運(yùn)行,它并不知道應(yīng)用使用的語言以及終結(jié)點(diǎn)使用的技術(shù)。

  • 可以通過單個(gè)應(yīng)用使用它在多個(gè)網(wǎng)絡(luò)中提供訪問。

  • 它在適用于 Windows 應(yīng)用和 Linux 應(yīng)用的 GA 中受支持。 Windows 容器應(yīng)用不支持該功能。

混合連接無法提供的功能

無法通過混合連接執(zhí)行的操作包括:

  • 裝載驅(qū)動器。

  • 使用 UDP。

  • 訪問使用動態(tài)端口(例如 FTP 被動模式或擴(kuò)展被動模式)的基于 TCP 的服務(wù)。

  • 支持 LDAP,因?yàn)樗赡苄枰?UDP。

  • 支持 Active Directory,因?yàn)闊o法將應(yīng)用服務(wù)輔助角色加入域。

在應(yīng)用中添加和創(chuàng)建混合連接

若要創(chuàng)建混合連接,請轉(zhuǎn)到 Azure 門戶,并選擇應(yīng)用。 選擇“網(wǎng)絡(luò)” > “配置混合連接終結(jié)點(diǎn)”。 在此處,可以看到為應(yīng)用配置的混合連接。

混合連接列表的屏幕截圖

若要添加新的混合連接,請選擇“[+] 添加混合連接”。 此時(shí)會顯示已創(chuàng)建的混合連接的列表。 要將其中的一個(gè)或多個(gè)混合連接添加到應(yīng)用,請選擇所需的混合連接,然后選擇“添加選定的混合連接”。

混合連接門戶的屏幕截圖

如果想要創(chuàng)建新的混合連接,請選擇“創(chuàng)建新的混合連接”。 指定:

  • 混合連接名稱。

  • 終結(jié)點(diǎn)主機(jī)名。

  • 終結(jié)點(diǎn)端口。

  • 要使用的服務(wù)總線命名空間。

“創(chuàng)建新的混合連接”對話框屏幕截圖

每個(gè)混合連接已綁定到服務(wù)總線命名空間,每個(gè)服務(wù)總線命名空間在 Azure 區(qū)域中。 請盡量使用應(yīng)用所在的同一區(qū)域中的服務(wù)總線命名空間,這一點(diǎn)非常重要,目的是避免網(wǎng)絡(luò)造成的延遲。

如果想要從應(yīng)用中刪除混合連接,請右鍵單擊該混合連接,并選擇“斷開連接”。

將混合連接添加到應(yīng)用后,選擇該混合連接即可查看其詳細(xì)信息。

“混合連接詳細(xì)信息”屏幕截圖

在 Azure 中繼門戶中創(chuàng)建混合連接

除了使用應(yīng)用內(nèi)部的門戶體驗(yàn)以外,還可以在 Azure 中繼門戶中創(chuàng)建混合連接。 要使混合連接可供應(yīng)用服務(wù)使用,必須:

  • 要求客戶端授權(quán)。

  • 提供一個(gè)名為 endpoint 的元數(shù)據(jù)項(xiàng),其中包含“主機(jī):端口”的組合作為值。

混合連接和應(yīng)用服務(wù)計(jì)劃

應(yīng)用服務(wù)混合連接只能在“基本”、“標(biāo)準(zhǔn)”、“高級”和“隔離”定價(jià) SKU 中使用。 定價(jià)計(jì)劃沒有相關(guān)的限制。

混合連接和應(yīng)用服務(wù)計(jì)劃
定價(jià)計(jì)劃在計(jì)劃中可以使用的混合連接數(shù)
基本每個(gè)計(jì)劃 5 個(gè)
標(biāo)準(zhǔn)每個(gè)計(jì)劃 25 個(gè)
PremiumV2每個(gè)應(yīng)用 200 個(gè)
隔離每個(gè)應(yīng)用 200 個(gè)

應(yīng)用服務(wù)計(jì)劃 UI 會顯示使用了多少個(gè)混合連接以及是由哪些應(yīng)用使用的。

應(yīng)用服務(wù)計(jì)劃屬性的屏幕截圖

選擇該混合連接可查看詳細(xì)信息。 可以看到應(yīng)用視圖中顯示的所有信息。 還可以查看同一計(jì)劃中還有其他多少個(gè)應(yīng)用正在使用該混合連接。

可在一個(gè)應(yīng)用服務(wù)計(jì)劃中使用的混合連接終結(jié)點(diǎn)數(shù)目有限制。 但是,所用的每個(gè)混合連接可在該計(jì)劃中任意數(shù)目的應(yīng)用中使用。 例如,在一個(gè)應(yīng)用服務(wù)計(jì)劃下的 5 個(gè)單獨(dú)應(yīng)用中共同使用的單個(gè)混合連接,僅算作 1 個(gè)混合連接。

定價(jià)

除了要求使用應(yīng)用服務(wù)計(jì)劃 SKU 外,使用混合連接還需要額外付費(fèi)。 需要為混合連接使用的每個(gè)偵聽器付費(fèi)。 偵聽器是混合連接管理器。 如果你有由兩個(gè)混合連接管理器支持的五個(gè)混合連接,則將有 10 個(gè)偵聽器。 有關(guān)詳細(xì)信息,請參閱服務(wù)總線定價(jià)。

混合連接管理器

混合連接功能要求在網(wǎng)絡(luò)中安裝一個(gè)中繼代理用于托管混合連接終結(jié)點(diǎn)。 該中繼代理稱為混合連接管理器 (HCM)。 若要下載 HCM,請?jiān)?nbsp;Azure 門戶上的應(yīng)用中,選擇“網(wǎng)絡(luò)” > “配置混合連接終結(jié)點(diǎn)”。

此工具可在 Windows Server 2012 和更高版本上運(yùn)行。 HCM 作為服務(wù)運(yùn)行,并且在端口 443 上出站連接到 Azure 中繼。

安裝 HCM 后,可以運(yùn)行 HybridConnectionManagerUi.exe 來使用該工具的 UI。 此文件位于混合連接管理器的安裝目錄中。 在 Windows 10 上,也可以在搜索框中搜索“混合連接管理器 UI”即可。

混合連接管理器的屏幕截圖

啟動 HCM UI 時(shí),出現(xiàn)的第一個(gè)界面是一個(gè)表格,其中列出了為此 HCM 實(shí)例配置的所有混合連接。 如果想要進(jìn)行任何更改,請先在 Azure 中完成身份驗(yàn)證。

要將一個(gè)或多個(gè)混合連接添加到 HCM,請執(zhí)行以下操作:

  1. 啟動 HCM UI。

  2. 選擇“配置另一個(gè)混合連接”。 配置新混合連接的屏幕截圖

  3. 使用 Azure 帳戶登錄,以使你的訂閱可以使用混合連接。 除此之外,HCM 不會繼續(xù)使用你的 Azure 帳戶。

  4. 選擇訂閱。

  5. 選擇 HCM 要中繼的混合連接。 混合連接的屏幕截圖

  6. 選擇“保存” 。

現(xiàn)在,可以看到已添加的混合連接。 還可以選擇配置的混合連接查看詳細(xì)信息。

混合連接詳細(xì)信息的屏幕截圖

若要支持配置的混合連接,HCM 需要:

  • 通過端口 443 對 Azure 進(jìn)行 TCP 訪問。

  • 對混合連接終結(jié)點(diǎn)進(jìn)行 TCP 訪問。

  • 能夠在終結(jié)點(diǎn)主機(jī)和服務(wù)總線命名空間中執(zhí)行 DNS 查找。

 備注

Azure 中繼的連接性依賴于 Web 套接字。 此功能僅適用于 Windows Server 2012 或更高版本。 因此,低于 Windows Server 2012 的版本將不支持 HCM。

冗余

每個(gè) HCM 可以支持多個(gè)混合連接。 此外,多個(gè) HCM 可以支持任一給定的混合連接。 默認(rèn)行為是在為任一給定終結(jié)點(diǎn)配置的 HCM 之間路由流量。 如果希望從網(wǎng)絡(luò)建立的混合連接具有高可用性,可在單獨(dú)的計(jì)算機(jī)上運(yùn)行多個(gè) HCM。 中繼服務(wù)用來將流量分配給各個(gè) HCM 的負(fù)載分配算法是隨機(jī)分配。

手動添加混合連接

若要讓訂閱外部的某人托管給定混合連接的 HCM 實(shí)例,可與他(她)共享該混合連接的網(wǎng)關(guān)連接字符串。 可以在 Azure 門戶的“混合連接”屬性中看到網(wǎng)關(guān)連接字符串。 要使用該字符串,請?jiān)?HCM 中選擇“手動輸入”,并粘貼網(wǎng)關(guān)連接字符串。

手動添加混合連接

升級

我們會定期發(fā)布混合連接管理器更新來修復(fù)問題或提供改進(jìn)。 當(dāng)發(fā)布升級時(shí),一個(gè)彈出窗口將顯示在 HCM UI 中。 應(yīng)用升級將應(yīng)用所做的更改并重啟 HCM。

以編程方式將混合連接添加到你的應(yīng)用

Azure CLI 支持混合連接。 提供的命令可在應(yīng)用和應(yīng)用服務(wù)計(jì)劃級別上運(yùn)行。 應(yīng)用級命令為:

Azure CLI

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.

利用應(yīng)用服務(wù)計(jì)劃命令,你可以設(shè)置給定混合連接將使用的密鑰。 每個(gè)混合連接上都設(shè)置了兩個(gè)密鑰,一個(gè)主密鑰和一個(gè)輔助密鑰。 可以選擇通過以下命令使用主密鑰或輔助密鑰。 這樣,你就可以在需要定期再生成密鑰時(shí)切換密鑰。

Azure CLI

az appservice hybrid-connection --helpGroup    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.

保護(hù)混合連接

任何在基礎(chǔ) Azure 服務(wù)總線中繼上有足夠權(quán)限的用戶都可以將現(xiàn)有的混合連接添加到應(yīng)用服務(wù) Web 應(yīng)用。 這意味著,如果必須阻止他人重復(fù)使用這個(gè)相同的混合連接(例如,如果目標(biāo)資源是一項(xiàng)沒有設(shè)置任何其他的安全措施來防止未經(jīng)授權(quán)的訪問的服務(wù),則必須這樣做),則必須鎖定對 Azure 服務(wù)總線中繼的訪問。

可以通過 Reader 訪問權(quán)限來訪問中繼的任何人都將能夠看到混合連接(在嘗試通過 Azure 門戶將它添加到 Web 應(yīng)用時(shí)),但卻無法添加它,因?yàn)槿鄙贆z索用于建立中繼連接的連接字符串的權(quán)限。 若要成功添加混合連接,他們必須具有 listKeys 權(quán)限 (Microsoft.Relay/namespaces/hybridConnections/authorizationRules/listKeys/action)。 Contributor 角色或者任何其他包含此權(quán)限(在中繼上)的角色都會允許用戶使用混合連接并將其添加到自己的 Web 應(yīng)用。

故障排除

“已連接”狀態(tài)表示,至少有一個(gè) HCM 配置了該混合連接,且可以訪問 Azure。 如果混合連接狀態(tài)未顯示“已連接”,則表示未在任何可訪問 Azure 的 HCM 上配置該混合連接。 當(dāng) HCM 顯示 " 未連接 " 時(shí),請注意以下幾點(diǎn):

  • 你的主機(jī)是否有到端口443上的 Azure 的出站訪問權(quán)限? 可以使用 PowerShell 命令 Test-netconnection Destination-P 端口 從 HCM 主機(jī)進(jìn)行測試

  • 你的 HCM 是否可能處于錯(cuò)誤的狀態(tài)? 嘗試重啟 "Azure 混合連接管理器服務(wù)" 本地服務(wù)。

如果狀態(tài)顯示為 " 已連接 ",但應(yīng)用無法訪問終結(jié)點(diǎn),請執(zhí)行以下操作:

  • 請確保在混合連接中使用 DNS 名稱。 如果使用 IP 地址,則可能不會進(jìn)行所需的客戶端 DNS 查找。 如果在 web 應(yīng)用中運(yùn)行的客戶端未執(zhí)行 DNS 查找,則混合連接將不起作用

  • 檢查混合連接中使用的 DNS 名稱能否從 HCM 主機(jī)解析。 使用 Nslookup EndpointDNSname 檢查分辨率,其中 EndpointDNSname 是與混合連接定義中使用的內(nèi)容完全匹配。

  • 使用 PowerShell 命令 Test-netconnection EndpointDNSname-P 端口 測試從你的 HCM 主機(jī)到你的終結(jié)點(diǎn)的訪問權(quán)限。如果無法從 HCM 主機(jī)訪問終結(jié)點(diǎn),請檢查兩個(gè)主機(jī)(包括目標(biāo)主機(jī)上的任何基于主機(jī)的防火墻)之間的防火墻。

在應(yīng)用服務(wù)中,可以從 "高級工具" (Kudu) "控制臺調(diào)用 tcpping 命令行工具。 此工具可以告知你是否能夠訪問 TCP 終結(jié)點(diǎn),但不會告知你是否能夠訪問混合連接終結(jié)點(diǎn)。 在控制臺中針對混合連接終結(jié)點(diǎn)使用此工具時(shí),只能確認(rèn)混合連接是否使用了“主機(jī):端口”組合。

如果你有終結(jié)點(diǎn)的命令行客戶端,則可以從應(yīng)用控制臺測試連接。 例如,可以使用 curl 測試對 Web 服務(wù)器終結(jié)點(diǎn)的訪問。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Microsoft,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多