教程:为 Azure Stack HCI 创建基于 VM 的实验室

适用于 Azure Stack HCI 版本 21H2

在本教程中,你将使用 MSLab PowerShell 脚本来自动完成创建专用林以在使用嵌套虚拟化的虚拟机 (VM) 上运行 Azure Stack HCI 的过程。

重要

由于 Azure Stack HCI 旨在用作一台虚拟化主机,你的所有工作负载将在该主机上的 VM 中运行,因此,在生产环境中不支持嵌套虚拟化。 请仅将嵌套虚拟化用于测试和评估目的。

将了解如何执行以下操作:

  • 创建具有域控制器和 Windows Admin Center 服务器的专用林
  • 部署多个运行 Azure Stack HCI 的 VM 以组建群集

完成后,你可以使用已部署的 VM 创建 Azure Stack HCI 群集,并使用专用实验室进行原型制作、测试、故障排除或评估。

先决条件

要完成本教程,需要:

  • 运行 Windows Server 2022、Windows Server 2019 或 Windows Server 2016 的 Hyper-V 主机服务器上的管理员特权
  • 至少 8 GB RAM
  • 支持嵌套虚拟化的 CPU
  • 固态硬盘 (SSD)
  • Hyper-V 主机服务器上有 40 GB 可用空间
  • 用于注册 Windows Admin Center 和群集的 Azure 帐户

准备实验室

按照以下说明精心准备实验室环境。

连接到虚拟化主机

连接到要在其上创建基于 VM 的实验室的物理服务器。 如果使用远程服务器,请通过远程桌面进行连接。

下载 Azure Stack HCI

可以从Azure 门户下载 Azure Stack HCI OS。 有关下载说明,请参阅 下载 Azure Stack HCI 操作系统

下载 Windows Server

还需要域控制器和 Windows Admin Center VM 的 Windows Server 2022、Windows Server 2019 或 Windows Server 2016 副本。 可以使用评估媒体;如果你有权访问 VL 或 Visual Studio 订阅,也可以使用这些订阅。 对于本教程,我们将下载评估副本

为实验室文件创建一个文件夹

在 C 驱动器的根目录(或所需的任何位置)创建一个 Lab 文件夹,然后使用文件资源管理器将下载的 OS 文件复制到 C:\Lab\Isos 文件夹 。

下载 MSLab 脚本

使用服务器上的 Web 浏览器下载 MSLab 脚本。 zip 文件 wslab_vxx.xx.x.zip 应会自动下载到硬盘驱动器。 将 zip 文件复制到硬盘驱动器位置 (C:\Lab) 并解压缩脚本。

编辑 LabConfig 脚本

MSLab VM 在 LabConfig.ps1 PowerShell 脚本中定义为一个简单的哈希表。 需要自定义该脚本,以使用 Azure Stack HCI VM 创建专用林。

若要编辑该脚本,请使用文件资源管理器导航到 C:\Lab\wslab_xxx\,然后右键单击“LabConfig.ps1”。 选择“编辑”,这会使用 Windows PowerShell ISE 打开该文件。

提示

将 LabConfig.ps1 的原始版本另存为 Original_LabConfig.ps1,以便在需要时可以轻松地重新开始进行自定义。

请注意,大部分脚本已注释掉;只需执行其中的少量几行。 按照以下步骤自定义脚本,使其生成所需的输出。 或者,只需复制本部分末尾的代码块,并替换 LabConfig 中的相应行。

