使用 PowerShell 在 Azure 本地上启用 SDN 集成

本文介绍如何在现有 Azure 本地实例上启用和集成软件定义的网络(SDN)。 使用 PowerShell 操作计划启用 SDN。

关于 Azure Local 中的 SDN 集成

对于通过 Arc 启用的 SDN,网络控制器(NC)被部署为故障转移群集服务,并由编排器(也称为生命周期管理器)进行管理。 运行将 NC 集成到 Azure 本地平台中的协调器命令。

集成 NC 后,将启用 SDN。 可以使用 Azure 门户、Azure CLI 或 Azure 资源管理器模板创建和管理以下 SDN 功能:

  • 逻辑网络:可以创建投影物理网络的 SDN 静态逻辑网络。 有关详细信息,请参阅 创建逻辑网络

  • 网络接口:可以创建网络接口并将其附加到虚拟机,并从逻辑网络分配 IP 地址。 有关详细信息,请参阅 “创建网络接口”。

  • 网络安全组(NSG):可以创建 NSG 并将其应用于网络接口或逻辑网络以筛选网络流量。 还可以创建默认网络访问策略和网络安全规则,以允许或拒绝进出网络接口和逻辑网络的流量。

    有关详细信息,请参阅 “创建网络安全组 ”和“ 创建网络安全规则”。

关于 Azure 本地上的网络控制器体系结构

NC 是一个关键组件,用于管理和配置 Azure 本地实例上的虚拟网络基础结构。 NC 现在使用故障转移群集与主机集成,而不是托管在 VM 中。 NC 负责管理虚拟交换机、逻辑网络和网络接口。 它还提供 REST API,用于以编程方式访问网络基础结构。

这是一个架构图,展示了在由 Arc 启用的 SDN 上运行的 2 节点 Azure 本地实例中的网络控制器。

连接到逻辑网络的网络安全组的概念图屏幕截图。

在此示例中,网络拓扑包括两台 Azure 本地计算机,这些计算机与两个机架顶部(ToR)交换机一起群集。 网络控制器组件及其服务被设置为实例中所有 Azure Local 计算机上的故障转移群集组。 每个网络控制器微服务都作为故障转移群集资源组高度可用。

  1. Azure Local 实例上的 MGMT VLAN 负责配置和部署从 NC 到 NC 主机代理的网络策略。
  2. NC 主机代理会接收策略并将其配置到您的虚拟交换机。
  3. 租户 VM 驻留在 NC 管理的逻辑网络上。 来自这些 VM 的所有流量都通过启用了虚拟筛选平台(VFP)的虚拟交换机进行路由。

Arc 启用的 SDN 注意事项

重要

  • 一旦启用 SDN,就无法回滚或禁用。
  • 如果已在使用本地工具部署的 Azure 本地群集上运行网络控制器,则不得尝试运行此方法。
  • 此功能中可使用 NSG 的唯一 VM 是 Azure Local VM。 这些 VM 是从 Azure 客户端接口(Azure CLI、Azure 门户、Azure 资源管理器)部署的 VM。 不要将 Azure 本地 VM 与从本地工具管理和应用的 NSG 结合使用。

对于现有的 Azure 本地实例:

  • 支持使用现有 Azure 本地 VM 和逻辑网络启用 SDN。
    • 逻辑网络和网络接口会自动加载到网络控制器中。
    • 如果在生产环境中运行,请确保规划维护时段。 应用 SDN Azure 虚拟筛选平台策略时,工作负荷遇到短暂的网络中断。

