啟用 HDInsight 叢集上的 Private Link
在本文中,您會了解如何使用 Azure Private Link 透過 Microsoft 骨幹網路的網路,私人連線至 HDInsight 叢集。 本文是在 Azure HDInsight 中限制叢集連線能力一文的延伸,此文章著重在公用連線能力。 如果您想要 HDInsight 叢集 (或其內部) 的公用連線能力以及相依資源,請考慮遵循控制 Azure HDInsight 中的網路流量中的指導方針,限制叢集的連線能力。
Private Link 可用於無法使用或未啟用虛擬網路對等互連的跨網路案例。
注意
限制公用連線能力是啟用 Private Link 的必要條件,不應視為相同功能。
使用 Private Link 連線至 HDInsight 叢集是選用功能,預設為停用。 只有在 resourceProviderConnection
網路屬性設定為「輸出」時,才能使用此功能,如在 Azure HDInsight 中限制叢集連線能力一文所述。
當 privateLink
設定為 [啟用] 時,會建立內部標準負載平衡器 (SLB),每個 SLB 都會佈建 Azure Private Link 服務。 可讓您從私人端點存取 HDInsight 叢集的便是 Private Link 服務。
私人連結部署步驟
成功建立 Private Link 叢集需要許多步驟,因此我們已在此概述這些步驟。 請遵循下列每一個步驟,確保所有設定正確無誤。
步驟 1:建立必要條件
若要開始,請部署下列資源 (如果您尚未建立的話)。 您必須至少有一個資源群組、兩個虛擬網路,以及可連結至子網路的網路安全性群組,HDInsight 叢集將部署在該子網路中,如下所示。
類型 | 名稱 | 目的 |
---|---|---|
資源群組 | hdi-privlink-rg | 用來將通用資源保持在一起 |
虛擬網路 | hdi-privlink-cluster-vnet | 將部署叢集的 VNET |
虛擬網路 | hdi-privlink-client-vnet | 用戶端將從其中連線至叢集的 VNET |
網路安全性群組 | hdi-privlink-cluster-vnet-nsg | 叢集部署所需的預設 NSG |
注意
您可以直接部署網路安全性群組 (NSG),我們不需要修改叢集部署的任何 NSG 規則。
步驟 2:設定 HDInsight 子網路
- 停用子網路上的 privateLinkServiceNetworkPolicies。 若要能選擇 Private Link 服務的來源 IP 位址,必須在子網路上明確停用設定
privateLinkServiceNetworkPolicies
。 遵循此處的指示來停用 Private Link 服務的網路原則。 - 在子網路上啟用服務端點。 若要成功部署 Private Link HDInsight 叢集,建議您在叢集部署之前,將 、
Microsoft.Storage
和服務Microsoft.KeyVault
端點新增Microsoft.SQL
至子網。 服務端點會直接從虛擬網路將流量路由到 Microsoft Azure 骨幹網路上的服務。 保持 Azure 主幹網絡上的流量可讓您透過強制通道,繼續稽核和監視來自虛擬網路的輸出網際網路流量,而不會影響服務流量。
步驟 3:部署 NAT 閘道或防火牆
標準負載平衡器不會像基本負載平衡器一樣,自動提供公用輸出 NAT。 由於 Private Link 叢集使用標準負載平衡器,您必須提供自己的 NAT 解決方案,例如 NAT 閘道或您的防火牆所提供的 NAT,才能連線至輸出、公用 HDInsight 相依性。
部署 NAT 閘道 (選項 1)
如果您不想設定 NAT 的防火牆或網路虛擬裝置 (NVA),您可以選擇使用 NAT 閘道。 若要開始使用,請將 NAT 閘道 (以及虛擬網路中的新公用 IP 位址) 新增至虛擬網路中設定的子網路。 當流量需要離開虛擬網路時,此閘道會負責將私人內部 IP 位址轉譯為公用位址。
若要開始進行基本設定:
在 Azure 入口網站中搜尋「NAT 閘道」,然後按一下 [建立]。
在 NAT 閘道中使用下列設定。 (此處未包含所有設定,因此您可以使用預設值)。
Config 值 NAT 閘道名稱 hdi-privlink-nat-gateway 公用 IP 首碼 建立新公用 IP 前置詞 公用 IP 前置詞名稱 hdi-privlink-nat-gateway-prefix 公用 IP 前置詞大小 /28 (16 個位址) 虛擬網路 hdi-privlink-cluster-vnet 子網路名稱 預設值 完成部署 NAT 閘道之後,您就可以前往下一個步驟。
設定防火牆 (選項 2)
若要開始進行基本設定:
- 將名為 AzureFirewallSubnet 的新子網路新增至您的虛擬網路。
- 使用新子網路設定新防火牆,並新增防火牆原則。
- 使用新防火牆的私人 IP 位址做為路由表中的
nextHopIpAddress
值。 - 將路由表新增至虛擬網路中設定的子網路。
HDInsight 叢集仍需其輸出相依項目的存取權。 如果不允許這些輸出相依性,叢集的建立可能會失敗。 如需設定防火牆的詳細資訊,請參閱控制 Azure HDInsight 中的網路流量。
步驟 4:部署私人連結叢集
至此,您應該已經達成所有必要條件,因此您已做好部署 Private Link 叢集的準備。 下圖顯示建立叢集之前所需的網路設定範例。 在此範例中,所有輸出流量都會強制透過使用者定義的路由到達 Azure 防火牆。 在建立叢集之前,防火牆上應該允許必要的輸出相依項目。 若是企業安全性套件叢集,虛擬網路對等互連可以提供 Microsoft Entra Domain Services 的網路連線能力。
建立叢集
下列 JSON 程式碼片段包含兩個網路屬性,您必須在 Azure Resource Manager 範本中設定,才能建立私人 HDInsight 叢集:
networkProperties: {
"resourceProviderConnection": "Outbound",
"privateLink": "Enabled"
}
如需具有許多 HDInsight 企業安全性功能 (包括 Private Link 在內) 的完整範本,請參閱 HDInsight 企業安全性範本。
若要使用 PowerShell 建立叢集,請參閱範例。
若要使用 Azure CLI 建立叢集,請參閱範例。
步驟 5:建立私人端點
在 Private Link 叢集部署期間,Azure 會自動為 Ambari 和 SSH 負載平衡器建立 Private Link 服務。 部署叢集之後,您必須在用戶端 VNET 上建立兩個私人端點,一個用於 Ambari,另一個用於 SSH 存取。 然後,將其連結至叢集部署期間建立的 Private Link 服務。
若要建立私人端點:
開啟 Azure 入口網站並搜尋「Private Link」。
在結果中,按一下 [Private Link] 圖示。
按一下 [建立私人端點],然後使用下列設定來設定 Ambari 私人端點:
Config 值 名稱 hdi-privlink-cluster 資源類型 Microsoft.Network/privateLinkServices 資源 gateway-* (此值應該與您叢集的 HDI 部署識別碼相符,例如 gateway-4eafe3a2a67e4cd88762c22a55fe4654) 虛擬網路 hdi-privlink-client-vnet 子網路 預設值 請重複以上程序,使用下列設定建立另一個用於 SSH 存取的私人端點:
Config 值 名稱 hdi-privlink-cluster-ssh 資源類型 Microsoft.Network/privateLinkServices 資源 headnode-* (此值應該與您叢集的 HDI 部署識別碼相符,例如 headnode-4eafe3a2a67e4cd88762c22a55fe4654) 虛擬網路 hdi-privlink-client-vnet 子網路 預設值
重要
如果您使用 KafkaRestProxy HDInsight 叢集,請遵循此額外步驟來啟用私人端點。
建立私人端點之後,您就完成設定的這個階段。 如果您未記下指派給端點的私人 IP 位址,請遵循下列步驟:
- 在 Azure 入口網站中開啟用戶端 VNET。
- 按一下 [私人端點] 索引標籤。
- 您應該會看到列出的 Ambari 和 SSH 網路介面。
- 每一個各按兩下,並瀏覽至 [DNS 組態] 刀鋒視窗,以查看私人 IP 位址。
- 請記下這些 IP 位址,因為連線至叢集和正確設定 DNS 需要這些資訊。
步驟 6:設定 DNS 以透過私人端點連線
若要存取私人叢集,您可以設定透過私人 DNS 區域的 DNS 解析。 在 Azure 管理的公用 DNS 區域 azurehdinsight.net
中建立的Private Link 項目如下:
<clustername> CNAME <clustername>.privatelink
<clustername>-int CNAME <clustername>-int.privatelink
<clustername>-ssh CNAME <clustername>-ssh.privatelink
下圖範例顯示,已設定用來啟用從虛擬網路存取叢集的私人 DNS 項目,未與叢集對等互連,或無法直接看到叢集。 您可以使用 Azure DNS 私人區域覆寫 *.privatelink.azurehdinsight.net
完整網域名稱 (FQDN),並解析用戶端網路中的私人端點 IP 位址。 此設定僅適用於範例中的 <clustername>.azurehdinsight.net
,但也會延伸至其他叢集端點。
若要設定透過私人 DNS 區域的 DNS 解析:
建立 Azure 私人 DNS 區域。 (此處未包含所有設定,所有其他設定都會保留為預設值)
Config 值 名稱 privatelink.azurehdinsight.net 將記錄集新增至 Ambari 的私人 DNS 區域。
Config 值 名稱 YourPrivateLinkClusterName 類型 A - IPv4 位址的別名記錄 TTL 1 TTL 單位 小時 IP 位址 Ambari 存取的私人端點私人 IP 將記錄集新增至 SSH 的私人 DNS 區域。
Config 值 名稱 YourPrivateLinkClusterName-ssh 類型 A - IPv4 位址的別名記錄 TTL 1 TTL 單位 小時 IP 位址 SSH 存取的私人端點私人 IP
重要
如果您使用 KafkaRestProxy HDInsight 叢集,請遵循此額外步驟來設定 DNS 以透過私人端點連線。
透過新增虛擬網路連結,建立私人 DNS 區域與用戶端 VNET 的關聯。
- 在 Azure 入口網站中開啟私人 DNS 區域。
- 按一下 [虛擬網路連結] 索引標籤。
- 按一下 [新增] 按鈕。
- 填寫詳細資料:連結名稱、訂用帳戶和虛擬網路 (您的用戶端 VNET)
- 按一下 [檔案] 。
步驟 7:檢查叢集連線能力
最後一個步驟是測試叢集的連線能力。 由於這是隔離的或私人的叢集,我們無法使用任何公用 IP 或 FQDN 存取叢集。 相反地,我們有幾個選項:
- 從內部部署網路設定用戶端 VNET 的 VPN 存取
- 將 VM 部署至用戶端 VNET,然後從此 VM 存取叢集
在此範例中,我們會使用下列設定,在用戶端 VNET 中部署 VM 以測試連線能力。
Config | 值 |
---|---|
虛擬機器名稱 | hdi-privlink-client-vm |
映像 | Windows 10 專業版,版本 2004 - Gen1 |
公用輸入連接埠 | 允許選取的連接埠 |
選取輸入連接埠 | RDP (3389) |
我確認我有合格的 Windows 10 授權... | 已選取 |
虛擬網路 | hdi-privlink-client-vnet |
子網路 | 預設值 |
部署用戶端 VM 之後,您可以測試 Ambari 和 SSH 存取。
若要測試 Ambari 存取:
- 在 VM 上開啟網頁瀏覽器。
- 瀏覽至叢集的一般 FQDN:
https://<clustername>.azurehdinsight.net
- 如果 Ambari UI 載入,則 Ambari 存取的設定正確無誤。
若要測試 SSH 存取:
- 開啟命令提示字元以取得終端機視窗。
- 在終端機視窗中,嘗試使用 SSH 連線至叢集:
ssh sshuser@<clustername>.azurehdinsight.net
(將「sshuser」取代為您為叢集建立的 ssh 使用者) - 如果您可以連線,則 SSH 存取的設定正確無誤。
管理 HDInsight 的私人端點
您可以將私人端點用於 Azure HDInsight 叢集,允許虛擬網路上的用戶端透過 Private Link 安全地存取您的叢集。 虛擬網路上的用戶端與 HDInsight 叢集之間的網路流量會流經 Microsoft 骨幹網路,以防在公用網際網路中暴露。
有兩個連線核准方法可供 Private Link 服務取用者 (例如 Azure Data Factory) 選擇:
- 自動:如果服務取用者對 HDInsight 資源擁有 Azure 角色型存取控制 (RBAC) 權限,則取用者可以選擇自動核准方法。 在此情況下,當要求到達 HDInsight 資源時,HDInsight 資源不需要採取任何動作且自動核准連線。
- 手動:如果服務取用者對 HDInsight 資源沒有 Azure RBAC 權限,則取用者可以選擇手動核准方法。 在此情況下,出現在 HDInsight 資源上的連線要求會顯示為 [擱置]。 HDInsight 資源必須手動核准要求,才能建立連線。
若要管理私人端點,在 Azure 入口網站的叢集檢視中,移至 [安全性 + 網路] 區段下方的 [網路]。 在此處,您可以看到所有現有的連線、連線的狀態,以及私人端點的詳細資料。
您也可以核准、拒絕或移除現有的連線。 當您建立私人連線時,您可以指定您也想要連線的 HDInsight 子資源 (例如閘道或前端節點)。
下表顯示各種 HDInsight 資源動作,以及私人端點的結果連線狀態。 HDInsight 資源也可以在稍後沒有取用者介入的情況下,變更私人端點連線的連線狀態。 該動作會在取用者端更新端點的狀態。
服務提供者的動作 | 服務取用者私人端點狀態 | 描述 |
---|---|---|
None | 待定 | 已手動建立連線,且正在等待 Private Link 資源擁有者核准。 |
核准 | 核准 | 已自動或手動核准連線並可供使用。 |
拒絕 | 已拒絕 | Private Link 資源擁有者已拒絕連線。 |
移除 | 已中斷連接 | Private Link 資源擁有者已移除連線。 私人端點變得富含資訊,應刪除以進行清除。 |