若要自定义脚本,请执行以下操作:

  1. 将以下内容添加到 LabConfig.ps1 中已取消注释的第一行,告知脚本要在何处查找 ISO,启用来宾服务接口,并在主机上启用 DNS 转发:ServerISOFolder="C:\lab\isos" ; EnableGuestServiceInterface=$true ; UseHostDnsAsForwarder=$true

  2. 根据需要更改管理员名称和密码。

  3. 如果你打算在同一台服务器上创建多个实验室,请将 Prefix = 'MSLab-' 更改为使用新的前缀名称,例如 Lab1- 。 在本教程中,我们将保持使用默认的 MSLab- 前缀。

  4. 注释掉 Windows Server 的默认 ForEach-Object 行,并删除 Azure Stack HCI 的 ForEach-Object 行前面的井号标签,使脚本为群集节点创建 Azure Stack HCI VM 而不是 Windows Server VM 。

  5. 默认情况下,该脚本将创建四节点群集。 例如,如果你要更改群集中的 VM 数量,请将 1..4 替换为 1..2 或 1..8 。 请记住,群集中的 VM 越多,主机服务器的内存要求就越大。

  6. 将 NestedVirt=$true ; AdditionalNetworks=$True 添加到 ForEach-Object 命令,并将 MemoryStartupBytes 设置为 4GB 。

  7. 添加 AdditionalNetworksConfig 行:$LabConfig.AdditionalNetworksConfig += @{ NetName = 'Converged'; NetAddress='10.0.1.'; NetVLAN='0'; Subnet='255.255.255.0'}

  8. 添加以下行,以配置运行 Windows Server Core 操作系统的 Windows Admin Center 管理服务器,并添加第二个 NIC 以便可以从专用网络外部连接到 Windows Admin Center:$LabConfig.VMs += @{ VMName = 'AdminCenter' ; ParentVHD = 'Win2019Core_G2.vhdx'; MGMTNICs=2}

  9. 请务必保存对 LabConfig.ps1 的更改。

在上述步骤中对 LabConfig.ps1 所做的更改将反映在此代码块中:

$LabConfig=@{ DomainAdminName='LabAdmin'; AdminPassword='LS1setup!'; Prefix = 'MSLab-' ; DCEdition='4'; Internet=$true ; AdditionalNetworksConfig=@(); VMs=@() ; ServerISOFolder="C:\lab\isos" ; EnableGuestServiceInterface=$true ; UseHostDnsAsForwarder=$true }
# Windows Server 2019
#1..4 | ForEach-Object {$VMNames="S2D"; $LABConfig.VMs += @{ VMName = "$VMNames$_" ; Configuration = 'S2D' ; ParentVHD = 'Win2019Core_G2.vhdx'; SSDNumber = 0; SSDSize=800GB ; HDDNumber = 12; HDDSize= 4TB ; MemoryStartupBytes= 512MB }}
# Or Azure Stack HCI 
1..4 | ForEach-Object {$VMNames="AzSHCI"; $LABConfig.VMs += @{ VMName = "$VMNames$_" ; Configuration = 'S2D' ; ParentVHD = 'AzSHCI21H2_G2.vhdx'; SSDNumber = 0; SSDSize=800GB ; HDDNumber = 12; HDDSize= 4TB ; MemoryStartupBytes= 4GB ; NestedVirt=$true ; AdditionalNetworks=$true }}
# Or Windows Server 2022
#1..4 | ForEach-Object {$VMNames="S2D"; $LABConfig.VMs += @{ VMName = "$VMNames$_" ; Configuration = 'S2D' ; ParentVHD = 'Win2022Core_G2.vhdx'; SSDNumber = 0; SSDSize=800GB ; HDDNumber = 12; HDDSize= 4TB ; MemoryStartupBytes= 512MB }}

$LabConfig.AdditionalNetworksConfig += @{ NetName = 'Converged'; NetAddress='10.0.1.'; NetVLAN='0'; Subnet='255.255.255.0'}

$LabConfig.VMs += @{ VMName = 'AdminCenter' ; ParentVHD = 'Win2019Core_G2.vhdx'; MGMTNICs=2}

运行 MSLab 脚本并创建父磁盘

MSLab 脚本可以自动化大部分实验室设置过程,并将操作系统的 ISO 映像转换为 VHD 文件。

运行 Prereq 脚本

导航到 C:\Lab\wslab_xxx\,然后右键单击“1_Prereq.ps1”文件并选择“使用 PowerShell 运行”以运行该脚本 。 该脚本将下载所需的文件。 某些示例文件将放置在 ToolsDisk 文件夹中,某些脚本将添加到 ParentDisks 文件夹中 。 脚本完成后,它会要求你按 Enter 继续。

注意