先决条件

  • 有权访问运行 2506 及更高版本的 Azure 本地实例。 OS 版本必须是 26100.xxxx 或更高版本。 通过 Azure 门户或 PowerShell 检查 OS 版本:

    • 在 Azure 门户中,转到 Azure 本地实例并选择“ 概述”。 OS 版本显示在“实例详细信息”部分中。

    • 连接到 Azure 本地实例上的计算机,并运行以下 PowerShell 命令来验证 OS 版本:

      systeminfo.exe
      

      下面是示例输出:

      [v-host1]: PS C:\DeploymentUser> systeminfo.exe
      
      Host Name:                     V-HOST1
      OS Name:                       Microsoft Azure Stack HCI
      OS Version:                    10.0.26100 N/A Build 26100
      OS Manufacturer:               Microsoft Corporation
      OS Configuration:              Member Server
      OS Build Type:                 Multiprocessor Free
      ====SNIPPED========SNIPPED========SNIPPED========SNIPPED====
                                     Security Features Enabled:
      Hyper-V Requirements:          A hypervisor has been detected. Features required for Hyper-V will not be displayed.
      
      • 验证输出中的 OS Version 是否为 10.0.26100
  • 可以使用 Azure Stack HCI 管理员角色访问 Azure 本地实例的节点。 要运行 cmdlet,需要具备此角色。

  • 有权访问用于连接到 Azure 本地实例的客户端。

  • 可以使用 Azure Stack HCI 管理员基于角色的访问控制 (RBAC) 角色访问 Azure 订阅。 此角色授予对 Azure 本地实例及其资源的完全访问权限。

    Azure Stack HCI 管理员可以注册 Azure 本地实例,并将 Azure Stack HCI VM 参与者和 Azure Stack HCI VM 读取者角色分配给其他用户。 有关详细信息,请参阅 使用基于角色的访问控制来管理 Azure Arc 启用的 Azure 本地 VM

选择 SDN 前缀

启用 SDN 时,需要提供 SDN 前缀。 确保 SDN 前缀满足以下要求:

  • 不能为 null 或空。
  • 字符必须为 8 或更少。
  • 必须仅包含小写字母、大写字母和数字字符。
  • 可以包含连字符,但不能包含两个连续连字符或以连字符结尾。

如果前缀不符合这些要求,SDN 启用会失败。

准备 DNS 环境

在启用 SDN 之前准备 DNS 环境。 SDN 集成需要为网络控制器 REST URL 创建一个 DNS 记录,该记录用于访问网络控制器 REST API。

  • 静态 DNS 环境:为网络控制器 REST URL 预创建 DNS 记录。 有关详细信息,请参阅 预创建 DNS 记录

    • DNS 记录的名称派生自 SDN 前缀。 A DNS 记录必须是 <SDNPrefix>-NC
    • DNS 记录必须解析为保留 IP。
  • 动态 DNS 环境:如果你有 Active Directory 集成的动态 DNS 环境,则无需执行任何作。 该行动计划会自动创建 A DNS 记录。

    如果未为动态 DNS 环境启用更新,可以选择为注册网络控制器 REST URL 的 DNS 区域启用动态 DNS 更新。

    1. 在 DNS 服务器上,打开“DNS 管理器”控制台。
    2. 在左侧窗格中选择“正向查找区域”。
    3. 右键单击托管网络控制器名称记录的区域,然后选择“属性”
    4. 在“常规”选项卡上的“动态更新”旁边,选择“仅限安全更新” 。

    有关详细信息,请参阅 在 DNS 区域中启用动态 DNS 更新

查看 cmdlet 参数

SDN 启用 cmdlet 使用以下参数:

参数 DESCRIPTION
名称 NC 形式传递名称。 不允许其他用户输入。
SDNPrefix 此参数用于指定网络控制器的 REST URL,以区分 Azure 本地实例中的网络控制器。 例如,<SDNPrefix>https://<SDNPrefix>-NC.domainname/ 作为 Azure 本地实例的 NC REST URL。

确保 SDN 前缀满足 “选择 SDN 前缀”中包含的要求。

运行 cmdlet 以启用 SDN

重要

如果在生产环境中运行,请确保规划维护时段。

