将 Azure-SSIS 集成运行时加入虚拟网络

适用于: Azure 数据工厂 Azure Synapse Analytics

在 Azure 数据工厂中使用 SQL Server Integration Services (SSIS) 时,对于以下情况,应将 Azure SSIS 集成运行时 (IR) 加入 Azure 虚拟网络:

  • 希望在不配置或管理用作代理的自承载 IR 的情况下,从 Azure-SSIS IR 中运行的 SSIS 包连接到本地数据存储。

  • 想要在具有 IP 防火墙规则/虚拟网络服务终结点的 Azure SQL 数据库中或具有专用终结点的 SQL 托管实例中托管 SSIS 目录数据库 (SSISDB)。

  • 想要从 Azure-SSIS IR 中运行的 SSIS 包连接到配置了虚拟网络服务终结点的 Azure 资源。

  • 想要从 Azure-SSIS IR 中运行的 SSIS 包连接到配置了 IP 防火墙规则的数据存储/资源。

使用数据工厂可将 Azure-SSIS IR 加入通过经典部署模型或 Azure 资源管理器部署模型创建的虚拟网络。

重要

经典虚拟网络即将弃用,请改用 Azure 资源管理器虚拟网络。 如果已使用经典虚拟网络,请尽快切换到 Azure 资源管理器虚拟网络。

配置 Azure SQL Server Integration Services (SSIS) 集成运行时 (IR) 以加入虚拟网络教程提供了通过 Azure 门户完成的最少量步骤。 本文对该教程的内容做了补充,介绍如何执行以下所有可选任务:

  • 如果使用的是虚拟网络(经典)。
  • 如果使用自己的 Azure-SSIS IR 公共 IP 地址。
  • 如果使用自己的域名系统 (DNS) 服务器。
  • 如果在子网中使用网络安全组 (NSG)。
  • 如果使用 Azure ExpressRoute 或用户定义的路由 (UDR)。
  • 如果使用自定义的 Azure-SSIS IR。
  • 如果使用 Azure Powershell 预配。

访问本地数据存储

如果 SSIS 包访问本地数据存储,则你可以将 Azure-SSIS IR 加入已连接到本地网络的虚拟网络。 或者,可以将自承载 IR 配置为 Azure-SSIS IR 的代理并对其进行管理。 有关详细信息,请参阅配置自承载 IR 作为 Azure-SSIS IR 的代理

将 Azure-SSIS IR 加入到虚拟网络时,请记住以下要点:

  • 如果没有任何虚拟网络连接到本地网络,请先创建 Azure-SSIS IR 要加入到的 Azure 资源管理器虚拟网络。 然后,配置从该虚拟网络到本地网络的站点到站点 VPN 网关连接ExpressRoute 连接。

  • 如果已有一个 Azure 资源管理器虚拟网络连接到 Azure-SSIS 集成运行时所在同一位置中的本地网络,可将 IR 加入该虚拟网络。

  • 如果已有一个经典虚拟网络连接到与 Azure-SSIS IR 所在位置不同的位置中的本地网络,可以创建 Azure-SSIS IR 要加入到的 Azure 资源管理器虚拟网络。 然后,配置经典到 Azure 资源管理器虚拟网络连接。

  • 如果已有一个 Azure 资源管理器虚拟网络连接到与 Azure-SSIS IR 所在位置不同的位置中的本地网络,可以先创建 Azure-SSIS IR 要加入到的 Azure 资源管理器虚拟网络。 然后,配置 Azure 资源管理器到 Azure 资源管理器虚拟网络连接。

在 SQL 数据库中承载 SSIS 目录

如果将 SSIS 目录承载在具有虚拟网络服务终结点的 Azure SQL 数据库中,请确保将 Azure-SSIS IR 加入到同一虚拟网络和子网中。

如果你在具有专用终结点的 SQL 托管实例中托管 SSIS 目录,请确保将 Azure-SSIS IR 加入同一虚拟网络,但让其位于与托管实例不同的子网中。 若要将 Azure-SSIS IR 加入与 SQL 托管实例不同的虚拟网络,我们建议建立虚拟网络对等互连(限于相同的区域)或者虚拟网络之间的连接。 有关详细信息,请参阅将应用程序连接到 Azure SQL 托管实例

对 Azure 服务的访问权限

如果 SSIS 包访问支持虚拟网络服务终结点的 Azure 资源,并且你想要从 Azure-SSIS IR 保护对这些资源的访问,则可以将 Azure-SSIS IR 加入到配置了虚拟网络服务终结点的虚拟网络子网,然后将虚拟网络规则添加到相关的 Azure 资源,以允许来自同一子网的访问。

访问 IP 防火墙规则保护的数据源

如果 SSIS 包访问仅允许特定静态公共 IP 地址的数据存储/资源,并且你想要从 Azure-SSIS IR 保护对这些资源的访问,则可以将公共 IP 地址与 Azure-SSIS IR 相关联,同时将其加入虚拟网络,然后将 IP 防火墙规则添加到相关的 Azure 资源,以允许来自这些 IP 地址的访问。 可通过两种替代方法来实现此目的:

  • 创建 Azure-SSIS IR 时,可以自带公共 IP 地址,并通过数据工厂 UI 或 SDK 指定。 只有 Azure-SSIS IR 的出站 Internet 连接将使用你提供的公共 IP 地址,子网中的其他设备将不使用它们。
  • 你还可以为 Azure-SSIS IR 将加入的子网设置虚拟网络 NAT,并且该子网中的所有出站连接都将使用你指定的公共 IP 地址。

