你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

规划 Azure HDInsight 的虚拟网络

本文提供有关将 Azure 虚拟网络 (VNet) 与 Azure HDInsight 配合使用的背景信息。 其中介绍了在为 HDInsight 群集实施虚拟网络之前必须做出的设计和实施决策。 规划阶段完成后,可以继续为 Azure HDInsight 群集创建虚拟网络。 有关正确配置网络安全组 (NSG) 和用户定义的路由所需的 HDInsight 管理 IP 地址的详细信息,请参阅 HDInsight 管理 IP 地址

使用 Azure 虚拟网络支持以下方案:

  • 直接从本地网络连接到 HDInsight。
  • 将 HDInsight 连接到 Azure 虚拟网络中的数据存储。
  • 直接访问无法通过 Internet 公开访问的 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 和群集必须在同一订阅中。
  1. 对虚拟网络使用经典模式还是资源管理器部署模式?

    HDInsight 3.4 及更高版本要求使用资源管理器虚拟网络。 早期版本的 HDInsight 要求使用经典虚拟网络。

    如果你的现有网络是经典虚拟网络,则必须创建资源管理器虚拟网络,然后连接这两者。 将经典 VNet 连接到新的 VNet

    加入后,资源管理器网络中安装的 HDInsight 就可以与经典网络中的资源进行交互了。

  2. 是否使用网络安全组、用户定义路由或虚拟网络设备来限制流量进出虚拟网络?

    作为托管服务,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
      

      有关详细信息,请参阅诊断虚拟机路由问题一文。

  3. 创建一个 HDInsight 群集,并在配置过程中选择 Azure 虚拟网络。 使用以下文档中的步骤了解群集创建过程:

    重要说明

    向虚拟网络添加 HDInsight 是一项可选的配置步骤。 请确保在配置群集时选择虚拟网络。

连接多个网络

多网络配置的最大挑战是网络之间的名称解析。

Azure 为安装在虚拟网络中的 Azure 服务提供名称解析。 此内置的名称解析功能允许 HDInsight 使用完全限定的域名 (FQDN) 连接到以下资源:

  • Internet 上的任何可用资源。 例如,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 群集前使用它。

若要在虚拟网络和已连接网络中的资源之间启用名称解析,必须执行以下操作:

  1. 在计划安装 HDInsight 的 Azure 虚拟网络中创建自定义 DNS 服务器。

  2. 将虚拟网络配置为使用自定义 DNS 服务器。

  3. 为虚拟网络找出 Azure 分配的 DNS 后缀。 该值类似于 0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net。 有关查找 DNS 后缀的信息,请参阅示例:自定义 DNS 部分。

  4. 配置 DNS 服务器之间的转发。 此配置取决于远程网络的类型。

    • 如果远程网络是本地网络,请按如下所示配置 DNS:

      • 自定义 DNS(位于虚拟网络中):

        • 将虚拟网络 DNS 后缀的请求转发到 Azure 递归解析程序 (168.63.129.16)。 Azure 处理虚拟网络中资源的请求

        • 将其他所有请求转发到本地 DNS 服务器。 本地 DNS 处理所有其他名称解析请求,甚至是 Internet 资源(如 microsoft.com)的请求。

      • 本地 DNS: 将虚拟网络 DNS 后缀的请求转发到自定义 DNS 服务器。 然后,自定义 DNS 服务器转发给 Azure 递归解析程序。

        此配置将包含虚拟网络 DNS 后缀的完全限定的域名请求路由至自定义 DNS 服务器。 所有其他请求(甚至包括对公共 Internet 地址的请求)由本地 DNS 服务器处理。

    • 如果远程网络是其他 Azure 虚拟网络,请按如下所示配置 DNS:

      • 自定义 DNS(位于每个虚拟网络中):

        • 虚拟网络 DNS 后缀的请求将转发到自定义 DNS 服务器。 每个虚拟网络中的 DNS 负责解析其网络中的资源。

        • 将所有其他请求转发到 Azure 递归解析程序。 递归解析程序负责解析本地资源和 Internet 资源。

        每个网络的 DNS 服务器根据 DNS 后缀将请求转发到其他服务器。 其他请求使用 Azure 递归解析程序进行解析。

      有关每个配置的示例,请参阅示例:自定义 DNS 部分。

有关详细信息,请参阅 VM 和角色实例的名称解析文档。

直接连接到 Apache Hadoop 服务

可以通过 https://CLUSTERNAME.azurehdinsight.net 连接到该群集。 此地址使用公共 IP,如果已使用 NSG 来限制来自 Internet 的传入流量,则可能无法访问此地址。 此外,在虚拟网络中部署该群集时,可以使用专用终结点 https://CLUSTERNAME-int.azurehdinsight.net 来访问该群集。 此终结点可解析为虚拟网络中的专用 IP,以进行群集访问。

若要通过虚拟网络连接到 Apache Ambari 以及其他网页,请使用以下步骤:

  1. 若要发现 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 错误,请切换到其他头节点。

  2. 若要确定服务可用的节点和端口,请参阅 HDInsight 的 Hadoop 服务所用的端口一文。

负载均衡

创建 HDInsight 群集时,还会创建多个负载均衡器。 由于基本负载均衡器已停用,负载均衡器的类型处于标准 SKU 级别,这将存在一定的约束。 除非网络安全组允许,否则将关闭到标准负载均衡器的入站流。 你可能需要将网络安全绑定到子网并配置网络安全规则。

标准负载均衡器支持多种出站连接方法。 值得注意的是,默认的出站访问方式即将停用。 如果采用 NAT 网关来提供出站网络访问,则子网无法使用基本负载均衡器。 如果打算将 NAT 网关绑定到子网,则此子网中不应存在基本负载均衡器。 以 NAT 网关作为出站访问方法时,新创建的 HDInsight 群集无法与以前创建的具有基本负载均衡器的 HDInsight 群集共享同一子网。

另一个约束是不应删除或修改 HDInsight 负载均衡器。 某些维护事件(如证书续订)期间,对负载均衡器规则的任何更改都将被覆盖。 如果负载均衡器已修改且该修改影响了群集功能,则可能需要重新创建群集。

使用自定义 VNet 创建 Azure HDInsight 群集:专用终结点要求和策略注意事项

概述

在自定义虚拟网络(VNet)中创建 Azure HDInsight 群集时,HDInsight 资源提供程序(RP)必须自动将多个网络资源部署到 VNet 的资源组中,例如负载均衡器、网络接口、IP 地址、专用终结点等。Azure 存储和 Azure SQL 数据库(如果未提供)也将与群集一起创建。

HDInsight 中专用终结点的角色

专用终结点将用于通过Microsoft主干网络私下安全地将群集连接到 Azure 服务,例如 Azure 存储和 Azure SQL 数据库。

策略对专用终结点创建的影响

如果组织具有 Azure 策略,该策略会拒绝创建专用终结点,或者根据资源组 中 Azure 中的“限制跨租户专用终结点连接”文档拒绝创建跨租户专用终结点,则 HDInsight 群集创建将失败。 这是因为:

  • HDInsight RP 无法创建必要的专用终结点资源。
  • 群集将转换为错误状态。

典型错误方案

如果阻止了专用终结点创建,则群集预配期间可能会出现错误:

  • 无法创建专用存储私有终端节点

最佳做法和建议

在 Azure Policy 中创建豁免,以允许在 HDInsight 群集所在的订阅或资源组中创建 PE。

Next steps