教程:如何使用专用终结点从数据工厂托管 VNet 访问本地 SQL Server

本教程提供了使用 Azure 门户设置专用链接服务,以及使用专用终结点从托管虚拟网络访问本地 SQL Server 的步骤。 使用托管虚拟网络可确保出入本地 SQL 源的流量全部通过自己的专用终结点,从而通过额外的安全和隔离层来保护对云的公开。 要支持该方案,必须使用下面提及的所需资源。

注意

本文中提供的解决方案介绍了 SQL Server 连接,但你可以使用类似的方法来连接和查询 Azure 数据工厂支持的其他可用本地连接器

显示 SQL Server 访问模型的屏幕截图。

先决条件

  • Azure 订阅。 如果没有 Azure 订阅,请在开始前创建一个试用帐户
  • 虚拟网络。 如果你没有虚拟网络,请按照创建虚拟网络中所述创建一个。
  • 虚拟网络到本地网络。 使用 ExpressRouteVPN 在虚拟网络与本地网络之间创建连接。 如果更喜欢在专用网络中使用云虚拟机,也可以执行此操作。 只需为云虚拟机创建一个虚拟网络以及连接到该虚拟网络的专用链接,就可以像访问专用网络中的本地计算机一样访问这些虚拟机,即使它们托管在云中也是如此。
  • 启用了托管 VNet 的数据工厂。 如果你没有数据工厂或者未启用托管 VNet,请按照创建具有托管 VNet 的数据工厂一文所述创建一个。

创建资源的子网

使用门户在虚拟网络中创建子网

子网 说明
be-subnet 后端服务器的子网
fe-subnet 标准内部负载均衡器的子网
pls-subnet 专用链接服务的子网

显示子网的屏幕截图。

创建标准负载均衡器

使用门户创建标准内部负载均衡器。

  1. 在屏幕的左上方,选择“创建资源”>“网络”>“负载均衡器”。

  2. 在“创建负载均衡器”页的“基本信息”选项卡中,输入或选择以下信息:

    设置
    订阅 选择订阅。
    资源组 选择资源组。
    名称 输入 myLoadBalancer
    区域 选择“中国北部 3”。
    类型 选择“内部”。
    SKU 选择“标准”。
    虚拟网络 选择你的虚拟网络。
    子网 选择在上一步骤中创建的“fe-subnet”。
    IP 地址分配 选择“动态”。
    可用性区域 选择“区域冗余”。
  3. 接受剩余设置的默认值,然后选择“查看 + 创建”。

  4. 在“查看 + 创建”选项卡中,选择“创建”。

    显示创建标准负载均衡器的步骤的屏幕截图。

创建负载均衡器资源

创建后端池

后端地址池包含连接到负载均衡器的虚拟 (NIC) 的 IP 地址。

创建后端地址池 myBackendPool 以包含用于对 Internet 流量进行负载均衡的虚拟机。

  1. 在左侧菜单中选择“所有服务”,选择“所有资源”,然后在资源列表中选择“myLoadBalancer”。
  2. 在“设置”下,依次选择“后端池”、“添加”。
  3. 在“添加后端池”页上,键入 myBackendPool 作为后端池的名称,然后选择“添加”。

创建运行状况探测器

负载均衡器使用运行状况探测器监视应用的状态。

运行状况探测器基于 VM 对运行状况检查的响应,在负载均衡器中添加或删除 VM。

创建名为 myHealthProbe 的运行状况探测来监视 VM 的运行状况。

  1. 在左侧菜单中选择“所有服务”,选择“所有资源”,然后在资源列表中选择“myLoadBalancer”。

  2. 在“设置”下,依次选择“运行状况探测”、“添加”。

    设置
    名称 输入 myHealthProbe
    协议 选择“TCP”。
    端口 输入 22。
    时间间隔 输入 15 作为两次探测尝试之间的时间间隔(以秒为单位)。
    不正常阈值 选择“2”,作为将 VM 视为不正常所要达到的不正常阈值或连续探测失败次数。
  3. 将其余字段保留默认值,然后选择“确定”。

