部署虚拟 Azure 本地版本 23H2 系统

适用于:Azure 本地版本 23H2

重要

Azure Stack HCI 现在是 Azure 本地的一部分。 产品文档重命名正在进行中。 文本更改已完成,视觉更新即将完成。 了解详细信息

本文介绍如何在运行 Windows Server 2022、Windows 11 或更高版本操作系统(OS)上的 Hyper-V 的主机系统上部署运行版本 23H2 的虚拟化 Azure 本地实例。

需要 Azure 本地虚拟部署的管理员权限,并且应该熟悉现有的 Azure 本地解决方案。 部署可能需要大约 2.5 小时才能完成。

重要

Azure Local 版本 23H2 的虚拟部署仅用于教育和演示目的。 Microsoft 支持部门不支持虚拟部署。

先决条件

下面是虚拟部署的硬件、网络和其他先决条件:

物理主机要求

以下是成功部署 Azure 本地版本 23H2 的最低要求。

在开始之前,请确保:

  • 你有权访问在 Windows Server 2022、Windows 11 或更高版本上运行 Hyper-V 的物理主机系统。 此主机用于预配虚拟 Azure 本地部署。

  • 你有足够的容量。 运行虚拟机或容器等实际工作负荷需要更多容量。

  • 用于虚拟部署的物理硬件满足以下要求:

    组件 最低要求
    处理器 Intel VT-x 或 AMD-V,支持嵌套虚拟化。 有关详细信息,请参阅 “我的处理器是否支持 Intel® 虚拟化技术?”
    内存 对于单个虚拟节点部署,物理主机必须至少具有 32 GB RAM。 虚拟主机 VM 应至少有 24 GB RAM。

    对于两个虚拟节点部署,物理主机必须至少具有 64 GB RAM。 每个虚拟主机 VM 应至少有 24 GB RAM。
    主机网络适配器 单个网络适配器。
    存储 1 TB 固态硬盘(SSD)。

虚拟主机要求

在开始之前,请确保每个虚拟主机系统都可以指定以下资源来预配虚拟化的 Azure 本地实例:

组件 要求
虚拟机(VM)类型 已启用安全启动和受信任的平台模块(TPM)。
vCPU 四个核心。
内存 至少为 24 GB。
网络 至少两个连接到内部网络的网络适配器。 必须启用 MAC 欺骗。
启动磁盘 一个磁盘,用于从 ISO 安装 Azure Stack HCI 操作系统。
用于存储空间直通的硬盘 六个动态扩展磁盘。 最大磁盘大小为 1024 GB。
数据磁盘 至少 127 GB。
集成中的时间同步 “禁用”。

注意

这是成功部署 Azure 本地版本 23H2 的最低要求。 运行虚拟机或容器等实际工作负荷时,增加虚拟核心和内存等容量。

设置虚拟交换机

在虚拟环境中部署 Azure 本地时,可以使用现有网络并使用该网络的 IP 地址(如果可用)。 在这种情况下,只需创建外部交换机并将所有虚拟网络适配器连接到该虚拟交换机。 虚拟主机将连接到物理网络,无需任何额外的配置。

但是,如果计划在其中部署 Azure 本地虚拟环境的物理网络在 IP 上稀缺,则可以创建启用了 NAT 的内部虚拟交换机,以隔离虚拟主机与物理网络,同时保持与 Internet 的出站连接。

下面列出了两个选项的步骤:

使用外部虚拟交换机进行部署

在物理主计算机上,运行以下 PowerShell 命令以创建外部虚拟交换机:

New-VMSwitch -Name "external_switch_name" -SwitchType External -NetAdapterName "network_adapter_name" -AllowManagementOS $true

启用内部虚拟交换机和 NAT 进行部署

在物理主计算机上,运行以下 PowerShell 命令来创建内部虚拟交换机。 使用此开关可确保隔离 Azure 本地部署。

New-VMSwitch -Name "internal_switch_name" -SwitchType Internal -NetAdapterName "network_adapter_name" 

创建内部虚拟交换机后,会在主机上创建新的网络适配器。 必须为此网络适配器分配 IP 地址,才能在连接到此内部交换机网络后成为虚拟主机的默认网关。 还需要定义虚拟主机连接的 NAT 网络子网。

以下示例脚本创建一个具有前缀192.168.44.0/24的 NAT 网络HCINAT,并使用主机上的接口将 IP 定义为192.168.44.1网络的默认网关:

#Check interface index of the new network adapter on the host connected to InternalSwitch:
Get-NetAdapter -Name "vEthernet (InternalSwitch)"

#Create the NAT default gateway IP on top of the InternalSwitch network adapter:
New-NetIPAddress -IPAddress 192.168.44.1 -PrefixLength 24 -InterfaceAlias "vEthernet (InternalSwitch)"

