使用 SDN Express 部署 SDN 基础结构

适用于:Azure Stack HCI 版本 22H2 和 21H2;Windows Server 2022、Windows Server 2019、Windows Server 2016

本主题介绍如何使用 SDN Express PowerShell 脚本部署端到端软件定义的网络 (SDN) 基础结构。 该基础结构包含高度可用 (HA) 的网络控制器 (NC),以及可选的高度可用的软件负载均衡器 (SLB) 和高度可用的网关 (GW)。 这些脚本支持分阶段部署,只需部署网络控制器组件即可实现一组具有最低网络要求的核心功能。

还可以使用 Windows Admin Center 或 System Center Virtual Machine Manager (VMM) 部署 SDN 基础结构。 有关详细信息,请参阅创建群集 - 步骤 5:SDN 并参阅在 VMM 结构中管理 SDN 资源

重要

不能使用 Microsoft System Center Virtual Machine Manager 2019 来管理运行 Azure Stack HCI 版本 21H2 或 Windows Server 2022 的群集。

准备阶段

在开始 SDN 部署之前,请规划并配置物理和主机网络基础结构。 请参考以下文章:

不必部署所有 SDN 组件。 请参阅规划软件定义的网络基础结构中的分阶段部署部分来确定所需的基础结构组件,并相应地运行脚本。

请确保所有主机服务器都安装了 Azure Stack HCI 操作系统。 请参阅部署 Azure Stack HCI 操作系统了解如何执行此操作。

要求

成功 SDN 部署必须满足以下要求:

  • 所有主机服务器都必须启用 Hyper-V。
  • 所有主机服务器都必须加入 Active Directory。
  • 必须创建虚拟交换机。
  • 必须为配置文件中定义的子网和 VLAN 配置物理网络。
  • SDN Express 脚本需在 Windows Server 2016 或更高版本的计算机上运行。
  • 在配置文件中指定的 VHDX 文件必须可从运行 SDN Express 脚本的计算机访问。

下载 VHDX 文件

SDN 使用包含 Azure Stack HCI 或 Windows Server 操作系统 (OS) 的 VHDX 文件作为用于创建 SDN 虚拟机 (VM) 的源。

注意

VHDX 中 OS 的版本必须与 Azure Stack HCI Hyper-V 主机使用的版本匹配。 此 VHDX 文件由所有 SDN 基础结构组件使用。

要下载 VHDX 文件的英语版本,请参阅从 Azure 门户下载 Azure Stack HCI 操作系统。 请确保从“选择语言”下拉列表中选择英语 VHDX

目前无法下载非英语 VHDX 文件。 如果需要非英语版本,请下载相应的 ISO 文件,并使用 Convert-WindowsImage cmdlet 将其转换为 VHDX。 必须从 Windows 客户端计算机运行此脚本。 可能需要以管理员身份运行此脚本,然后使用 Set-ExecutionPolicy 命令修改脚本的执行策略。

以下语法展示了使用 Convert-WindowsImage 的示例:

Install-Module -Name Convert-WindowsImage
Import-Module Convert-WindowsImage

$wimpath = "E:\sources\install.wim"
$vhdpath = "D:\temp\AzureStackHCI.vhdx"
$edition=1
Convert-WindowsImage -SourcePath $wimpath -Edition $edition -VHDPath $vhdpath -SizeBytes 500GB -DiskLayout UEFI

下载 GitHub 存储库

SDN Express 脚本文件位于 GitHub 中。 第一步是在部署计算机上获取所需的文件和文件夹。

  1. 转到 MICROSOFT SDN GitHub 存储库。

  2. 在存储库中,展开“代码”下拉列表,然后选择“克隆”或“下载 ZIP”,将 SDN 文件下载到指定的部署计算机。

    注意

    指定的部署计算机必须运行 Windows Server 2016 或更高版本。

  3. 提取 ZIP 文件,并将 SDNExpress 文件夹复制到部署计算机的 C:\ 文件夹。

编辑配置文件

PowerShell MultiNodeSampleConfig.psd1 配置数据文件包含 SDN Express 脚本所需的所有参数和设置,作为各种参数和配置设置的输入。 此文件包含有关需要填写的内容的具体信息,这些内容取决于是只部署网络控制器组件还是同时部署软件负载均衡器和网关组件。 有关详细信息,请参阅规划软件定义的网络基础结构主题。

导航到 C:\SDNExpress\scripts 文件夹,并在你最喜欢的文本编辑器中打开 MultiNodeSampleConfig.psd1 文件。 更改特定参数值以适应你的基础结构和部署:

常规设置和参数