可能需要通过以管理员身份运行以下 PowerShell cmdlet 来更改系统上的脚本执行策略,以允许未签名的脚本:Set-ExecutionPolicy -ExecutionPolicy Unrestricted

创建 Windows Server 父磁盘

2_CreateParentDisks.ps1 脚本从操作系统 ISO 文件准备 Windows Server 和 Server Core 的虚拟硬盘 (VHD),另外,它还为配置了全部所需角色的部署准备域控制器。 右键单击“2_CreateParentDisks.ps1”文件并选择“使用 PowerShell 运行”以运行该脚本 。

系统会要求你选择遥测级别;请选择“B”(表示“基本”)或“F”(表示“完整”)。 该脚本还会要求提供 Windows Server 2019 的 ISO 文件。 请将路径指向你将该文件复制到的位置 (C:\Labs\Isos)。 如果该文件夹中有多个 ISO 文件,系统会要求你选择要使用的 ISO。 选择“Windows Server ISO”。 如果系统询问你是否要格式化驱动器,选择“N”。

警告

不要选择“Azure Stack HCI ISO”- 你将在下一部分创建 Azure Stack HCI 父磁盘 (VHD)。

创建父磁盘最长可能需要 1-2 个小时,不过实际所需时间往往要短得多。 完成后,脚本会询问你是否要删除不需要的文件。 如果你选择“Y”,则会删除前两个脚本,因为不再需要它们。 按 Enter 继续

创建 Azure Stack HCI 父磁盘

Convert-WindowsImage.ps1 函数下载到 Convert-WindowsImage.ps1 所在的 C:\Lab\wslab_xxx\ParentDisks 文件夹中。 然后以管理员身份运行 CreateParentDisk.ps1。 从 C:\Labs\Isos 中选择“Azure Stack HCI ISO”,并接受默认名称和大小。

创建父磁盘需要一段时间。 该操作完成后,系统会提示你启动 VM。 暂时不要启动 VM - 键入“N”。

部署 VM

右键单击“Deploy.ps1”并选择“使用 PowerShell 运行”以运行该脚本 。 该脚本需要 10-15 分钟才能完成。

安装操作系统更新和软件

部署 VM 后,需要安装安全更新以及用于管理实验室的软件。

更新域控制器和 Windows Admin Center VM

登录到虚拟化主机并启动 Hyper-V 管理器。 专用林中的域控制器应已运行 (MSLab-DC)。 转到“虚拟机”,选择并连接域控制器。 使用指定的用户名和密码登录;或者使用默认用户名和密码(如果未更改过):LabAdmin/LS1setup!

安装全部所需的安全更新,并根据需要重启域控制器 VM。 这可能需要一段时间,并且可能需要重启 VM 多次。

在 Hyper-V 管理器中,启动运行 Server Core 的 Windows Admin Center VM (MSLab-AdminCenter)。 连接到该 VM 并登录,然后键入“sconfig”。 选择“下载并安装安全更新”,并根据需要重新启动。 这可能需要一段时间,并且可能需要重启 VM 并键入“sconfig”多次。

在域控制器上安装 Microsoft Edge

域控制器 VM 上需有一个 Web 浏览器才能在专用林中使用 Windows Admin Center。 出于安全原因,Internet Explorer 可能会被阻止,因此请改用 Microsoft Edge。 如果域控制器 VM 上尚未安装 Edge,需要安装 Edge。

若要安装 Microsoft Edge,请从 Hyper-V 管理器连接到域控制器 VM,并以管理员身份启动 PowerShell 会话。 然后运行以下代码来安装并启动 Microsoft Edge。

#Install Edge
Start-BitsTransfer -Source "https://aka.ms/edge-msi" -Destination "$env:USERPROFILE\Downloads\MicrosoftEdgeEnterpriseX64.msi"
#Start install
Start-Process -Wait -Filepath msiexec.exe -Argumentlist "/i $env:UserProfile\Downloads\MicrosoftEdgeEnterpriseX64.msi /q"
#Start Edge
start microsoft-edge:

在网关模式下安装 Windows Admin Center

在域控制器 VM 上使用 Microsoft Edge 下载此脚本并将其保存到域控制器 VM,采用扩展名 .ps1。