#Create the NAT network:
New-NetNat -Name "HCINAT"-InternalIPInterfaceAddressPrefix 192.168.44.0/24

创建虚拟主机

使用以下配置创建用作虚拟主机的 VM。 可以使用 Hyper-V 管理器或 PowerShell 创建此 VM:

  • Hyper-V 管理器。 有关详细信息,请参阅 使用 Hyper-V 管理器 创建虚拟机来镜像物理管理网络。

  • PowerShell cmdlet。 在运行 PowerShell cmdlet 之前,请确保调整虚拟主机要求引用的 VM 配置参数。

按照以下步骤创建使用 PowerShell cmdlet 命名 Node1 的示例 VM:

  1. 创建 VM:

    New-VHD -Path "your_VHDX_path" -SizeBytes 127GB
    New-VM -Name Node1 -MemoryStartupBytes 20GB -VHDPath "your_VHDX_path" -Generation 2 -Path "VM_config_files_path"
    
  2. 禁用动态内存:

    Set-VMMemory -VMName "Node1" -DynamicMemoryEnabled $false
    
  3. 禁用 VM 检查点:

    Set-VM -VMName "Node1" -CheckpointType Disabled
    
  4. 删除在上一步中创建 VM 期间创建的默认网络适配器:

    Get-VMNetworkAdapter -VMName "Node1" | Remove-VMNetworkAdapter
    
  5. 使用自定义名称将新的网络适配器添加到 VM。 此示例添加四个 NIC,但如果需要,只需添加两个 NIC。 使用四个 NIC 可以测试两个网络意向(Mgmt_ComputeStorage例如),每个 NIC 有两个 NIC:

    Add-VmNetworkAdapter -VmName "Node1" -Name "NIC1"
    Add-VmNetworkAdapter -VmName "Node1" -Name "NIC2"
    Add-VmNetworkAdapter -VmName "Node1" -Name "NIC3"
    Add-VmNetworkAdapter -VmName "Node1" -Name "NIC4"
    
  6. 将所有网络适配器附加到虚拟交换机。 指定创建的虚拟交换机的名称,无论是外部没有 NAT,还是使用 NAT 在内部:

    Get-VmNetworkAdapter -VmName "Node1" |Connect-VmNetworkAdapter -SwitchName "virtual_switch_name"
    
  7. 在 VM Node1上的所有网络适配器上启用 MAC 欺骗。 MAC 地址欺骗是一种技术,它允许网络适配器通过更改其媒体访问控制(MAC)地址伪装为另一种地址。 在计划使用嵌套虚拟化的情况下,这是必需的:

    Get-VmNetworkAdapter -VmName "Node1" |Set-VmNetworkAdapter -MacAddressSpoofing On
    
  8. 为 VM Node1上的所有网络适配器启用中继端口(仅适用于多节点部署)。 此脚本将特定 VM 的网络适配器配置为在中继模式下运行。 这通常用于多节点部署,希望允许多个虚拟局域网(VLAN)通过单个网络适配器进行通信:

    Get-VmNetworkAdapter -VmName "Node1" |Set-VMNetworkAdapterVlan -Trunk -NativeVlanId 0 -AllowedVlanIdList 0-1000
    
  9. 创建新的密钥保护程序并将其分配给 Node1。 这通常在 Hyper-V 中设置受保护的构造的上下文中完成,这是一项安全功能,可保护 VM 免受未经授权的访问或篡改。

    执行以下脚本后, Node1 将为其分配一个新的密钥保护程序。 此密钥保护程序可保护 VM 的密钥,帮助保护 VM 免受未经授权的访问或篡改:

    $owner = Get-HgsGuardian UntrustedGuardian
    $kp = New-HgsKeyProtector -Owner $owner -AllowUntrustedRoot
    Set-VMKeyProtector -VMName "Node1" -KeyProtector $kp.RawData
    
  10. Node1. 启用 vTPM 通过在 VM 上启用 vTPM,可以使用 BitLocker 和其他需要在 VM 上使用 TPM 的功能。 执行此命令后, Node1 将启用 vTPM,假设主机的硬件和 VM 的配置支持此功能。

    Enable-VmTpm -VMName "Node1"
    
  11. 将虚拟处理器更改为 8

     Set-VmProcessor -VMName "Node1" -Count 8
    
  12. 创建要用作启动磁盘和硬盘的额外驱动器,以便存储空间直通。 执行这些命令后,将在目录中创建 C:\vms\Node1 六个新的 VHDX,如以下示例所示:

     new-VHD -Path "C:\vms\Node1\s2d1.vhdx" -SizeBytes 1024GB
     new-VHD -Path "C:\vms\Node1\s2d2.vhdx" -SizeBytes 1024GB
     new-VHD -Path "C:\vms\Node1\s2d3.vhdx" -SizeBytes 1024GB
     new-VHD -Path "C:\vms\Node1\s2d4.vhdx" -SizeBytes 1024GB
     new-VHD -Path "C:\vms\Node1\s2d5.vhdx" -SizeBytes 1024GB
     new-VHD -Path "C:\vms\Node1\s2d6.vhdx" -SizeBytes 1024GB
    
  13. 将驱动器附加到为 VM 新建的 VHDX。 在这些命令中C:\vms\Node1,将添加到Node1目录中的六个 VHD 并命名s2d1.vhdxs2d6.vhdx 。 每个 Add-VMHardDiskDrive 命令都会向 VM 添加一个 VHD,因此该命令将重复六次,并使用不同的 -Path 参数值。

    之后, Node1 VM 上附加了六个 VHD。 这些 VHDX 用于在 VM 上启用存储空间直通,这是 Azure 本地部署所必需的:

     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d1.vhdx"
     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d2.vhdx"
     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d3.vhdx"
     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d4.vhdx"
     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d5.vhdx"
     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d6.vhdx"
    
  14. 禁用时间同步:

    Get-VMIntegrationService -VMName "Node1" |Where-Object {$_.name -like "T*"}|Disable-VMIntegrationService
    
  15. 启用嵌套虚拟化:

    Set-VMProcessor -VMName "Node1" -ExposeVirtualizationExtensions $true
    
  16. 启动 VM:

    Start-VM "Node1"
    