这些设置和参数通常由 SDN 用于所有部署。 有关具体建议,请参阅 SDN 基础结构 VM 角色要求

  • VHDPath - 所有 SDN 基础结构 VM(NC、SLB、GW)使用的 VHD 文件路径
  • VHDFile - 所有 SDN 基础结构 VM 使用的 VHDX 文件名
  • VMLocation - SDN 基础结构 VM 的文件路径。 请注意,不支持通用命名约定 (UNC) 路径。 对于基于群集存储的路径,请使用类似于 C:\ClusterStorage\... 的格式
  • JoinDomain - SDN 基础结构 VM 加入到的域
  • SDNMacPoolStart - 客户端工作负荷 VM 的起始 MAC 池地址
  • SDNMacPoolEnd - 客户端工作负载 VM 的结束 MAC 池地址
  • ManagementSubnet - NC 用于管理 Hyper-V 主机、SLB 和 GW 组件的管理网络子网
  • ManagementGateway - 管理网络的网关地址
  • ManagementDNS - 管理网络的 DNS 服务器
  • ManagementVLANID - 管理网络的 VLAN ID
  • DomainJoinUsername - 管理员用户名。 请注意,用户名应采用以下格式:domainname\username。 例如,如果域为 contoso.com,则输入用户名 contoso\<username>。 请勿使用类似 contoso.com\<username>username@contoso.com 的格式
  • LocalAdminDomainUser - 本地管理员用户名。 请注意,用户名应采用以下格式:domainname\username。 例如,如果域为 contoso.com,则输入用户名 contoso\<username>。 请勿使用类似 contoso.com\<username>username@contoso.com 的格式
  • RestName - 管理客户端(例如 Windows Admin Center)用于与 NC 进行通信的 DNS 名称
  • RestIpAddress - REST API 的静态 IP 地址(从管理网络分配)。 它可用于 DNS 解析或基于 REST IP 的部署
  • HyperVHosts - 由网络控制器管理的主机服务器
  • NCUsername - 网络控制器帐户用户名
  • ProductKey - SDN 基础结构 VM 的产品密钥
  • SwitchName -仅当 Hyper-V 主机上存在多个虚拟交换机时需要
  • VMMemory - 分配给基础结构 VM 的内存(以 GB 为单位)。 默认值为 4 GB
  • VMProcessorCount - 分配给基础结构 VM 的处理器数。 默认值为 8
  • Locale - 如果未指定,则使用部署计算机的区域设置
  • TimeZone - 如果未指定,则使用部署计算机的本地时区

如果密码以文本编码的安全字符串形式进行加密存储,则可以选择包含密码。 仅当 SDN Express 脚本在加密密码的同一台计算机上运行时,才会使用密码,否则会提示输入以下密码:

  • DomainJoinSecurePassword - 用于域帐户
  • LocalAdminSecurePassword - 用于本地管理员帐户
  • NCSecurePassword - 用于网络控制器帐户

网络控制器 VM 部分

对于 SDN,建议至少使用三个网络控制器 VM。

NCs = @() 部分用于网络控制器 VM。 请确保每个 NC VM 的 MAC 地址均在常规设置中所列的 SDNMACPool 范围之外。

  • ComputerName - NC VM 的名称
  • HostName - NC VM 所在的服务器的主机名
  • ManagementIP - NC VM 的管理网络 IP 地址
  • MACAddress - NC VM 的 MAC 地址

软件负载均衡器 VM 部分

对于 SDN,建议至少使用两个软件负载均衡器 VM。

Muxes = @() 部分用于 SLB VM。 请确保每个 SLB VM 的 MACAddressPAMACAddress 参数均在常规设置中所列的 SDNMACPool 范围之外。 确保从配置文件指定的 PA 池外部(但需在配置文件指定的 PASubnet 中)获取 PAIPAddress 参数。

如果不部署 SLB 组件,请将本部分留空 (Muxes = @()):

  • ComputerName - SLB VM 的名称
  • HostName - SLB VM 所在的服务器的主机名
  • ManagementIP - SLB VM 的管理网络 IP 地址
  • MACAddress - SLB VM 的 MAC 地址
  • PAIPAddress - 用于 SLB VM 的提供商网络 IP 地址 (PA)
  • PAMACAddress - 用于 SLB VM 的提供商网络 IP 地址 (PA)

网关 VM 部分

对于 SDN,建议至少使用两个网关 VM(一个活动 VM 和一个冗余 VM)。

Gateways = @() 部分用于网关 VM。 请确保每个网关 VM 的 MACAddress 参数均在常规设置中所列的 SDNMACPool 范围之外。 FrontEndMacBackendMac 必须在 SDNMACPool 范围内。 请确保从 SDNMACPool 范围的末尾获取 FrontEndMacBackendMac 参数。

如果不部署网关组件,请将本部分留空 (Gateways = @()):

  • ComputerName - 网关 VM 的名称
  • HostName - 网关 VM 所在的服务器的主机名
  • ManagementIP - 网关 VM 的管理网络 IP 地址
  • MACAddress - 网关 VM 的 MAC 地址
  • FrontEndMac - 网关 VM 的提供商网络前端 MAC 地址
  • BackEndMac - 网关 VM 的提供商网络后端 MAC 地址

