在 HDInsight 群集上启用专用链接
本文介绍如何利用 Azure 专用链接以专用方式通过 Azure 主干网络跨网络连接到 HDInsight 群集。 本文是在 Azure HDInsight 中限制群集连接一文的扩充,其中重点介绍了如何限制公共连接。 如果想要在 HDInsight 群集和相关资源之间建立公共连接,请考虑遵循在 Azure HDInsight 中控制网络流量中的指导来限制群集的连接。
在虚拟网络对等互连不可用或未启用的跨网络方案中可以利用专用链接。
注意
限制公共连接是启用专用链接的先决条件,不应被视为相同的功能。
使用专用链接连接到 HDInsight 群集是一项可选功能,默认情况下处于禁用状态。 该功能仅在 resourceProviderConnection
网络属性设置为 outbound 时可用,如在 Azure HDInsight 中限制群集连接一文中所述。
当 privateLink
设置为“已启用”时,会创建内部标准负载均衡器 (SLB),并为每个 SLB 预配 Azure 专用链接服务。 专用链接服务可让你从专用终结点访问 HDInsight 群集。
专用链接部署步骤
成功创建一个专用链接群集需要执行许多步骤,我们在此处概要介绍了相关内容。 请按照以下每个步骤操作,确保所有设置都正确。
步骤 1:创建先决条件
首先,请部署以下资源(如果尚未创建)。 你需要至少有 1 个资源组、2 个虚拟网络和 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 子网
若要为专用链接服务选择源 IP 地址,子网上需要 privateLinkServiceNetworkPolicies
显式禁用设置。 按照此处的说明禁用专用链接服务的网络策略。
步骤 3:部署 NAT 网关或防火墙
标准负载均衡器不会像基本负载均衡器那样自动提供公共出站 NAT。 由于专用链接群集使用标准负载均衡器,因此必须提供自己的 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 子网名称 default NAT 网关部署完成后,即可开始执行下一步。
配置防火墙(可选 2)
有关开始使用的基本设置:
- 将名为 AzureFirewallSubnet 的新子网添加到虚拟网络。
- 使用新子网配置新防火墙并添加防火墙策略。
- 使用新防火墙的专用 IP 地址作为路由表中的
nextHopIpAddress
值。 - 将该路由表添加到虚拟网络的已配置子网中。
你的 HDInsight 群集仍需要其出站依赖项的访问权限。 如果不允许这些出站依赖项,则群集创建可能会失败。 有关设置防火墙的详细信息,请参阅在 Azure HDInsight 中控制网络流量。
步骤 4:部署专用链接群集
此时,应考虑所有先决条件,并准备好部署专用链接群集。 下图显示了创建群集之前所需的网络配置的示例。 在此示例中,所有出站流量都通过用户定义的路由强制传输到 Azure 防火墙。 在创建群集之前,防火墙上应允许所需的出站依赖项。 对于企业安全性套餐群集,虚拟网络对等互连可以提供到 Microsoft Entra 域服务的网络连接。
创建群集
下面的 JSON 代码片段包含两个网络属性,必须在 Azure 资源管理器模板中配置这两个网络属性,以创建专用 HDInsight 群集:
networkProperties: {
"resourceProviderConnection": "Outbound",
"privateLink": "Enabled"
}
有关包含许多 HDInsight 企业安全功能(包括专用链接)的完整模板,请参阅“HDInsight 企业安全模板”。
若要使用 PowerShell 创建群集,请参阅示例。
若要使用 Azure CLI 创建群集,请参阅示例。
步骤 5:创建专用终结点
在专用链接群集部署过程中,Azure 将自动为 Ambari 和 SSH 负载均衡器创建专用链接服务。 部署群集后,必须在客户端 VNET 上创建两个专用终结点:一个用于 Ambari,另一个用于 SSH 访问。 然后,将它们链接到在群集部署过程中创建的专用链接服务。
若要创建专用终结点:
打开 Azure 门户并搜索“专用链接”。
在结果中,单击“专用链接”图标。
单击“创建专用终结点”,使用以下配置设置 Ambari 专用终结点:
Config Value 名称 hdi-privlink-cluster 资源类型 Microsoft.Network/privateLinkServices 资源 gateway-*(此值应与群集的 HDI 部署 ID 相匹配,例如 gateway-4eafe3a2a67e4cd88762c22a55fe4654) 虚拟网络 hdi-privlink-client-vnet 子网 default 使用以下配置重复该过程,以创建另一个用于 SSH 访问的专用终结点:
Config Value 名称 hdi-privlink-cluster-ssh 资源类型 Microsoft.Network/privateLinkServices 资源 headnode-*(此值应与群集的 HDI 部署 ID 相匹配,例如 headnode-4eafe3a2a67e4cd88762c22a55fe4654) 虚拟网络 hdi-privlink-client-vnet 子网 default
重要
如果使用 KafkaRestProxy HDInsight 群集,请按照此额外步骤启用专用终结点。
创建专用终结点后,就完成了此阶段的设置。 如果你没有记下分配给终结点的专用 IP 地址,请按照以下步骤操作:
- 在 Azure 门户中打开客户端 VNET。
- 单击“专用终结点”选项卡。
- 应会看到列出的 Ambari 和 SSH 网络接口。
- 单击每个接口并导航到“DNS 配置”边栏选项卡以查看专用 IP 地址。
- 记下这些 IP 地址,因为它们需要连接到群集并正确配置 DNS。
步骤 6:配置 DNS 以通过专用终结点进行连接
若要访问专用群集,可以通过专用 DNS 区域配置 DNS 解析。 在 Azure 托管的公共 DNS 区域 azurehdinsight.cn
中创建的专用链接条目如下所示:
<clustername> CNAME <clustername>.privatelink
<clustername>-int CNAME <clustername>-int.privatelink
<clustername>-ssh CNAME <clustername>-ssh.privatelink
下图显示了一个专用 DNS 条目的示例,该条目配置为允许从非对等互连的虚拟网络或者无法直接看到群集的虚拟网络访问群集。 可以使用 Azure DNS 专用区域来覆盖 *.privatelink.azurehdinsight.cn
完全限定的域名 (FQDN),并解析客户端网络中专用终结点的 IP 地址。 该配置仅适用于示例中的 <clustername>.azurehdinsight.cn
,但它也可扩展到其他群集终结点。
若要通过专用 DNS 区域配置 DNS 解析:
创建 Azure 专用 DNS 区域。 (此处未包含所有配置,所有其他配置均保留为默认值)
Config Value 名称 privatelink.azurehdinsight.cn 将记录集添加到 Ambari 的专用 DNS 区域。
配置 Value 名称 YourPrivateLinkClusterName 类型 A - 指向 IPv4 地址的别名记录 TTL 1 TTL 单位 小时数 IP 地址 用于 Ambari 访问的专用终结点的专用 IP 将记录集添加到 SSH 的专用 DNS 区域。
Config Value 名称 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 |
子网 | default |
部署客户端 VM 后,可以测试 Ambari 和 SSH 访问。
若要测试 Ambari 访问,请执行以下操作:
- 在 VM 上打开 Web 浏览器。
- 导航到群集的常规 FQDN:
https://<clustername>.azurehdinsight.cn
- 如果加载了 Ambari UI,则 Ambari 访问配置是正确的。
若要测试 ssh 访问,请执行以下操作:
- 打开命令提示符以获取终端窗口。
- 在终端窗口中,尝试使用 SSH 连接到群集:
ssh sshuser@<clustername>.azurehdinsight.cn
(将“sshuser”替换为你为群集创建的 ssh 用户) - 如果能够连接,则 SSH 访问配置是正确的。
管理 HDInsight 的专用终结点
可以对 Azure HDInsight 群集使用专用终结点,以允许虚拟网络上的客户端通过专用链接安全地访问你的群集。 虚拟网络上的客户端与 HDInsight 群集之间的网络流量通过 Microsoft Azure 主干网络遍历,从而避免了公共 Internet 的暴露。
专用链接服务使用者(例如 Azure 数据工厂)可以从两种连接批准方法中进行选择:
- 自动:如果服务使用者对 HDInsight 资源具有 Azure 基于角色的访问控制 (RBAC) 权限,则使用者可以选择自动批准方法。 在这种情况下,当请求到达 HDInsight 资源时,HDInsight 不需要执行任何操作,并且将自动批准连接。
- 手动:如果服务使用者对 HDInsight 资源没有 Azure RBAC 权限,则使用者可以选择手动批准方法。 在这种情况下,连接请求会以挂起状态出现在 HDInsight 资源上。 HDInsight 资源需要手动批准请求,然后才能建立连接。
若要管理专用终结点,请在 Azure 门户的群集视图中,转到“安全 + 网络”下的“网络”部分。 可以在这里看到所有现有连接、连接状态以及专用终结点详细信息。
还可以批准、拒绝或删除现有连接。 创建专用连接时,可以指定还想连接到哪个 HDInsight 子资源(例如,网关或头节点)。
下表显示了各种 HDInsight 资源操作以及专用终结点对应的连接状态。 HDInsight 资源还可以稍后更改专用终结点连接的连接状态,而无需使用者进行干预。 此操作将更新使用者端的终结点状态。
服务提供商操作 | 服务使用者专用终结点状态 | 说明 |
---|---|---|
无 | 挂起的 | 连接是手动创建的,正在等待专用链接资源所有者批准。 |
审批 | 已批准 | 连接已自动或手动批准,随时可供使用。 |
拒绝 | 已拒绝 | 连接被专用链接资源所有者拒绝。 |
删除 | 已断开连接 | 连接被专用链接资源所有者删除。 专用终结点已变为参考性终结点,应将其删除以清理资源。 |