使用 SDN Express 部署 SDN 基础结构

适用于:Azure Stack HCI 版本 21H2 和 20H2;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 基础结构组件使用。

如果已从 ISO 下载并安装了 Azure Stack HCI OS,则可以使用 Convert-WindowsImage 实用工具创建 VHDX 文件。

使用 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

注意

此脚本应从 Windows 客户端计算机运行。 可能需要以管理员角色运行此命令,然后使用 Set-ExecutionPolicy 命令修改脚本的执行策略。

下载 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 使用的 VHD 文件名
  • VMLocation - SDN 基础结构 VM 的文件路径
  • JoinDomain - SDN 基础结构 VM 加入到的域
  • SDNMacPoolStart - 客户端工作负荷 VM 的起始 MAC 池地址
  • SDNMacPoolEnd - 客户端工作负载 VM 的结束 MAC 池地址
  • ManagementSubnet - NC 用于管理 Hyper-V 主机、SLB 和 GW 组件的管理网络子网
  • ManagementGateway - 管理网络的网关地址
  • ManagementDNS - 管理网络的 DNS 服务器
  • ManagementVLANID - 管理网络的 VLAN ID
  • DomainJoinUsername - 管理员用户名
  • LocalAdminDomainUser - 本地管理员用户名
  • RestName - 管理客户端(例如 Windows Admin Center)用于与 NC 进行通信的 DNS 名称
  • 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 参数。 请确保从配置文件中指定的 PA 池的末尾获取 FrontEndIp

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

  • ComputerName - 网关 VM 的名称
  • HostName - 网关 VM 所在的服务器的主机名
  • ManagementIP - 网关 VM 的管理网络 IP 地址
  • MACAddress - 网关 VM 的 MAC 地址
  • FrontEndIp - 网关 VM 的提供商网络前端 IP 地址
  • 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 为单位)

租户覆盖网络的设置

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

  • PASubnet - 提供商地址 (PA) 网络的子网
  • PAVLANID - PA 网络的 VLAN ID
  • PAGateway - PA 网络网关的 IP 地址
  • PAPoolStart - PA 网络池的起始 IP 地址
  • PAPoolEnd - PA 网络池的结束 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 - 部署网络控制器、软件负载均衡器和网关,以连接到外部网络。

后续步骤