使用 Azure 扩展网络将本地子网扩展到 Azure

使用 Azure 扩展网络可将本地子网延伸到 Azure,使本地虚拟机在迁移到 Azure 时保留其原始的本地专用 IP 地址。

网络是使用两个充当虚拟设备的 Windows Server 2019 VM 之间的双向 VXLAN 隧道扩展的,其中一个 VM 在本地运行,另一个在 Azure 中运行,两者也都已连接到要扩展的子网。 要扩展的每个子网都需要一对设备。 可以使用多个对来扩展多个子网。

注意

Azure 的扩展网络应仅用于迁移到 Azure 时无法更改其 IP 地址的计算机。 如果这是一个选项,最好更改 IP 地址并将其连接到 Azure 中完全存在的子网。

重要

Azure 扩展网络扩展(msft.sme.subnet-stretch)当前在 Windows Admin Center 版本 2410 中的扩展源上不可用。

规划

若要为使用 Azure 扩展网络做好准备,必须确定要延伸哪个子网,然后执行以下步骤:

容量计划

可以使用 Azure 扩展网络最多扩展 250 个 IP 地址。 聚合吞吐量预期大约为 700 Mbps,具体吞吐量根据 Azure 扩展网络虚拟设备的 CPU 速度会出现一定的变化。

Azure 中的配置

在使用 Windows Admin Center 之前,必须通过 Azure 门户执行以下步骤:

  1. 在 Azure 中创建一个虚拟网络,其中至少包含两个子网,加上建立网关连接所需的子网。 创建的子网之一必须使用与要扩展的本地子网相同的子网 CIDR。 子网在路由域中必须是唯一的,因此它不会与任何本地子网重叠。

  2. 配置虚拟网络网关,以使用站点到站点或 ExpressRoute 连接将虚拟网络连接到本地网络。

  3. 在 Azure 中创建一个能够运行嵌套虚拟化的 Windows Server 2022 Azure Edition VM。 此 VM 是两个虚拟设备中的一个。 将主要网络接口连接到可路由的子网,将第二个网络接口连接到扩展的子网。

注意

Azure 扩展网络要求为 Azure 中运行的 VM 安装 Windows Server 2022 Azure Edition。

  1. 启动 VM,启用 Hyper-V 角色,然后重启。 例如:

    Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
    
  2. 在 VM 中创建两个外部虚拟交换机,并将其中一个连接到每个网络接口。 例如:

    New-VMSwitch -Name "External" -AllowManagementOS $true -NetAdapterName "Ethernet"
    New-VMSwitch -Name "Extended" -AllowManagementOS $true -NetAdapterName "Ethernet 2"
    

本地配置

还必须在本地基础结构中执行一些手动配置,包括创建一个 VM 来充当本地虚拟设备:

  1. 请确保在将要部署本地虚拟机(VM,虚拟设备)的物理计算机上,子网是可用的。 这包括要扩展的子网,以及另一个唯一的、不与 Azure 虚拟网络中的任何子网重叠的子网。

  2. 在支持嵌套虚拟化的任何虚拟机监控程序上创建 Windows Server 2019 或 2022 VM。 此虚拟机是本地虚拟设备。 建议将此虚拟机创建为群集中的高可用性虚拟机。 将一个虚拟网络适配器连接到可路由的子网,并将另一个虚拟网络适配器连接到扩展的子网。

  3. 启动虚拟机,然后从虚拟机中的 PowerShell 会话运行以下命令,以启用 Hyper-V 角色,然后重启虚拟机:

    Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
    
  4. 在 VM 上的 PowerShell 会话中运行以下命令以在 VM 中创建两个外部虚拟交换机,并将其中一个连接到每个网络接口:

    New-VMSwitch -Name "External" -AllowManagementOS $true -NetAdapterName "Ethernet"
    New-VMSwitch -Name "Extended" -AllowManagementOS $true -NetAdapterName "Ethernet 2"
    

其他先决条件

如果本地网络和 Azure 之间有防火墙,必须将防火墙配置为允许非对称路由。 此过程可能包括禁用序列号随机化和启用 TCP 状态绕过的步骤。 有关具体的步骤,请参阅防火墙供应商文档。

部署

部署是通过 Windows Admin Center 驱动的。

安装并配置 Windows Admin Center

  1. 下载 Windows Admin Center 并将其安装到任何能够运行 Windows Admin Center 的计算机(前面创建的两个虚拟设备除外)。

  2. 在 Windows Admin Center 中,选择“设置”(页面右上角)“扩展”。 然后选择“扩展”:

    显示“设置”的“可用扩展”选项卡的屏幕截图

  3. 在“可用扩展”选项卡上,依次选择“扩展网络”、“安装”。

    几秒钟后,应会看到一条消息,指示安装成功。

  4. 将 Windows Admin Center 连接到 Azure。 此步骤是执行此扩展中操作的必备条件。

  5. 在 Windows Admin Center 中,转到“所有连接”“添加”,然后在“Windows Server”磁贴中选择“添加”。 输入本地虚拟设备的服务器名称(如有必要,还需输入凭据)。

    Windows Admin Center 的屏幕截图,其中显示了本地虚拟设备上服务器管理器中的扩展网络工具

  6. 单击“扩展网络”开始操作。 首次打开时,会显示概述和设置按钮:

    映像

