使用 SDN Express for Azure Stack HCI 部署 SDN 基础结构

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

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

还可以部署 SDN 基础结构 System Center Virtual Machine Manager(VMM)。 有关详细信息, 在 VMM 构造中管理 SDN 资源。

重要

如果要在 Azure Stack HCI 版本 23H2 群集上部署 SDN,请确保所有适用的 SDN 基础结构 VM(网络控制器、软件负载均衡器、网关)都位于最新的Windows 更新修补程序中。 可以从计算机上的 SConfig UI 启动更新。 如果没有最新的修补程序,可能会出现连接问题。 有关更新 SDN 基础结构的详细信息,请参阅 Azure Stack HCI 的更新 SDN 基础结构。

开始之前

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

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

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

要求

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

  • 所有主机服务器都必须启用 Hyper-V。
  • 所有主机服务器都必须加入 Active Directory。
  • 必须准备好 Active Directory。 有关详细信息,请参阅 “准备 Active Directory”。
  • 必须创建虚拟交换机。 可以使用为 Azure Stack HCI 版本 23H2 创建的默认交换机。 例如,可能需要为计算流量和管理流量创建单独的交换机。
  • 必须为配置文件中定义的子网和 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

安装 SDN Express PowerShell 模块

运行以下命令,在要运行 SDN 安装的计算机上安装最新版本的 SDN Express PowerShell 模块:

Install-Module -Name SDNExpress

文件会自动安装在默认 PowerShell 模块目录中: C:\Program Files\WindowsPowerShell\Modules\SdnExpress\

注意

SDN Express 脚本文件在 GitHub 上不再可用。

编辑配置文件

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

导航到 C:\Program Files\WindowsPowerShell\Modules\SdnExpress\ 文件夹,并在你最喜欢的文本编辑器中打开 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.ps1 -ConfigurationDataFile MultiNodeSampleConfig.psd1 -Verbose
    
  3. 创建 NC VM 后,请在 DNS 服务器上为网络控制器群集名称配置动态 DNS 更新。 有关详细信息,请参阅动态 DNS 更新

配置示例文件

以下用于部署 SDN 的配置示例文件可在安装 PowerShell 模块的位置(C:\Program Files\WindowsPowerShell\Modules\SdnExpress\):

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

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

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

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

后续步骤