按照以下步骤在 Azure 本地实例上启用 SDN:

  1. 验证是否已使用 Azure Stack HCI 管理员角色连接到 Azure Local 实例的节点

  2. 运行 cmdlet 以将网络控制器部署为故障转移群集服务。 打开 PowerShell 命令提示符并运行以下命令。

    #Run the LCM action plan to install Network Controller as Failover Cluster Service. Replace <SDNPrefix> with your SDN prefix.
    
    Add-EceFeature -Name NC -SDNPrefix <SDNPrefix>
    

    在请求确认时继续提供确认。

    小窍门

    若要跳过确认提示以确认维护时段,请使用 -AcknowledgeMaintenanceWindow 参数,然后使用 -AcknowledgeDNSRecordCreation 该参数确认你已准备好 DNS 环境(如果未使用动态 DNS)。

    此步骤最多可能需要 20 分钟。

  3. 验证是否已成功将网络控制器添加到实例。 添加网络控制器后,该 Add-EceFeature 命令会显示行动计划结果。

    展开此部分以查看示例输出。
    VERBOSE: Adding ECE feature NC; transcript started at C:\MASLogs\Add-EceFeature.2025-04-17.20-52-14
    Disclaimer: Network Controller installation will cause network connectivity interruptions. Before proceeding with the NC enablement operation, please ensure a maintenance window is properly arranged for running on a production environment.
    Proceeding? [Yes/NO] : Yes
    Start                  End                    Duration    Type   Status  Name                                                                                         
    -----                  ---                    --------    ----   ------  ----                                                                                         
    03/11/2025 10:29:52 PM 03/11/2025 10:31:13 PM 00.00:01:20 Action Success └─(A)CleanNCSecret                                                                           
    03/11/2025 10:29:52 PM 03/11/2025 10:31:13 PM 00.00:01:20 Step   Success   └─(S)1 Parallel per-node operation top step   
    
    ==========SNIPPED======SNIPPED==========SNIPPED=========SNIPPED========
    
    03/11/2025 10:29:52 PM 03/11/2025 10:31:12 PM 00.00:01:20 Step   Success         └─(S)1.1 Clean up NC secrets                                                         
    03/11/2025 10:29:52 PM 03/11/2025 10:31:12 PM 00.00:01:20 Task   Success           └─(T)[RemoteNode=Machine2>] Role=Cloud\Fabric\NC Interface=CleanNCRestSecret  
    
    InstanceID     : <Instance1 ID>
    ActionTypeName : CleanNCSecret
    Status         : Completed
    StartDateTime  : 3/11/2025 10:29:51 PM
    EndDateTime    : 3/11/2025 10:31:18 PM
    
    Start                  End                    Duration    Type   Status  Name                                                                                    
    -----                  ---                    --------    ----   ------  ----                                                                                    
    03/11/2025 10:31:52 PM 03/11/2025 10:31:57 PM 00.00:00:04 Action Success └─(A)GenerateCertificates                                                               
    03/11/2025 10:31:52 PM 03/11/2025 10:31:57 PM 00.00:00:04 Step   Success   └─(S)1 Generate NC Rest certificate                                                   
    03/11/2025 10:31:52 PM 03/11/2025 10:31:57 PM 00.00:00:04 Task   Success     └─(T)Role=Cloud\Infrastructure\ASCA Interface=GenerateSSLCertificatesForNCDeployment
    
    InstanceID     : <Instance2 ID>
    ActionTypeName : GenerateCertificates
    Status         : Completed
    StartDateTime  : 3/11/2025 10:31:52 PM
    EndDateTime    : 3/11/2025 10:32:02 PM
    
    Start       End       Duration    Type   Status Name                                                                                                                   
    -----                  ---                    --------    ----   ------  ----                                                                                                                   
    03/11/2025 10:32:53 PM 03/11/2025 10:41:50 PM 00.00:08:57 Action Success └─(A)EnableMOCSDN                                                                                                      
    03/11/2025 10:32:53 PM 03/11/2025 10:41:50 PM 00.00:08:57 Step   Success   └─(S)1 FCNC deployment and MOC hydration.                                                                            
    03/11/2025 10:32:53 PM 03/11/2025 10:41:50 PM 00.00:08:57 Task   Success     └─(T)Role=Cloud\Fabric\NC Action=DeployFCNCHydrateMOC                                                              
    
    ======SNIPPED=========SNIPPED============SNIPPED ==========SNIPPED========          
    
    03/11/2025 10:40:19 PM 03/11/2025 10:40:25 PM 00.00:00:06 Step   Success         │                 │           ├─(S)1 Check Firewall Rules                                                     
    03/11/2025 10:40:19 PM 03/11/2025 10:40:25 PM 00.00:00:06 Task   Success         │                 │           │ └─(T)Role=Cloud\Fabric\NC Interface=VerifyNCFirewallRulesEnabled               
    03/11/2025 10:40:25 PM 03/11/2025 10:40:32 PM 00.00:00:06 Step   Success         │                 │           └─(S)2 Check VM switch extension is enabled                                     
    03/11/2025 10:40:25 PM 03/11/2025 10:40:32 PM 00.00:00:06 Task   Success         │                 │             └─(T)Role=Cloud\Fabric\NC Interface=VerifyNCVMSwitchExtensionEnabled           
    03/11/2025 10:41:13 PM 03/11/2025 10:41:21 PM 00.00:00:07 Step   Success         │                 └─(S)1.1.0.9.2 VerifyNCResources                                                            
    03/11/2025 10:41:13 PM 03/11/2025 10:41:21 PM 00.00:00:07 Task   Success         │                   └─(T)Role=Cloud\Fabric\NC Interface=VerifyNCResources                                      
    03/11/2025 10:41:21 PM 03/11/2025 10:41:50 PM 00.00:00:29 Step   Success         └─(S)1.2 Enable FCNC SDN for MOC                                                                              
    03/11/2025 10:41:21 PM 03/11/2025 10:41:50 PM 00.00:00:29 Task   Success           └─(T)Role=Cloud\Fabric\NC Action=SetMOCSDNEnabled                                                            
    03/11/2025 10:41:21 PM 03/11/2025 10:41:50 PM 00.00:00:29 Action Success             └─(A)SetMOCSDNEnabled                                                                                      
    03/11/2025 10:41:21 PM 03/11/2025 10:41:43 PM 00.00:00:22 Step   Success               ├─(S)1.2.1 Enable FCNC SDN for MOC                                                                      
    03/11/2025 10:41:21 PM 03/11/2025 10:41:43 PM 00.00:00:22 Task   Success               │ └─(T)Role=Cloud\Fabric\NC Interface=EnableSDNForMOC                                                    
    03/11/2025 10:41:43 PM 03/11/2025 10:41:50 PM 00.00:00:07 Step   Success               └─(S)1.2.2 Flag FCNC deployed                                                                            
    03/11/2025 10:41:43 PM 03/11/2025 10:41:50 PM 00.00:00:07 Task   Success                 └─(T)Role=Cloud\Fabric\NC Interface=SetFCNCCompleteMOCHydrated                  
    
    InstanceID     : <Instance ID>
    ActionTypeName : EnableMOCSDN
    Status         : Completed
    StartDateTime  : 3/11/2025 10:32:52 PM
    EndDateTime    : 3/11/2025 10:41:55 PM
    
    VERBOSE: Full XML progress log file located at: C:\MASLogs\EnableMOCSDN.2025-03-11.22-32-52
    WARNING: Unable to find volume with label Deployment
    VERBOSE: SDN Network Controller URL is https://v-NC.domainname/
    VERBOSE: Enabling SDN for MOC completed.
    0
    VERBOSE: Transcript stopped at C:\MASLogs\Add-EceFeature.2025-03-11.22-29-49
    

后续步骤

此功能在 OS 内部版本 26100.xxxx 的 Azure Local 2506 或更高版本中提供。