部署 Azure 扩展网络

  1. 单击“设置”开始配置。

  2. 单击“下一步”,直到浏览完概述。

  3. “上传包 ”面板中,需要下载 Azure 代理包的扩展网络并将其上传到虚拟设备。 按照面板中的说明操作。

    重要

    根据需要向下滚动并单击“上传”,然后单击“下一步: 扩展网络设置”。

  4. 选择要扩展的本地网络的子网 CIDR。 子网列表是从虚拟设备读入的。 如果虚拟设备未连接到正确的子网集,则所需的子网 CIDR 将不会显示在此列表中。

  5. 选择子网 CIDR 后,单击“下一步”。

  6. 选择要扩展到的订阅、资源组和虚拟网络:

    Azure 网络

    系统会自动选择区域(Azure 位置)和子网。 选择“下一步: 扩展网络网关设置”以继续。

  7. 配置虚拟设备。 系统应会自动填充本地网关的信息:

    本地网络网关

    如果信息正确,可单击“下一步”。

  8. 对于 Azure 虚拟设备,请选择要使用的资源组和 VM:

    Azure 网络网关

注意

Azure 虚拟设备的 VM 列表仅显示包含 Windows Server 2022 Azure Edition 的 Azure VM。 如果未在列表中看到 VM,请确保它是 Azure 版本,如果不是,请重新创建它。

  1. 选择 VM 后,选择 Azure Extended-Network 网关子网 CIDR。 然后单击“下一步: 部署”。

  2. 查看摘要信息,然后单击“部署”开始部署过程。 部署大约需要 5-10 分钟。 部署完成后,将显示以下用于管理扩展 IP 地址的面板,状态应显示 “确定”:

    安装完成

管理

需要配置要跨扩展网络访问的每个 IP 地址。 最多可以配置 250 个要扩展的地址。 扩展地址

  1. 单击“添加 IPv4 地址”:

    添加 ipv4 地址

  2. 右侧会显示 “添加新 IPv4 地址 ”浮出控件:

    添加 ipv4 地址面板

  3. 使用“添加”按钮手动添加地址。 添加在本地的地址可以被添加到 Azure 地址列表中的 Azure 地址访问,反之亦然。

  4. Azure 扩展网络将扫描网络以发现 IP 地址,并根据扫描结果填充“建议”列表。 若要扩展这些地址,必须使用下拉列表并选中已发现的地址旁边的复选框。 并非所有地址都可以发现。 (可选)使用“添加”按钮手动添加未自动发现的地址。

    添加 ipv4 地址面板和信息

  5. 完成后,单击“提交”。 状态将更改为“正在更新”,然后为“正在进行”,最终在配置完成后返回“确定”

    地址现已扩展。 随时可以使用“添加 IPv4 地址”按钮添加更多地址。 如果扩展网络的任何一端不再使用某个 IP 地址,请选中该地址旁边的复选框,然后选择“删除 IPv4 地址”。

如果你不再想要使用 Azure 扩展网络,请单击“删除 Azure 扩展网络”按钮。 这会从两个虚拟设备中卸载代理,并删除扩展 IP 地址。 网络不再被扩展。 如果要再次开始使用扩展网络,则必须在删除安装程序后重新运行安装程序。

故障排除

如果在部署 Azure 扩展网络期间收到错误,请使用以下步骤:

  1. 验证本地虚拟设备是否使用 Windows Server 2019 或 2022。 确认 Azure 虚拟设备使用 Windows Server 2022 Azure Edition。

  2. 确认未在其中一个虚拟设备上运行 Windows Admin Center。 建议从本地网络运行 Windows Admin Center。

  3. 确保可以使用 enter-pssession 从 Windows Admin Center 网关远程连接到本地 VM。

  4. 如果 Azure 与本地之间存在防火墙,请确认它配置为允许所选端口上的 UDP 流量(默认为 4789)。 使用 ctsTraffic 之类的工具配置侦听器和发送器。 确认可以通过指定的端口双向发送流量。

  5. 使用 pktmon 验证是否可按预期发送和接收数据包。 在每个虚拟设备上运行 pktmon:

    Pktmon start –etw
    
  6. 运行 Azure 扩展网络配置,然后停止跟踪:

    Pktmon stop
    Netsh trace convert input=<path to pktmon etl file>
    
  7. 打开从每个虚拟设备生成的文本文件,并搜索指定端口(默认为 4789)上的 UDP 流量。 如果你看到了从本地虚拟设备发送的流量,但 Azure 虚拟设备未收到这些流量,则你需要验证设备之间的路由和防火墙。 如果你看到了从本地发送到 Azure 的流量,则应会看到 Azure 虚拟设备发送一个数据包作为响应。 如果本地虚拟设备从未收到该数据包,则需要验证路由是否正确,并且之间没有阻止流量的防火墙。

在完成初始配置后诊断数据路径

配置 Azure 扩展网络后,你可能遇到的其他问题通常是由于防火墙阻止了流量,或者超过了 MTU(如果故障是间歇性的)所引起的。

  1. 确认两个虚拟设备都已启动并正在运行。

  2. 确认扩展网络代理在每个虚拟设备上运行:

    get-service extnwagent
    
  3. 如果状态未运行,则可以使用以下方法启动它:

    start-service extnwagent
    
  4. 当流量在扩展网络上的两个 VM 之间发送时,按照上面步骤 5 中所述,使用 packetmon 验证流量是否已由虚拟设备接收,通过配置的 UDP 端口发出,然后由另一个虚拟设备接收和转发。