在虚拟主机 VM 上安装 OS

完成以下步骤,在虚拟主机 VM 上安装和配置 Azure Stack HCI OS:

  1. 下载 Azure 本地 23H2 软件安装 Azure Stack HCI 操作系统

  2. 更新密码,因为这是第一个 VM 启动。 确保密码满足 Azure 复杂性要求。 密码至少为 12 个字符,包含 1 个大写字符、1 个小写字符、1 个数字和 1 个特殊字符。

  3. 更改密码后,会自动加载服务器配置工具(SConfig)。 15选择此选项可退出命令行,然后从该命令行运行后续步骤。

  4. 运行以下命令启动 SConfig:

      SConfig
    

    有关如何使用 SConfig 的信息,请参阅 “使用服务器配置”工具(SConfig)进行配置。

  5. 将主机名更改为 Node1. 在 SConfig 中使用选项2Computer name执行此操作。

    主机名更改会导致重启。 当系统提示重启时,请输入 Yes 并等待重启完成。 SConfig 会自动启动。

  6. 在物理主机中,通过将分配的 MAC 地址映射到来宾 OS 上的相应网络适配器,运行 Get-VMNetworkAdapter cmdlet ForEach-Object 来配置 VM Node1 的四个网络适配器名称。

    1. Get-VMNetworkAdapter cmdlet 用于检索 VM 上每个 NIC 的网络适配器对象,其中 -VMName 参数指定 VM 的名称,参数 -Name 指定网络适配器的名称。 MacAddress然后访问网络适配器对象的属性以获取 MAC 地址:
    Get-VMNetworkAdapter -VMName "Node1" -Name "NIC1"
    
    1. MAC 地址是十六进制数字的字符串。 该 ForEach-Object cmdlet 用于通过插入特定间隔的连字符来设置此字符串的格式。 具体而言, Insert 字符串对象的方法用于在字符串中的第 2、5、8、11 和 14 位插入连字符。 然后,该 join 运算符用于将生成的字符串数组串联到一个字符串中,每个元素之间有空格。

    2. VM 上四个 NIC 中的每一个都重复这些命令,每个 NIC 的最终格式化 MAC 地址存储在单独的变量中:

    ($Node1finalmacNIC1, $Node1finalmacNIC2, $Node1finalmacNIC3, $Node1finalmacNIC4).
    
    1. 以下脚本输出每个 NIC 的最终格式化 MAC 地址:
    $Node1macNIC1 = Get-VMNetworkAdapter -VMName "Node1" -Name "NIC1"
    $Node1macNIC1.MacAddress
    $Node1finalmacNIC1=$Node1macNIC1.MacAddress|ForEach-Object{($_.Insert(2,"-").Insert(5,"-").Insert(8,"-").Insert(11,"-").Insert(14,"-"))-join " "}
    $Node1finalmacNIC1
    
    $Node1macNIC2 = Get-VMNetworkAdapter -VMName "Node1" -Name "NIC2"
    $Node1macNIC2.MacAddress
    $Node1finalmacNIC2=$Node1macNIC2.MacAddress|ForEach-Object{($_.Insert(2,"-").Insert(5,"-").Insert(8,"-").Insert(11,"-").Insert(14,"-"))-join " "}
    $Node1finalmacNIC2
    
    $Node1macNIC3 = Get-VMNetworkAdapter -VMName "Node1" -Name "NIC3"
    $Node1macNIC3.MacAddress
    $Node1finalmacNIC3=$Node1macNIC3.MacAddress|ForEach-Object{($_.Insert(2,"-").Insert(5,"-").Insert(8,"-").Insert(11,"-").Insert(14,"-"))-join " "}
    $Node1finalmacNIC3
    
    $Node1macNIC4 = Get-VMNetworkAdapter -VMName "Node1" -Name "NIC4"
    $Node1macNIC4.MacAddress
    $Node1finalmacNIC4=$Node1macNIC4.MacAddress|ForEach-Object{($_.Insert(2,"-").Insert(5,"-").Insert(8,"-").Insert(11,"-").Insert(14,"-"))-join " "}
    $Node1finalmacNIC4
    
  7. Node1获取 VM 本地管理员凭据,然后重命名Node1

    $cred = get-credential
    
  8. 重命名和映射 NIC。Node1 重命名基于 Hyper-V 首次启动 VM 时分配的 NIC 的 MAC 地址。 这些命令应直接从主机运行:

    Get-NetAdapter使用命令检索 VM 上的物理网络适配器,根据其 MAC 地址筛选它们,然后使用 cmdlet 将其重命名为匹配的适配器Rename-NetAdapter

    对于 VM 上的四个 NIC 中的每一个,都会重复此操作,并分别指定了 MAC 地址和每个 NIC 的新名称。 这将在 Hyper-V 管理器中 NIC 的名称与 VM OS 中 NIC 的名称之间建立映射:

    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {param($Node1finalmacNIC1) Get-NetAdapter -Physical | Where-Object {$_.MacAddress -eq $Node1finalmacNIC1} | Rename-NetAdapter -NewName "NIC1"} -ArgumentList $Node1finalmacNIC1
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {param($Node1finalmacNIC2) Get-NetAdapter -Physical | Where-Object {$_.MacAddress -eq $Node1finalmacNIC2} | Rename-NetAdapter -NewName "NIC2"} -ArgumentList $Node1finalmacNIC2
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {param($Node1finalmacNIC3) Get-NetAdapter -Physical | Where-Object {$_.MacAddress -eq $Node1finalmacNIC3} | Rename-NetAdapter -NewName "NIC3"} -ArgumentList $Node1finalmacNIC3
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {param($Node1finalmacNIC4) Get-NetAdapter -Physical | Where-Object {$_.MacAddress -eq $Node1finalmacNIC4} | Rename-NetAdapter -NewName "NIC4"} -ArgumentList $Node1finalmacNIC4
    
  9. 运行以下命令,在 VM Node1 的四个 NIC 上禁用动态主机配置协议(DHCP)。

    注意

    接口不会自动从 DHCP 服务器获取 IP 地址,而是需要手动为其分配 IP 地址:

    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Set-NetIPInterface -InterfaceAlias "NIC1" -Dhcp Disabled}
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Set-NetIPInterface -InterfaceAlias "NIC2" -Dhcp Disabled}
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Set-NetIPInterface -InterfaceAlias "NIC3" -Dhcp Disabled}
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Set-NetIPInterface -InterfaceAlias "NIC4" -Dhcp Disabled}
    
  10. 设置管理 IP、网关和 DNS。 执行以下命令后, Node1 将使用 NIC1 指定的 IP 地址、子网掩码、默认网关和 DNS 服务器地址配置网络接口。 确保管理 IP 地址可以解析 Active Directory,并具有与 Internet 的出站连接:

    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {New-NetIPAddress -InterfaceAlias "NIC1" -IPAddress "192.168.44.201" -PrefixLength 24 -AddressFamily IPv4 -DefaultGateway "192.168.44.1"}
    
    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Set-DnsClientServerAddress -InterfaceAlias "NIC1" -ServerAddresses "192.168.1.254"}
    
  11. 启用 Hyper-V 角色。 此命令重启 VM Node1

    Invoke-Command -VMName "Node1"
    -Credential $cred -ScriptBlock {Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All }
    
  12. 重启并安装 Hyper-V 角色后 Node1 ,安装 Hyper-V 管理工具:

    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Install-WindowsFeature -Name Hyper-V -IncludeManagementTools}
    
  13. 虚拟机准备就绪后,必须在 Azure 中将其注册并分配为 Arc 资源的权限

  14. 在 Azure 中将计算机注册为 Arc 资源并安装所有必需扩展后,请选择以下方法之一,从 Azure 部署 Azure 本地。

如果计划测试多节点部署,请重复上述过程以获取额外的节点。 确保虚拟主机名和管理 IP 是唯一的,并且位于同一子网上:

后续步骤