创建负载均衡器规则

负载均衡器规则用于定义将流量分配给 VM 的方式。 定义传入流量的前端 IP 配置和后端 IP 池以接收流量。 源端口和目标端口在规则中定义。

在本部分中,你将创建创建负载均衡器规则:

  1. 在左侧菜单中选择“所有服务”,选择“所有资源”,然后在资源列表中选择“myLoadBalancer”。

  2. 在“设置”下,依次选择“负载均衡规则”、“添加” 。

  3. 使用以下值配置负载均衡规则:

    设置
    名称 输入 myRule。
    IP 版本 选择“IPv4”。
    前端 IP 地址 选择“LoadBalancerFrontEnd”。
    协议 选择“TCP”。
    端口 输入 1433。
    后端端口 输入 1433。
    后端池 选择“myBackendPool”。
    运行状况探测 选择“myHealthProbe”。
    空闲超时(分钟) 将滑块移动到 15 分钟。
    TCP 重置 选择“已禁用”。
  4. 将剩余的字段保留默认设置,然后选择“确定”。

在本部分,在标准负载均衡器后创建专用链接服务。

  1. 在 Azure 门户页面的左上部分,选择“创建资源”。

  2. 在“在市场中搜索”框中搜索“专用链接” 。

  3. 选择“创建”。

  4. 在“专用链接中心”下的“概述”中,选择蓝色的“创建专用链接服务”按钮 。

  5. 在“创建专用链接服务”的“基本信息”选项卡中,输入或选择以下信息 :

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择你的资源组。
    实例详细信息
    名称 输入 myPrivateLinkService
    区域 选择“中国北部 3”。
  6. 选择“出站设置”选项卡或选择页面底部的“下一步: 出站设置”。

  7. 在“出站设置”选项卡中,输入或选择以下信息:

    设置 Value
    负载均衡器 选择“myLoadBalancer”。
    负载均衡器前端 IP 地址 选择“LoadBalancerFrontEnd”。
    源 NAT 子网 选择“pls-subnet”。
    启用 TCP 代理 V2 保留默认值“否”。
    专用 IP 地址设置
    保留默认设置。
  8. 选择“访问安全”选项卡或选择页面底部的“下一步: 访问安全”。

  9. 在“访问安全”选项卡中保留默认值“仅限基于角色的访问控制” 。

  10. 选择“标记”选项卡或选择页面底部的“下一步: 标记”。

  11. 选择“查看 + 创建”选项卡或选择页面底部的“下一步: 查看 + 创建”。

  12. 在“查看 + 创建”选项卡中,选择“创建” 。

创建后端服务器

  1. 在门户的左上方,选择“创建资源”>“计算”>“虚拟机”。

  2. 在“创建虚拟机”中,在“基本信息”选项卡中键入或选择值:

    设置
    项目详细信息
    订阅 选择 Azure 订阅。
    资源组 选择你的资源组。
    实例详细信息
    虚拟机名称 输入“myVM1”。
    区域 选择“中国北部 3”。
    可用性选项 选择“可用性区域”。
    可用性区域 选择“1”。
    映像 选择“Ubuntu Server 22.04 LTS”
    Azure Spot 实例 请选择“否”。
    大小 选择 VM 大小或采用默认设置。
    管理员帐户
    用户名 输入用户名。
    SSH 公钥源 生成新的密钥对。
    密钥对名称 mySSHKey。
    入站端口规则
    公共入站端口
  3. 选择“网络”选项卡,或选择“下一步: 磁盘”,然后选择“下一步: 网络”。

  4. 在“网络”选项卡中,选择或输入:

    设置
    网络接口
    虚拟网络 选择你的虚拟网络。
    子网 be-subnet。
    公共 IP 选择
    NIC 网络安全组 选择“无”。
    负载均衡
    是否将此虚拟机置于现有负载均衡解决方案之后? 请选择“是”。
    负载均衡设置
    负载均衡选项 选择“Azure 负载均衡”。
    选择负载均衡器 选择“myLoadBalancer”。
    选择后端池 选择“myBackendPool”。
  5. 选择“查看 + 创建”。

  6. 检查设置,然后选择“创建”。

  7. 可重复步骤 1 至 6,创建多个后端服务器 VM 来实现高可用性。