在所有情况下,都只能通过 Azure 资源管理器部署模型部署虚拟网络。

以下部分提供了更多详细信息。

虚拟网络配置

根据以下要求设置虚拟网络:

  • 确保 Microsoft.Batch 是承载 Azure-SSIS IR 的虚拟网络子网订阅下的已注册提供程序。 如果使用的是经典虚拟网络,请同时将 MicrosoftAzureBatch 加入到该虚拟网络的经典虚拟机参与者角色。

  • 请确保具有所需的权限。 有关详细信息,请参阅设置权限

  • 选择合适的子网,承载 Azure-SSIS IR。 有关详细信息,请参阅选择子网

  • 如果使用自己的 Azure-SSIS IR 公共 IP 地址,请参阅选择静态公共 IP 地址

  • 如果在虚拟网络中使用你自己的域名系统 (DNS) 服务器,请参阅设置 DNS 服务器

  • 如果在子网中使用网络安全组 (NSG),请参阅设置 NSG

  • 如果使用 Azure ExpressRoute 或用户定义的路由 (UDR),请参阅使用 Azure ExpressRoute 或 UDR

  • 确保虚拟网络的资源组(如果使用自己的公共 IP 地址,则为公共 IP 地址的资源组)可以创建和删除特定的 Azure 网络资源。 有关详细信息,请参阅设置资源组

  • 如果按照 Azure-SSIS IR 的自定义设置中所述自定义 Azure-SSIS IR,则用于管理其节点的内部进程会使用从 172.16.0.0 到 172.31.255.255 的预定义范围内的专用 IP 地址。 因此,请确保虚拟网络或本地网络的专用 IP 地址范围不会与此范围冲突。

下图显示了 Azure-SSIS IR 所需的连接:

此图显示了 Azure-SSIS IR 所需的连接。

设置权限