SLB 和网关的其他设置

以下附加参数供 SLB 和网关 VM 使用。 如果不部署 SLB 或网关 VM,请将这些值留空:

  • SDNASN - SDN 用于与网络交换机对等互连的自治系统编号 (ASN)
  • RouterASN - 网关路由器 ASN
  • RouterIPAddress - 网关路由器 IP 地址
  • PrivateVIPSubnet - 专用子网的虚拟 IP 地址 (VIP)
  • PublicVIPSubnet - 公共子网的虚拟 IP 地址

以下附加参数仅供网关 VM 使用。 如果不部署网关 VM,请将这些值留空:

  • PoolName - 所有网关 VM 使用的池名称

  • GRESubnet - GRE 的 VIP 子网(如果使用 GRE 连接)

  • Capacity - 池中每个网关 VM 的容量(以 Kbps 为单位)

  • RedundantCount - 处于冗余模式的网关数。 默认值为 1。 冗余网关没有任何活动连接。 某个活动网关关闭后,该网关的连接将移动到冗余网关,冗余网关将变为活动状态。

    注意

    如果你填写 RedundantCount 的值,请确保网关 VM 的总数至少比 RedundantCount 大 1。 默认情况下,RedundantCount 为 1,因此必须至少有 2 个网关 VM,以确保至少有 1 个活动网关可用来托管网关连接。

租户覆盖网络的设置

如果要为租户部署和管理覆盖虚拟网络,请使用以下参数。 如果使用网络控制器来管理传统 VLAN 网络,则可以将这些值留空。

  • PASubnet - 提供商地址 (PA) 网络的子网
  • PAVLANID - PA 网络的 VLAN ID
  • PAGateway - PA 网络网关的 IP 地址
  • PAPoolStart - PA 网络池的起始 IP 地址
  • PAPoolEnd - PA 网络池的结束 IP 地址

下面是 Hyper-V 网络虚拟化 (HNV) 提供程序逻辑网络分配 IP 地址的方式。 请使用此信息来规划 HNV 提供程序网络的地址空间。

  • 为每台物理服务器分配两个 IP 地址
  • 为每个 SLB MUX VM 分配一个 IP 地址
  • 为每个网关 VM 分配一个 IP 地址

运行部署脚本

SDN Express 脚本部署指定的 SDN 基础结构。 脚本完成后,SDN 基础结构即可用于 VM 工作负荷部署。

  1. 有关如何运行部署脚本的最新信息,请查看 README.md 文件。

  2. 从具有群集主机服务器管理凭据的用户帐户运行以下命令:

    SDNExpress\scripts\SDNExpress.ps1 -ConfigurationDataFile MultiNodeSampleConfig.psd1 -Verbose
    
  3. 创建 NC VM 后,请在 DNS 服务器上为网络控制器群集名称配置动态 DNS 更新。 有关详细信息,请参阅动态 DNS 更新

配置示例文件

Microsoft SDN GitHub 存储库中提供了以下用于部署 SDN 的配置示例文件:

  • 传统 VLAN 网络.psd1 - 部署网络控制器,以管理传统 VLAN 网络上的微分段和服务质量等网络策略。

  • 虚拟网络.psd1 - 部署网络控制器,以管理虚拟网络和虚拟网络上的网络策略。

  • 软件负载均衡器.psd1 - 部署网络控制器和软件负载平衡器,以在虚拟网络上进行负载均衡。

  • SDN 网关.psd1 - 部署网络控制器、软件负载均衡器和网关,以连接到外部网络。

重新部署 SDN 网络控制器

如果网络控制器部署失败或想要再次部署它,请执行下列操作:

  1. 从所有服务器节点上删除所有网络控制器 VM 及其 VHD。

  2. 通过运行以下命令,从所有主机中删除以下注册表项:

     Remove-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Services\NcHostAgent\Parameters\' -Name Connections
     Remove-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Services\NcHostAgent\Parameters\' -Name NetworkControllerNodeNames
    
  3. 删除注册表项后,从 Windows Admin Center 管理中删除群集,然后再将其添加回来。

    注意

    如果不执行此步骤,则可能无法在 Windows Admin Center 中看到 SDN 部署向导。

  4. (仅当你要卸载网络控制器且不再部署它时,才需要执行附加步骤)在 Azure Stack HCI 群集中的所有服务器上运行以下 cmdlet,并跳过最后一步。

    Disable-VMSwitchExtension -VMSwitchName "<Compute vmswitch name>" -Name "Microsoft Azure VFP Switch Extension"
    
  5. 再次运行部署向导。

后续步骤