创建到终结点的转发规则

  1. 登录并将脚本 ip_fwd.sh 复制到后端服务器 VM。

  2. 使用以下选项运行脚本:

    sudo ./ip_fwd.sh -i eth0 -f 1433 -a <FQDN/IP> -b 1433
    

    将占位符 <FQDN/IP> 设置为目标 SQL Server IP。

    注意

    除非在 Azure DNS 区域中添加记录,否则 FQDN 不适用于本地 SQL Server。

  3. 运行以下命令并检查后端服务器 VM 中的 iptables。 在 iptables 中,可以看到一条包含目标 IP 的记录。

    sudo iptables -t nat -v -L PREROUTING -n --line-number**
    

    显示命令记录的屏幕截图。

    注意

    如果有多个 SQL Server 或数据源,则需要使用不同的端口定义多个负载均衡器规则和 IP 表记录。 否则会发生某种冲突。 例如,

    负载均衡器规则中的端口 负载均衡器规则中的后端端口 在后端服务器 VM 中运行的命令
    SQL Server 1 1433 1433 sudo ./ip_fwd.sh -i eth0 -f 1433 -a <FQDN/IP> -b 1433
    SQL Server 2 1434 1434 sudo ./ip_fwd.sh -i eth0 -f 1434 -a <FQDN/IP> -b 1433

    注意

    请务必注意,虚拟机 (VM) 中的配置不是永久性的。 这意味着每次 VM 重启时,都需要重新配置。

  1. 在左侧菜单中选择“所有服务”,选择“所有资源”,然后在资源列表中选择你的数据工厂。

  2. 选择“创作和监视”,在单独的选项卡中启动数据工厂 UI。

  3. 转到“管理”选项卡,然后转到“托管专用终结点”部分 。

  4. 在“托管专用终结点”下选择“+新建” 。

  5. 在列表中选择“专用链接服务”磁贴,然后选择“继续” 。

  6. 输入专用终结点的名称,然后在专用链接服务列表中选择“myPrivateLinkService”。

  7. 添加目标本地 SQL Server 的 <FQDN>

    显示专用终结点设置的屏幕截图。

    注意

    在虚拟网络中的虚拟机上部署 SQL Server 时,必须通过追加专用链接来增强 FQDN。 否则,它将与 DNS 设置中的其他记录冲突。 例如,只需将 SQL Server 的 FQDN 从 sqlserver.chinanorth3.cloudapp.chinacloudapi.cn 修改为 sqlserver.privatelink.chinanorth3.cloudapp.chinacloudapi.cn

    注意

    目前,SQL 连接属性不支持 ApplicationIntent 和 MultiSubnetFailover。

  8. 创建专用终结点。

创建链接服务并测试连接

  1. 转到“管理”选项卡,然后转到“链接服务”部分。

  2. 在“链接服务”下选择“+新建” 。

  3. 从列表中选择“SQL Server”磁贴,然后选择“继续” 。

    显示链接服务创建页的屏幕截图。

  4. 启用“交互式创作”。

    显示如何启用“交互式创作”的屏幕截图。

  5. 输入本地 SQL Server 的 FQDN、用户名和密码 。

  6. 然后单击“测试连接”。

    显示 SQL Server 链接服务创建页的屏幕截图。

    注意

    如果有多个 SQL Server 并且需要定义多个负载均衡器规则和具有不同端口的 IP 表记录,请确保在编辑链接服务时在 FQDN 后显式添加端口名称。 NAT VM 将处理端口转换。 如果未显式指定,则连接将始终超时。

疑难解答

转到后端服务器 VM,确认 SQL Server 使用的 telnet:telnet <FQDN> 1433。

请继续学习以下教程,了解如何使用专用终结点从数据工厂托管 VNet 访问 Azure SQL 托管实例: