為 Azure HDInsight 規劃虛擬網路
本文提供使用 Azure 虛擬網路 (VNet) 搭配 Azure HDInsight 的相關背景資訊。 它也會討論為 HDInsight 叢集實作虛擬網路之前,必須先進行的設計和實作決策。 規劃階段完成後,您可以繼續建立 Azure HDInsight 叢集的虛擬網路。 如需正確設定網路安全性群組 (NSG) 和使用者定義路由所需的 HDInsight 管理 IP 位址的詳細資訊,請參閱 HDInsight 管理 IP 位址。
使用 Azure 虛擬網路可啟用下列案例:
- 從內部部署網路直接連線至 HDInsight。
- 將 HDInsight 連線至 Azure 虛擬網路中的資料存放區。
- 直接存取無法透過網際網路公開使用的 Apache Hadoop 服務。 例如,Apache Kafka API 或 Apache HBase Java API。
重要
在 VNET 中建立 HDInsight 叢集將會建立數個網路資源,例如 NIC 和負載平衡器。 請勿刪除或修改這些網路資源,因為叢集需要這些網路資源,才能搭配 VNET 正常運作。
規劃
規劃在虛擬網路中安裝 HDInsight 時,您必須回答的問題如下:
您需要將 HDInsight 安裝到現有虛擬網路嗎? 或者,您要建立新的網路嗎?
如果您要使用現有虛擬網路,則可能需要先修改網路設定,才能安裝 HDInsight。 如需詳細資訊,請參閱 將 HDInsight 新增至現有虛擬網路 一節。
您要將包含 HDInsight 的虛擬網路連線至另一個虛擬網路或內部部署網路嗎?
若要輕鬆地跨網路使用資源,您可能需要建立自訂 DNS,並設定 DNS 轉送。 如需詳細資訊,請參閱連線多個網路一節。
您要將輸入或輸出流量限制/重新導向至 HDInsight 嗎?
HDInsight 必須具有 Azure 資料中心內特定 IP 位址的無限制通訊。 另外還有數個連接埠必須允許通過防火牆才能進行用戶端通訊。 如需詳細資訊,請參閱控制網路流量。
將 HDInsight 新增至現有虛擬網路
使用本節中的步驟,以了解如何將新的 HDInsight 新增至現有 Azure 虛擬網路。
注意
- 您無法在虛擬網路中新增現有的 HDInsight 叢集。
- 要建立的 VNET 和叢集必須位於相同的訂用帳戶中。
您要使用虛擬網路的傳統或 Resource Manager 部署模型嗎?
HDInsight 3.4 和更新版本需要 Resource Manager 虛擬網路。 舊版 HDInsight 需要傳統虛擬網路。
如果您的現有網路是傳統虛擬網路,則必須建立 Resource Manager 虛擬網路,然後連線兩者。 將傳統 VNet 連線至新的 VNet。
加入之後,Resource Manager 網路中所安裝的 HDInsight 就可以與傳統網路中的資源互動。
您使用網路安全性群組、使用者定義路由或虛擬網路設備來限制傳入或傳出虛擬網路的流量嗎?
HDInsight 是一個受控服務,需要 Azure 資料中心內數個 IP 位址的無限制存取權。 若要允許與這些 IP 位址的通訊,請更新任何現有網路安全性群組或使用者定義路由。
HDInsight 會裝載多個使用各種埠的服務。 請勿封鎖對這些連接埠的流量。 如需允許通過虛擬設備防火牆的連接埠清單,請參閱「安全性」一節。
若要尋找現有安全性設定,請使用下列 Azure PowerShell 或 Azure CLI 命令:
網路安全性群組
將
RESOURCEGROUP
取代為包含虛擬網路的資源群組名稱,然後輸入下列命令:Get-AzNetworkSecurityGroup -ResourceGroupName "RESOURCEGROUP"
az network nsg list --resource-group RESOURCEGROUP
如需詳細資訊,請參閱 針對網路安全組 進行疑難解答檔。
重要
會根據規則優先順序依序套用網路安全性群組規則。 會套用第一個符合流量模式的規則,而且未針對該流量套用其他規則。 排序從最寬鬆到最嚴格權限的規則。 如需詳細資訊,請參閱使用網路安全性群組來篩選網路流量文件。
使用者定義的路由
將
RESOURCEGROUP
取代為包含虛擬網路的資源群組名稱,然後輸入下列命令:Get-AzRouteTable -ResourceGroupName "RESOURCEGROUP"
az network route-table list --resource-group RESOURCEGROUP
如需詳細資訊,請參閱 診斷虛擬機路由問題 檔。
建立 HDInsight 叢集,並在設定期間選取 Azure 虛擬網絡。 使用下列文件中的步驟,以了解叢集建立程序:
- 使用 Azure 入口網站建立 HDInsight
- 使用 Azure PowerShell 建立 HDInsight
- 使用 Azure 傳統 CLI 建立 HDInsight
- 使用 Azure Resource Manager 範本建立 HDInsight
重要
將 HDInsight 新增至虛擬網路是選擇性的設定步驟。 請務必在設定叢集時選取虛擬網路。
連線多個網路
多網路設定的最大挑戰是網路之間的名稱解析。
Azure 會針對安裝於虛擬網路中的 Azure 服務提供名稱解析。 這個內建名稱解析允許 HDInsight 使用完整網域名稱 (FQDN) 連線至下列資源:
網際網路上的任何可用資源。 例如,microsoft.com、windowsupdate.com。
相同 Azure 虛擬網路中的任何資源,方法是使用資源的「內部 DNS 名稱」。 例如,使用預設名稱解析時,以下是指派給 HDInsight 背景工作節點的範例內部 DNS 名稱:
<workername1>.0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net
<workername2>.0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net
這些節點可以使用內部 DNS 名稱彼此直接通訊,以及與 HDInsight 中的其他節點通訊。
預設名稱解析「不」允許 HDInsight 解析加入虛擬網路之網路中的資源名稱。 例如,通常會將內部部署網路加入虛擬網路。 只使用預設名稱解析,HDInsight 無法透過名稱存取內部部署網路中的資源。 反之亦然,內部部署網路中的資源無法透過名稱存取虛擬網路中的資源。
警告
您必須建立自訂 DNS 伺服器,並設定虛擬網路使用它,再建立 HDInsight 叢集。
若要啟用虛擬網路與所加入網路中資源之間的名稱解析,您必須執行下列動作:
在要安裝 HDInsight 的 Azure 虛擬網路中建立自訂 DNS 伺服器。
將虛擬網路設定為使用自訂 DNS 伺服器。
尋找虛擬網路的 Azure 指派 DNS 尾碼。 此值與
0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net
類似。 如需尋找 DNS 尾碼的資訊,請參閱範例:自訂 DNS 一節。設定 DNS 伺服器之間的轉送。 設定取決於遠端網路類型。
如果遠端網路是內部部署網路,請設定 DNS,如下所示:
「自訂 DNS」(在虛擬網路中):
將虛擬網路 DNS 尾碼的要求轉送至 Azure 遞迴解析程式 (168.63.129.16)。 Azure 會處理虛擬網路中資源的要求
將所有其他要求轉送至內部部署 DNS 伺服器。 內部部署 DNS 會處理所有其他名稱解析要求,即使是網際網路資源 (例如 Microsoft.com) 的要求也是一樣。
內部部署 DNS:將虛擬網路 DNS 尾碼的要求轉送至自訂 DNS 伺服器。 自訂 DNS 伺服器接著會轉送至 Azure 遞迴解析程式。
此設定會將完整網域名稱包含虛擬網路 DNS 尾碼的要求路由傳送至自訂 DNS 伺服器。 內部部署 DNS 伺服器會處理所有其他要求 (即使是針對公用網際網路位址)。
如果遠端網路是另一個 Azure 虛擬網路,請設定 DNS,如下所示:
「自訂 DNS」(在每個虛擬網路中):
將虛擬網路 DNS 尾碼的要求轉送至自訂 DNS 伺服器。 每個虛擬網路中的 DNS 會負責解析其網路內的資源。
將所有其他要求轉送至 Azure 遞迴解析程式。 遞迴解析程式負責解析本機和網際網路資源。
根據 DNS 尾碼,每個網路的 DNS 伺服器都會將要求轉送至另一個。 其他要求是使用 Azure 遞迴解析程式進行解析。
如需每個設定的範例,請參閱範例:自訂 DNS 一節。
如需詳細資訊,請參閱 VM 和角色執行個體的名稱解析文件。
直接連線至 Apache Hadoop 服務
您可以連線至位於 https://CLUSTERNAME.azurehdinsight.net
的叢集。 此位址會使用公用 IP,如果您已使用 NSG 限制來自網際網路的傳入流量,則可能無法觸達該 IP。 此外,當您在虛擬網路中部署叢集時,可以使用私人端點 https://CLUSTERNAME-int.azurehdinsight.net
加以存取。 此端點會解析為虛擬網路內的私人IP以進行叢集存取。
若要透過虛擬網路連線至 Apache Ambari 和其他網頁,請使用下列步驟:
若要探索 HDInsight 叢集節點的內部完整網域名稱 (FQDN),請使用下列其中一種方法:
將
RESOURCEGROUP
取代為包含虛擬網路的資源群組名稱,然後輸入下列命令:$clusterNICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP" | where-object {$_.Name -like "*node*"} $nodes = @() foreach($nic in $clusterNICs) { $node = new-object System.Object $node | add-member -MemberType NoteProperty -name "Type" -value $nic.Name.Split('-')[1] $node | add-member -MemberType NoteProperty -name "InternalIP" -value $nic.IpConfigurations.PrivateIpAddress $node | add-member -MemberType NoteProperty -name "InternalFQDN" -value $nic.DnsSettings.InternalFqdn $nodes += $node } $nodes | sort-object Type
az network nic list --resource-group RESOURCEGROUP --output table --query "[?contains(name, 'node')].{NICname:name,InternalIP:ipConfigurations[0].privateIpAddress,InternalFQDN:dnsSettings.internalFqdn}"
在所傳回的節點清單中,尋找前端節點的 FQDN 並使用這些 FQDN 來連線至 Ambari 和其他 Web 服務。 例如,使用
http://<headnode-fqdn>:8080
存取 Ambari。重要
前端節點上裝載的某些服務一次只會在一個節點上作用。 如果您嘗試在一個前端節點上存取服務,但傳回 404 錯誤,請切換至其他的前端節點。
若要判斷可提供服務的節點和連接埠,請參閱 Hadoop 服務在 HDInsight 上所使用的連接埠文件。
負載平衡
當您建立 HDInsight 叢集時,也會建立數個負載平衡器。 由於 基本負載平衡器的淘汰,負載平衡器的類型位於 標準 SKU 層級,其具有特定條件約束。 除非網路安全組允許,否則會關閉對標準負載平衡器的輸入流程。 您可能需要將網路安全性系結至子網,並設定網路安全性規則。
針對 標準負載平衡器啟用數個輸出連線方法 。 值得注意的是,預設的輸出存取即將淘汰。 如果採用 NAT 閘道來提供輸出網路存取,則子網無法與基本負載平衡器搭配使用。 如果您想要將 NAT 閘道與子網結合,此子網中不應該有基本的負載平衡器。 使用 NAT 閘道做為輸出存取方法,新建立的 HDInsight 叢集無法與先前建立的 HDInsight 叢集共用相同的子網與基本負載平衡器。
另一個條件約束是不應該刪除或修改 HDInsight 負載平衡器。 對負載平衡器規則所做的任何變更都會在特定維護事件 (例如憑證更新) 期間遭到覆寫。 如果負載平衡器已修改且會影響叢集功能,您可能需要重新建立叢集。
下一步
- 如需建立 Azure 虛擬網路的程式碼範例和範例,請參閱建立 Azure HDInsight 叢集的虛擬網路。
- 如需設定 HDInsight 連線至內部部署網路的端對端範例,請參閱將 HDInsight 連線至內部部署網路。
- 如需 Azure 虛擬網路的詳細資訊,請參閱 Azure 虛擬網路概觀。
- 如需網路安全性群組的詳細資訊,請參閱網路安全性群組。
- 如需使用者定義路由的詳細資訊,請參閱使用者定義路由和 IP 轉送。
- 如需控制流量 (包括防火牆整合) 的詳細資訊,請參閱控制網路流量。