创建 Azure-SSIS IR 的用户必须拥有以下权限:

  • 如果要将 SSIS IR 加入 Azure 资源管理器虚拟网络,则有两种选择:

    • 使用内置的“网络参与者”角色。 此角色具有 Microsoft.Network/* 权限,具有比所需作用域更大的作用域。

    • 创建仅包括必需的 Microsoft.Network/virtualNetworks/*/join/action 权限的一个自定义角色。 如果你还想要使用自己的 Azure-SSIS IR 公共 IP 地址,同时将其加入 Azure 资源管理器虚拟网络,请在角色中包含 Microsoft.Network/publicIPAddresses/*/join/action 权限。

  • 如果要将 SSIS IR 加入经典虚拟网络,我们建议使用内置的“经典虚拟机参与者”角色。 否则,你必须定义包含加入虚拟网络权限的自定义角色。

选择子网

选择子网时:

  • 不要选择 GatewaySubnet 来部署 Azure-SSIS IR。 GatewaySubnet 专用于虚拟网络网关。

  • 确保选择的子网具有足够的可用地址空间以供 Azure-SSIS IR 使用。 将可用 IP 地址数保持为 IR 节点数的至少两倍。 Azure 会保留每个子网中的某些 IP 地址。 不能使用这些地址。 子网的第一个和最后一个 IP 地址仅为协议一致性而保留,其他三个地址用于 Azure 服务。 有关详细信息,请参阅使用这些子网中的 IP 地址是否有任何限制?

  • 不要使用其他 Azure 服务(例如,SQL 数据库 SQL 托管实例、应用服务等)以独占方式占用的子网。

选择静态公共 IP 地址

若要使用自己的 Azure-SSIS IR 公共 IP 地址,同时将其加入虚拟网络,请确保它们符合以下要求:

  • 应仅提供尚未与其他 Azure 资源关联的两个未使用的 IP 地址。 当我们定期升级你的 Azure-SSIS IR 时,将使用一个额外的 IP 地址。 请注意,不能在活动的 Azure SSIS IR 之间共享一个公共 IP 地址。

  • 这些 IP 地址应该是标准类型的静态 IP。 有关更多详细信息,请参阅公共 IP 地址的 SKU

  • 它们应该都有 DNS 名称。 如果在创建 IP 地址时未提供 DNS 名称,可以在 Azure 门户中提供。

Azure-SSIS IR

  • 这些 IP 地址和虚拟网络应位于同一区域中的同一订阅下。

设置 DNS 服务器

如果需要在 Azure-SSIS IR 加入的虚拟网络中使用自己的 DNS 服务器来解析专用主机名,请确保该服务器可以解析 Azure 主机名(例如,名为 <your storage account>.blob.core.chinacloudapi.cn 的 Azure 存储 Blob)。

下面是建议的一种方法:

  • 配置自定义 DNS,以将请求转发到 Azure DNS。 可以在你自己的 DNS 服务器上将未解析的 DNS 记录转发到 Azure 递归解析程序 (168.63.129.16) 的 IP 地址。

有关详细信息,请参阅使用自己的 DNS 服务器的名称解析

备注

请使用完全限定的域名 (FQDN) 作为专用主机名(例如,使用 <your_private_server>.contoso.com 而不是 <your_private_server>)。 或者,可以在 Azure-SSIS IR 上使用标准自定义设置将自己的 DNS 后缀(例如 contoso.com)自动追加到任何未限定的单标签域名后,将其转换为 FQDN,然后再在 DNS 查询中使用它。详见标准自定义设置示例

设置 NSG

如果需要为 Azure-SSIS IR 使用的子网实施 NSG,请允许入站和出站流量通过以下端口:

  • Azure-SSIS IR 的入站要求
方向 传输协议 源端口范围 目标 目标端口范围 注释
入站 TCP BatchNodeManagement * VirtualNetwork 29876、29877(如果将 IR 加入资源管理器虚拟网络)

10100、20100、30100(如果将 IR 加入经典虚拟网络)
数据工厂服务使用这些端口来与虚拟网络中 Azure-SSIS IR 的节点通信。

无论是否创建子网级 NSG,数据工厂都始终会在附加到托管 Azure-SSIS IR 的虚拟机的网络接口卡 (NIC) 级别配置 NSG。 此 NIC 级别的 NSG 仅允许来自指定端口上的数据工厂 IP 地址的入站流量。 即使在子网级别为 Internet 流量打开这些端口,来自 IP 地址(非数据工厂 IP 地址)的流量也会在 NIC 级别被阻止。
入站 TCP CorpNetSaw * VirtualNetwork 3389 (可选)仅当 Microsoft 支持人员在高级故障排除期间要求客户打开此端口时,才需要此规则。故障排除后可立即将其关闭。 CorpNetSaw 服务标记仅允许 Microsoft 企业网络中的安全访问工作站使用远程桌面。 无法在门户中选择此服务标记,只能通过 Azure PowerShell 或 Azure CLI 选择。

在 NIC 级别的 NSG 中,端口 3389 默认已打开,你可以在子网级 NSG 中控制端口 3389,同时,出于保护目的,Azure-SSIS IR 默认已在每个 IR 节点上的 Windows 防火墙规则中禁用 3389 出站端口。
  • Azure-SSIS IR 的出站要求
方向 传输协议 源端口范围 目标 目标端口范围 注释
出站 TCP VirtualNetwork * AzureCloud 443 虚拟网络中 Azure-SSIS IR 的节点使用此端口来访问 Azure 服务,例如 Azure 存储和 Azure 事件中心。
出站 TCP VirtualNetwork * Internet 80 (可选)虚拟网络中的 Azure-SSIS IR 节点使用此端口从 Internet 下载证书吊销列表。 如果阻止此流量,在启动 IR 时可能会出现性能下降,并且无法在证书吊销列表中检查证书的使用情况。 若要进一步将目标范围缩小为特定的 FQDN,请参阅 使用 Azure ExpressRoute 或 UDR 部分
出站 TCP VirtualNetwork * Sql 1433、11000-11999 (可选)仅当虚拟网络中 Azure-SSIS IR 的节点访问服务器托管的 SSISDB 时,才需要此规则。 如果服务器连接策略设置为“代理”而不是“重定向”,则只需使用端口 1433。

此出站安全规则不适用于虚拟网络中 SQL 托管实例托管的 SSISDB 或配置了专用终结点的 SQL 数据库。
出站 TCP VirtualNetwork * VirtualNetwork 1433、11000-11999 (可选)仅当虚拟网络中 Azure-SSIS IR 的节点访问虚拟网络中由 SQL 托管实例托管的 SSISDB 或配置了专用终结点的 SQL 数据库时,才需要此规则。 如果服务器连接策略设置为“代理”而不是“重定向”,则只需使用端口 1433。
出站 TCP VirtualNetwork * 存储 445 (可选)仅当你要执行 Azure 文件存储中存储的 SSIS 包时,才需要此规则。

使用 Azure ExpressRoute 或 UDR

若要检查来自 Azure-SSIS IR 的出站流量,可以通过 Azure ExpressRoute 强制隧道将 Azure-SSIS IR 发起的流量路由到本地防火墙设备(将 BGP 路由从 0.0.0.0/0 播发到虚拟网络),或者通过 UDR 将此流量路由到充当防火墙或 Azure 防火墙的网络虚拟设备 (NVA)。

Azure-SSIS IR 的 NVA 方案

需要执行以下操作才能使整个方案正常工作

  • 不能通过防火墙设备路由 Azure Batch 管理服务与 Azure-SSIS IR 之间的入站流量。
  • 防火墙设备应允许 Azure-SSIS IR 所需的出站流量。

不能将 Azure Batch 管理服务与 Azure-SSIS IR 之间的入站流量路由到防火墙设备,否则流量会由于非对称路由问题而中断。 必须为入站流量定义路由,使流量能够以其传入时的相同方式做出回复。 可以定义特定的 UDR,在 Azure Batch 管理服务与下一跃点类型为“Internet”的 Azure-SSIS IR 之间路由流量。

备注

此方法会产生额外的维护成本。 定期检查 IP 范围,并在 UDR 中添加新的 IP 范围,以免中断 Azure-SSIS IR。 建议每月检查 IP 范围,因为当新 IP 出现在服务标记中时,该 IP 需要再等一个月才能生效。

若要简化 UDR 规则的设置,可以运行以下 Powershell 脚本,为 Azure Batch 管理服务添加 UDR 规则:

$Location = "[location of your Azure-SSIS IR]"
$RouteTableResourceGroupName = "[name of Azure resource group that contains your Route Table]"
$RouteTableResourceName = "[resource name of your Azure Route Table ]"
$RouteTable = Get-AzRouteTable -ResourceGroupName $RouteTableResourceGroupName -Name $RouteTableResourceName
$ServiceTags = Get-AzNetworkServiceTag -Location $Location
$BatchServiceTagName = "BatchNodeManagement." + $Location
$UdrRulePrefixForBatch = $BatchServiceTagName
if ($ServiceTags -ne $null)
{
    $BatchIPRanges = $ServiceTags.Values | Where-Object { $_.Name -ieq $BatchServiceTagName }
    if ($BatchIPRanges -ne $null)
    {
        Write-Host "Start to add rule for your route table..."
        for ($i = 0; $i -lt $BatchIPRanges.Properties.AddressPrefixes.Count; $i++)
        {
            $UdrRuleName = "$($UdrRulePrefixForBatch)_$($i)"
            Add-AzRouteConfig -Name $UdrRuleName `
                -AddressPrefix $BatchIPRanges.Properties.AddressPrefixes[$i] `
                -NextHopType "Internet" `
                -RouteTable $RouteTable `
                | Out-Null
            Write-Host "Add rule $UdrRuleName to your route table..."
        }
        Set-AzRouteTable -RouteTable $RouteTable
    }
}
else
{
    Write-Host "Failed to fetch service tags, please confirm that your Location is valid."
}

要使防火墙设备允许出站流量,需要根据 NSG 出站规则中的相同要求,允许向以下端口发送出站流量。

  • 目标为 Azure 云服务的端口 443。

    如果使用 Azure 防火墙,则可使用 AzureCloud 服务标记指定网络规则。 对于其他类型的防火墙,可以简单地将端口 443 的目标设置为“全部”,也可以根据 Azure 环境的类型允许以下 FQDN:

    Azure 环境 终结点
    Azure 中国世纪互联
    • Azure 数据工厂(管理)
      • *.frontend.datamovement.azure.cn
    • Azure 存储(管理)
      • *.blob.core.chinacloudapi.cn
      • *.table.core.chinacloudapi.cn
    • Azure 容器注册表(自定义设置)
      • *.azurecr.cn
    • 事件中心(日志记录)
      • *servicebus.chinacloudapi.cn
    • Microsoft 日志记录服务(内部使用)
      • mooncake.warmpath.chinacloudapi.cn
      • azurewatsonanalysis.chinacloudapp.cn

    至于 Azure 存储、Azure 容器注册表和事件中心的 FQDN,还可以选择为虚拟网络启用以下服务终结点,使发往这些终结点的网络流量通过 Azure 主干网络而不是路由到防火墙设备:

    • Microsoft.Storage
    • Microsoft.ContainerRegistry
    • Microsoft.EventHub
  • 目标为 CRL 下载站点的端口 80。

    应允许以下 FQDN,它们用作证书(用于 Azure-SSIS IR 管理目的)的 CRL(证书吊销列表)下载站点:

    • crl.microsoft.com:80
    • mscrl.microsoft.com:80
    • crl3.digicert.com:80
    • crl4.digicert.com:80
    • ocsp.digicert.com:80
    • cacerts.digicert.com:80

    如果使用的证书具有不同的 CRL,我们建议同时包含这些证书。 可以阅读证书吊销列表了解详细信息。

    如果禁止此流量,在启动 Azure-SSIS IR 时可能会出现性能下降,并且无法在证书吊销列表中检查证书的使用情况,从安全的立场讲,我们不建议将它禁止。

  • 目标为 Azure SQL 数据库的端口 1433 和端口范围 11000-11999(仅当虚拟网络中 Azure-SSIS IR 的节点访问服务器托管的 SSISDB 时,才需要此规则)。

    如果使用 Azure 防火墙,可以使用 Azure SQL 服务标记指定网络规则,否则,可以在防火墙设备中允许将特定的 Azure SQL URL 用作目标。

  • 目标为 Azure 存储的端口 445(仅当执行 Azure 文件存储中存储的 SSIS 包时,才需要此规则)。

    如果使用 Azure 防火墙,可以使用存储服务标记指定网络规则,否则,可以在防火墙设备中允许将特定的 Azure 文件存储 URL 用作目标。

备注

对于 Azure SQL 和存储,如果在子网中配置虚拟网络服务终结点,则同一区域中 Azure-SSIS IR 和 Azure SQL 与同一区域或配对区域中 Azure 存储之间的流量将直接路由到 Azure 主干网络,而不会路由到防火墙设备。

如果你不需要检查 Azure-SSIS IR 出站流量的功能,则可以直接应用路由,以强制所有流量路由到下一跃点类型“Internet”:

  • 在 Azure ExpressRoute 方案中,可以在承载 Azure-SSIS IR 的子网上应用下一跃点类型为“Internet”的 0.0.0.0/0 路由。
  • 在 NVA 方案中,可将承载 Azure-SSIS IR 的子网中应用的现有 0.0.0.0/0 路由的下一跃点类型从“虚拟设备”修改为“Internet”。

添加路由

备注

指定下一跃点类型为“Internet”的路由并不意味着流量将通过 Internet 传送。 只要目标地址用于 Azure 的某个服务,Azure 就会将流量通过 Azure 的主干网络直接路由到该服务,而不是将流量路由到 Internet。

设置资源组

Azure-SSIS IR 需要在与虚拟网络相同的资源组下创建某些网络资源。 这些资源包括:

  • Azure 负载均衡器,名为 <Guid>-azurebatch-cloudserviceloadbalancer。
  • Azure 公共 IP 地址,名为 <Guid>-azurebatch-cloudservicepublicip。
  • 网络工作安全组,名为 <Guid>-azurebatch-cloudservicenetworksecuritygroup。

备注

现在,可为 Azure-SSIS IR 提供自己的静态公共 IP 地址。 在此方案中,我们只会在与静态公共 IP 地址(而不是虚拟网络)相同的资源组下创建 Azure 负载均衡器和网络安全组。

当 Azure-SSIS IR 启动时,将创建这些资源。 当 Azure-SSIS IR 停止时,将删除这些资源。 如果为 Azure-SSIS IR 提供你自己的静态公共 IP 地址,则当 Azure-SSIS IR 停止时,系统不会删除你自己的静态公共 IP 地址。 为了避免阻止 Azure-SSIS IR 停止,请不要在其他资源中重复使用这些网络资源。

确保虚拟网络/静态公共 IP 地址所属的资源组/订阅中没有任何资源锁。 如果配置只读/删除锁,则启动和停止 Azure-SSIS IR 将会失败,或者它会停止响应。

确保没有任何 Azure Policy 分配阻止在虚拟网络/静态公共 IP 地址所属的资源组/订阅下创建以下资源:

  • Microsoft.Network/LoadBalancers
  • Microsoft.Network/NetworkSecurityGroups
  • Microsoft.Network/PublicIPAddresses

请确保订阅的资源配额满足上述三种网络资源。 具体而言,对于在虚拟网络中创建的每个 Azure-SSIS IR,需要为上述三个网络资源中的每个资源保留两个可用配额。 当我们定期升级你的 Azure-SSIS IR 时,将使用一个额外的配额。

常见问题解答

  • 如何保护用于入站连接的 Azure-SSIS IR 上公开的公共 IP 地址? 是否可以删除公共 IP 地址?

    目前,当 Azure-SSIS IR 加入虚拟网络时,会自动创建一个公共 IP 地址。 我们确实有一个 NIC 级别的 NSG,它只允许 Azure Batch 管理服务入站连接到 Azure-SSIS IR。 你也可以指定子网级别的 NSG 进行入站保护。

    如果你不希望公开任何公共 IP 地址,请考虑将自承载 IR 配置为 Azure-SSIS IR 的代理,而不是将 Azure-SSIS IR 加入虚拟网络(如果这适用于你的方案)。

  • 是否可将 Azure-SSIS IR 的公共 IP 地址添加到数据源的防火墙允许列表?

    现在,可为 Azure-SSIS IR 提供自己的静态公共 IP 地址。 在这种情况下,可将 IP 地址添加到数据源的防火墙允许列表。 还可以根据自己的情况,考虑使用以下其他选项来保护从 Azure-SSIS IR 进行的数据访问:

    • 如果数据源位于本地,在将虚拟网络连接到本地网络并将 Azure-SSIS IR 加入虚拟网络子网之后,可将该子网的专用 IP 地址范围添加到数据源的防火墙允许列表。
    • 如果数据源是支持虚拟网络服务终结点的 Azure 服务,则你可以在虚拟网络子网中配置一个虚拟网络服务终结点,并将 Azure-SSIS IR 加入该子网。 然后,可将包含该子网的虚拟网络规则添加到数据源的防火墙。
    • 如果数据源是非 Azure 云服务,则你可以使用 UDR 通过静态公共 IP 地址将来自 Azure-SSIS IR 的出站流量路由到 NVA/Azure 防火墙。 然后,可将 NVA/Azure 防火墙的静态公共 IP 地址添加到数据源的防火墙允许列表。
    • 如果上述选项都不能满足你的需求,请考虑将自承载 IR 配置为 Azure-SSIS IR 的代理。 然后,可将托管自承载 IR 的计算机的静态公共 IP 地址添加到数据源的防火墙允许列表中。
  • 如果我要为 Azure-SSIS IR 提供静态公共地址,为何需要提供两个?

    Azure-SSIS IR 将定期自动更新。 升级期间将创建新节点,而旧节点将被删除。 但是,为了避免停机,只有在新节点准备就绪之后才会删除旧节点。 因此,旧节点使用的第一个静态公共 IP 地址无法立即释放,我们需要第二个静态公共 IP 地址来创建新节点。

  • 我已经为 Azure-SSIS IR 提供了自己的静态公共 IP 地址,但为何它仍然无法访问我的数据源?

    • 确认两个静态公共 IP 地址都已添加到数据源的防火墙允许列表。 每次升级 Azure-SSIS IR 时,其静态公共 IP 地址将在提供的两个地址之间切换。 如果只将其中的一个地址添加到允许列表,则升级后,Azure-SSIS IR 的数据访问将会中断。
    • 如果数据源是 Azure 服务,请检查是否已为它配置虚拟网络服务终结点。 如果已配置,则从 Azure-SSIS IR 发往数据源的流量将切换为使用 Azure 服务管理的专用 IP 地址,并且在将你自己的静态公共 IP 地址添加到数据源的防火墙允许列表后,这些地址不会生效。

Azure 门户(数据工厂 UI)

本部分介绍如何使用 Azure 门户和数据工厂 UI 如何将现有的 Azure SSIS IR 加入虚拟网络(经典或 Azure 资源管理器)。

在将 Azure-SSIS IR 加入虚拟网络之前,需要正确配置虚拟网络。 请遵循适用于你的虚拟网络类型(经典或 Azure 资源管理器)的部分中的步骤操作。 然后,遵循第三部分中的步骤将 Azure SSIS IR 加入虚拟网络。

配置 Azure 资源管理器虚拟网络

使用门户配置一个 Azure 资源管理器虚拟网络,然后尝试将 Azure-SSIS IR 加入其中。

  1. 启动 Microsoft Edge 或 Google Chrome。 目前只有这些 Web 浏览器支持数据工厂 UI。

  2. 登录到 Azure 门户

  3. 选择“更多服务”。 筛选并选择“虚拟网络”。

  4. 在列表中筛选并选择自己的虚拟网络。

  5. 在“虚拟网络”页中选择“属性”。

  6. 选择“资源 ID”对应的复制按钮,将虚拟网络的资源 ID 复制到剪贴板。 将剪贴板中的 ID 保存到 OneNote 或某个文件中。

  7. 在左侧菜单中选择“子网”。 确保可用地址数大于 Azure-SSIS IR 中的节点数。

  8. 验证是否已将 Azure Batch 提供程序注册到包含虚拟网络的 Azure 订阅中。 或者注册 Azure Batch 提供程序。 如果订阅中已包含 Azure Batch 帐户,则已经为 Azure Batch 注册了订阅。 (如果在数据工厂门户中创建 Azure-SSIS IR,将自动注册 Azure Batch 提供程序。)

    1. 在 Azure 门户的左侧菜单中选择“订阅”。

    2. 选择订阅。

    3. 在左侧选择“资源提供程序”,确认 Microsoft.Batch 是注册的提供程序。

    确认“已注册”状态

    如果列表中未出现 Microsoft.Batch,若要注册该提供程序,请在订阅中 创建一个空的 Azure Batch 帐户。 稍后可以删除该帐户。

配置经典虚拟网络

使用门户配置一个经典虚拟网络,然后尝试将 Azure-SSIS IR 加入其中。

  1. 启动 Microsoft Edge 或 Google Chrome。 目前只有这些 Web 浏览器支持数据工厂 UI。

  2. 登录到 Azure 门户

  3. 选择“更多服务”。 筛选并选择“虚拟网络(经典)”。

  4. 在列表中筛选并选择自己的虚拟网络。

  5. 在“虚拟网络(经典)”页中选择“属性”。

    经典虚拟网络资源 ID

  6. 选择“资源 ID”对应的复制按钮,将经典网络的资源 ID 复制到剪贴板。 将剪贴板中的 ID 保存到 OneNote 或某个文件中。

  7. 在左侧菜单中选择“子网”。 确保可用地址数大于 Azure-SSIS IR 中的节点数。

    虚拟网络中的可用地址数

  8. MicrosoftAzureBatch 加入虚拟网络的“经典虚拟机参与者”角色。

    1. 在左侧菜单中选择“访问控制(IAM)”,然后选择“角色分配”选项卡。

      “访问控制”和“添加”按钮

    2. 选择“添加角色分配”。

    3. 在“添加角色分配”页中,为“角色”选择“经典虚拟机参与者”。 在“选择”框中粘贴 ddbf3205-c6bd-46ae-8127-60eb93363864,然后从搜索结果列表中选择“Microsoft Azure Batch”。

      在“添加角色分配”页上搜索结果

    4. 选择“保存”以保存设置并关闭页面。

      保存访问设置

    5. 确认参与者列表中出现了“Microsoft Azure Batch”。

      确认 Azure Batch 访问权限

  9. 验证是否已将 Azure Batch 提供程序注册到包含虚拟网络的 Azure 订阅中。 或者注册 Azure Batch 提供程序。 如果订阅中已包含 Azure Batch 帐户,则已经为 Azure Batch 注册了订阅。 (如果在数据工厂门户中创建 Azure-SSIS IR,将自动注册 Azure Batch 提供程序。)

    1. 在 Azure 门户的左侧菜单中选择“订阅”。

    2. 选择订阅。

    3. 在左侧选择“资源提供程序”,确认 Microsoft.Batch 是注册的提供程序。

    确认“已注册”状态

    如果列表中未出现 Microsoft.Batch,若要注册该提供程序,请在订阅中 创建一个空的 Azure Batch 帐户。 稍后可以删除该帐户。

将 Azure-SSIS IR 加入虚拟网络

配置 Azure 资源管理器虚拟网络或经典虚拟网络后,可将 Azure-SSIS IR 加入该虚拟网络:

  1. 启动 Microsoft Edge 或 Google Chrome。 目前只有这些 Web 浏览器支持数据工厂 UI。

  2. Azure 门户的左侧菜单中选择“数据工厂”。 如果菜单中未显示“数据工厂”,请选择“更多服务”,然后在“智能 + 分析”部分选择“数据工厂”。

    数据工厂列表

  3. 在列表中选择包含 Azure-SSIS IR 的数据工厂。 随后会显示该数据工厂的主页。 选择“创作和监视”磁贴。 单独的选项卡中会显示数据工厂 UI。

    数据工厂主页

  4. 在数据工厂 UI 中切换到“编辑”选项卡,选择“连接”,然后切换到“集成运行时”选项卡。

    “集成运行时”选项卡

  5. 如果 Azure SSIS IR 正在运行,请在“集成运行时”列表中的“操作”列内,选择 Azure SSIS IR 对应的“停止”按钮。 只有在停止 Azure-SSIS IR 之后才能对其进行编辑。

    停止 IR

  6. 在“集成运行时”列表中的“操作”列内,选择 Azure SSIS IR 对应的“编辑”按钮。

    编辑集成运行时

  7. 在集成运行时设置面板上,选择“下一步”按钮进入“常规设置”和“SQL 设置”部分。

  8. 在“高级设置”部分:

    1. 选中“选择 Azure-SSIS Integration Runtime 要加入的 VNet,允许 ADF 创建特定网络资源,或者选择引入自己的静态公共 IP 地址”复选框。

    2. 对于“订阅”,请选择包含你的虚拟网络的 Azure 订阅。

    3. 对于“位置”,系统已选择集成运行时所在的位置。

    4. 对于“类型”,请选择虚拟网络的类型:“经典”或“Azure 资源管理器”。 我们建议选择 Azure 资源管理器虚拟网络,因为经典虚拟网络在不久后将被弃用。

    5. 对于“VNet 名称”,请选择虚拟网络的名称。 它应该与具有虚拟网络服务终结点的 SQL 数据库或具有专用终结点的 SQL 托管实例托管 SSISDB 所用的虚拟网络相同。 或者,它应该是连接到本地网络的同一个虚拟网络。 否则,它可以是为 Azure-SSIS IR 提供你自己的静态公共 IP 地址的任何虚拟网络。

    6. 对于“子网名称”,请选择虚拟网络的子网名称。 它应该与使用虚拟网络服务终结点来托管 SSISDB 的 SQL 数据库所用的相同。 或者,它应该与具有专用终结点的 SQL 托管实例托管 SSISDB 所用的子网不同。 否则,它可以是为 Azure-SSIS IR 提供你自己的静态公共 IP 地址的任何子网。

    7. 选中“为 Azure-SSIS Integration Runtime 提供静态公共 IP 地址”复选框,以选择是否要为 Azure-SSIS IR 提供自己的静态公共 IP 地址,以便可以在数据源的防火墙中允许这些地址。

      如果选中该复选框,请完成以下步骤。

      1. 对于“第一个静态公共 IP 地址”,请选择符合 Azure-SSIS IR 的要求的第一个静态公共 IP 地址。 如果没有任何符合要求的 IP 地址,请单击“新建”链接以在 Azure 门户中创建静态公共 IP 地址,然后单击此处的刷新按钮,以便可以选择创建的地址。

      2. 对于“第二个静态公共 IP 地址”,请选择符合 Azure-SSIS IR 的要求的第二个静态公共 IP 地址。 如果没有任何符合要求的 IP 地址,请单击“新建”链接以在 Azure 门户中创建静态公共 IP 地址,然后单击此处的刷新按钮,以便可以选择创建的地址。

    8. 选择“VNet 验证”。 如果验证成功,请选择“继续”。

    使用虚拟网络的高级设置

  9. 在“摘要”部分,复查 Azure-SSIS IR 的所有设置。 然后选择“更新”。

  10. 在 Azure-SSIS IR 的“操作”列中选择“启动”按钮以启动 Azure-SSIS IR。 启动要加入虚拟网络的 Azure-SSIS IR 需要花费大约 20 到 30 分钟。

Azure PowerShell

备注

本文已经过更新,以便使用 Azure Az PowerShell 模块。 若要与 Azure 交互,建议使用的 PowerShell 模块是 Az PowerShell 模块。 若要开始使用 Az PowerShell 模块,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

定义变量

$ResourceGroupName = "[your Azure resource group name]"
$DataFactoryName = "[your data factory name]"
$AzureSSISName = "[your Azure-SSIS IR name]"
# Virtual network info: Classic or Azure Resource Manager
$VnetId = "[your virtual network resource ID or leave it empty]" # REQUIRED if you use SQL Database with IP firewall rules/virtual network service endpoints or SQL Managed Instance with private endpoint to host SSISDB, or if you require access to on-premises data without configuring a self-hosted IR. We recommend an Azure Resource Manager virtual network, because classic virtual networks will be deprecated soon.
$SubnetName = "[your subnet name or leave it empty]" # WARNING: Use the same subnet as the one used for SQL Database with virtual network service endpoints, or a different subnet from the one used for SQL Managed Instance with a private endpoint
# Public IP address info: OPTIONAL to provide two standard static public IP addresses with DNS name under the same subscription and in the same region as your virtual network
$FirstPublicIP = "[your first public IP address resource ID or leave it empty]"
$SecondPublicIP = "[your second public IP address resource ID or leave it empty]"

配置虚拟网络

在将 Azure-SSIS IR 加入虚拟网络之前,需要先配置该虚拟网络。 若要自动配置需加入虚拟网络的 Azure-SSIS IR 的权限和设置,请添加以下脚本:

# Make sure to run this script against the subscription to which the virtual network belongs.
if(![string]::IsNullOrEmpty($VnetId) -and ![string]::IsNullOrEmpty($SubnetName))
{
    # Register to the Azure Batch resource provider
    $BatchApplicationId = "ddbf3205-c6bd-46ae-8127-60eb93363864"
    $BatchObjectId = (Get-AzADServicePrincipal -ServicePrincipalName $BatchApplicationId).Id
    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    while(!(Get-AzResourceProvider -ProviderNamespace "Microsoft.Batch").RegistrationState.Contains("Registered"))
    {
    Start-Sleep -s 10
    }
    if($VnetId -match "/providers/Microsoft.ClassicNetwork/")
    {
        # Assign the VM contributor role to Microsoft.Batch
        New-AzRoleAssignment -ObjectId $BatchObjectId -RoleDefinitionName "Classic Virtual Machine Contributor" -Scope $VnetId
    }
}

创建 Azure-SSIS IR 并将其加入虚拟网络

可以创建 Azure-SSIS IR,并将其加入虚拟网络。 有关完整的脚本和说明,请参阅创建 Azure-SSIS IR

将现有 Azure-SSIS IR 加入虚拟网络

创建 Azure-SSIS IR 一文介绍了如何在同一个脚本中创建 Azure-SSIS IR 并将其加入虚拟网络。 如果你已有一个 Azure-SSIS IR,请执行以下步骤将其加入虚拟网络:

  1. 停止 Azure-SSIS IR。
  2. 将 Azure-SSIS IR 配置为加入虚拟网络。
  3. 启动 Azure-SSIS IR。

停止 Azure-SSIS IR

必须先停止 Azure-SSIS IR,然后才能将它加入虚拟网络。 此命令释放该运行时的所有节点并停止计费:

Stop-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName `
    -DataFactoryName $DataFactoryName `
    -Name $AzureSSISName `
    -Force 

为要加入的 Azure-SSIS IR 配置虚拟网络设置

若要配置 Azure-SSIS 要加入到的虚拟网络的设置,请使用此脚本:

# Make sure to run this script against the subscription to which the virtual network belongs.
if(![string]::IsNullOrEmpty($VnetId) -and ![string]::IsNullOrEmpty($SubnetName))
{
    # Register to the Azure Batch resource provider
    $BatchApplicationId = "ddbf3205-c6bd-46ae-8127-60eb93363864"
    $BatchObjectId = (Get-AzADServicePrincipal -ServicePrincipalName $BatchApplicationId).Id
    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    while(!(Get-AzResourceProvider -ProviderNamespace "Microsoft.Batch").RegistrationState.Contains("Registered"))
    {
        Start-Sleep -s 10
    }
    if($VnetId -match "/providers/Microsoft.ClassicNetwork/")
    {
        # Assign VM contributor role to Microsoft.Batch
        New-AzRoleAssignment -ObjectId $BatchObjectId -RoleDefinitionName "Classic Virtual Machine Contributor" -Scope $VnetId
    }
}

配置 Azure-SSIS IR

若将 Azure-SSIS IR 加入虚拟网络,请运行 Set-AzDataFactoryV2IntegrationRuntime 命令:

Set-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName `
    -DataFactoryName $DataFactoryName `
    -Name $AzureSSISName `
    -VnetId $VnetId `
    -Subnet $SubnetName

# Add public IP address parameters if you bring your own static public IP addresses
if(![string]::IsNullOrEmpty($FirstPublicIP) -and ![string]::IsNullOrEmpty($SecondPublicIP))
{
    $publicIPs = @($FirstPublicIP, $SecondPublicIP)
    Set-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName `
        -DataFactoryName $DataFactoryName `
        -Name $AzureSSISName `
        -PublicIPs $publicIPs
}

启动 Azure-SSIS IR

若要启动 Azure-SSIS IR,请运行以下命令:

Start-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName `
    -DataFactoryName $DataFactoryName `
    -Name $AzureSSISName `
    -Force

此命令需要 20 到 30 分钟才能完成。

后续步骤

有关 Azure-SSIS IR 的详细信息,请参阅以下文章:

  • Azure-SSIS IR。 此文提供有关 IR(包括 Azure-SSIS IR)的一般概念性信息。
  • 教程:将 SSIS 包部署到 Azure 中的分步说明创建一个。 此教程提供有关创建 Azure-SSIS IR 的分步说明。 它使用 Azure SQL 数据库来托管 SSIS 目录。
  • 创建 Azure-SSIS IR。 此文对本教程的内容做了扩充。 其中说明了如何使用具有虚拟网络服务终结点的 Azure SQL 数据库或虚拟网络中的 SQL 托管实例来托管 SSIS 目录。 此外,它介绍了如何将 Azure-SSIS IR 加入虚拟网络。
  • 监视 Azure-SSIS IR。 此文介绍如何获取有关 Azure-SSIS IR 的信息。 其中提供了返回的信息的状态说明。
  • 管理 Azure-SSIS IR。 此文介绍如何停止、启动或删除 Azure-SSIS IR。 此外,介绍如何通过添加节点来扩展 Azure-SSIS IR。