右键单击该文件,选择“使用 PowerShell 编辑”,然后更改第一行中 $GatewayServerName 的值,以匹配不带前缀的 AdminCenter VM 名称(例如 AdminCenter) 。 保存脚本,然后右键单击该文件并选择“使用 PowerShell 运行”以运行该文件。

登录到 Windows Admin Center

现在应该可以从 DC 上的 Edge 访问 Windows Admin Center: http://admincenter

浏览器可能会警告此连接不安全,但你可以继续访问。

添加外部可访问的网络适配器(可选)

如果实验室位于专用网络上,你可能希望向 AdminCenter VM 添加外部可访问的 NIC,以便可以连接到该 VM 并从专用林外部管理实验室。 为此,请使用 Windows Admin Center 连接到虚拟化主机(不是域控制器),并转到“虚拟机”>“MSLab-AdminCenter”>“设置”>“网络”。 确保有一个已连接到适当网络的虚拟交换机。 查看“交换机类型”是否为“外部”(例如 MSLab-LabSwitch-External)。 然后将 VM NIC 添加/绑定到此外部虚拟交换机。 请务必选中“允许管理 OS 共享这些网络适配器”复选框。

记下 AdminCenter VM 上的网络适配器的 IP 地址。 将 :443 追加到外部可访问 NIC 的 IP 地址,然后应该可以登录到 Windows Admin Center 并从外部 Web 浏览器创建和管理群集,例如: https://10.217.XX.XXX:443

在 Azure Stack HCI VM 上安装操作系统更新

在虚拟化主机上使用 Hyper-V 管理器启动 Azure Stack HCI VM。 连接到每个 VM,然后在其上使用 Sconfig 下载并安装安全更新。 可能需要重启 VM 多次。 (如果你希望以后在群集创建向导中安装 OS 更新,则可以跳过此步骤)。

在 Azure Stack HCI VM 上启用 Hyper-V 角色

如果群集 VM 运行 Azure Stack HCI 20H2,则你需要运行一个脚本以在 VM 上启用 Hyper-V 角色。 将此脚本作为 PreviewWorkaround.ps1 保存到虚拟化主机上的 C:\Lab 中。

右键单击“PreviewWorkaround.ps1”文件并选择“使用 PowerShell 编辑”。 如果 $domainName、$domainAdmin 和 $nodeName 变量不匹配,请更改它们,例如:

$domainName = "corp.contoso.com"
$domainAdmin = "$domainName\labadmin"
$nodeName = "MSLab-AzSHCI1","MSLab-AzSHCI2","MSLab-AzSHCI3","MSLab-AzSHCI4"

保存更改,然后以管理员身份打开 PowerShell 会话并运行脚本:

PS C:\Lab> ./PreviewWorkaround.ps1

该脚本需要一段时间才能完成运行,尤其是在创建了大量 VM 的情况下。 应会看到消息“MSLab-AzSHCI1 MSLab-AzSHCI2 现已联机。 继续安装 Hyper-V PowerShell。”如果显示消息后脚本出现冻结,请按 Enter 将其唤醒。 完成后,应会看到:“MSLab-AzSHCI1 MSLab-AzSHCI2 现已联机。 请继续下一步...”

添加更多网络适配器(可选)

根据群集的使用方式,你可能希望向每个 Azure Stack HCI VM 添加更多网络适配器,以进行更全面的测试。 为此,请使用 Windows Admin Center 连接到主机服务器,然后转到“虚拟机”>“MSLab-(node)”>“设置”>“网络”。 确保选择“高级”>“启用 MAC 地址欺骗”。 如果不启用此设置,在尝试创建群集时可能会遇到连接失败错误。

将 Windows Admin Center 注册到 Azure

使用外部 URL 或域控制器上的 Edge 连接到专用林中的Windows Admin Center,然后将 Windows Admin Center 注册到 Azure

清理资源

如果你已选择“Y”清理了不需要的文件和文件夹,则清理工作已完成。 如果你偏向于手动进行清理,请导航到 C:\Labs 并删除所有不需要的文件。

后续步骤

现在可以转到群集创建向导进行操作。