部署虚拟 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:
创建 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"
禁用动态内存:
Set-VMMemory -VMName "Node1" -DynamicMemoryEnabled $false
禁用 VM 检查点:
Set-VM -VMName "Node1" -CheckpointType Disabled
删除在上一步中创建 VM 期间创建的默认网络适配器:
Get-VMNetworkAdapter -VMName "Node1" | Remove-VMNetworkAdapter
使用自定义名称将新的网络适配器添加到 VM。 此示例添加四个 NIC,但如果需要,只需添加两个 NIC。 使用四个 NIC 可以测试两个网络意向(
Mgmt_Compute
Storage
例如),每个 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"
将所有网络适配器附加到虚拟交换机。 指定创建的虚拟交换机的名称,无论是外部没有 NAT,还是使用 NAT 在内部:
Get-VmNetworkAdapter -VmName "Node1" |Connect-VmNetworkAdapter -SwitchName "virtual_switch_name"
在 VM
Node1
上的所有网络适配器上启用 MAC 欺骗。 MAC 地址欺骗是一种技术,它允许网络适配器通过更改其媒体访问控制(MAC)地址伪装为另一种地址。 在计划使用嵌套虚拟化的情况下,这是必需的:Get-VmNetworkAdapter -VmName "Node1" |Set-VmNetworkAdapter -MacAddressSpoofing On
为 VM
Node1
上的所有网络适配器启用中继端口(仅适用于多节点部署)。 此脚本将特定 VM 的网络适配器配置为在中继模式下运行。 这通常用于多节点部署,希望允许多个虚拟局域网(VLAN)通过单个网络适配器进行通信:Get-VmNetworkAdapter -VmName "Node1" |Set-VMNetworkAdapterVlan -Trunk -NativeVlanId 0 -AllowedVlanIdList 0-1000
创建新的密钥保护程序并将其分配给
Node1
。 这通常在 Hyper-V 中设置受保护的构造的上下文中完成,这是一项安全功能,可保护 VM 免受未经授权的访问或篡改。执行以下脚本后,
Node1
将为其分配一个新的密钥保护程序。 此密钥保护程序可保护 VM 的密钥,帮助保护 VM 免受未经授权的访问或篡改:$owner = Get-HgsGuardian UntrustedGuardian $kp = New-HgsKeyProtector -Owner $owner -AllowUntrustedRoot Set-VMKeyProtector -VMName "Node1" -KeyProtector $kp.RawData
为
Node1
. 启用 vTPM 通过在 VM 上启用 vTPM,可以使用 BitLocker 和其他需要在 VM 上使用 TPM 的功能。 执行此命令后,Node1
将启用 vTPM,假设主机的硬件和 VM 的配置支持此功能。Enable-VmTpm -VMName "Node1"
将虚拟处理器更改为
8
:Set-VmProcessor -VMName "Node1" -Count 8
创建要用作启动磁盘和硬盘的额外驱动器,以便存储空间直通。 执行这些命令后,将在目录中创建
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
将驱动器附加到为 VM 新建的 VHDX。 在这些命令中
C:\vms\Node1
,将添加到Node1
目录中的六个 VHD 并命名s2d1.vhdx
为s2d6.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"
禁用时间同步:
Get-VMIntegrationService -VMName "Node1" |Where-Object {$_.name -like "T*"}|Disable-VMIntegrationService
启用嵌套虚拟化:
Set-VMProcessor -VMName "Node1" -ExposeVirtualizationExtensions $true
启动 VM:
Start-VM "Node1"
在虚拟主机 VM 上安装 OS
完成以下步骤,在虚拟主机 VM 上安装和配置 Azure Stack HCI OS:
更新密码,因为这是第一个 VM 启动。 确保密码满足 Azure 复杂性要求。 密码至少为 12 个字符,包含 1 个大写字符、1 个小写字符、1 个数字和 1 个特殊字符。
更改密码后,会自动加载服务器配置工具(SConfig)。
15
选择此选项可退出命令行,然后从该命令行运行后续步骤。运行以下命令启动 SConfig:
SConfig
有关如何使用 SConfig 的信息,请参阅 “使用服务器配置”工具(SConfig)进行配置。
将主机名更改为
Node1
. 在 SConfig 中使用选项2
Computer name
执行此操作。主机名更改会导致重启。 当系统提示重启时,请输入
Yes
并等待重启完成。 SConfig 会自动启动。在物理主机中,通过将分配的 MAC 地址映射到来宾 OS 上的相应网络适配器,运行
Get-VMNetworkAdapter
cmdletForEach-Object
来配置 VMNode1
的四个网络适配器名称。- 该
Get-VMNetworkAdapter
cmdlet 用于检索 VM 上每个 NIC 的网络适配器对象,其中-VMName
参数指定 VM 的名称,参数-Name
指定网络适配器的名称。MacAddress
然后访问网络适配器对象的属性以获取 MAC 地址:
Get-VMNetworkAdapter -VMName "Node1" -Name "NIC1"
MAC 地址是十六进制数字的字符串。 该
ForEach-Object
cmdlet 用于通过插入特定间隔的连字符来设置此字符串的格式。 具体而言,Insert
字符串对象的方法用于在字符串中的第 2、5、8、11 和 14 位插入连字符。 然后,该join
运算符用于将生成的字符串数组串联到一个字符串中,每个元素之间有空格。VM 上四个 NIC 中的每一个都重复这些命令,每个 NIC 的最终格式化 MAC 地址存储在单独的变量中:
($Node1finalmacNIC1, $Node1finalmacNIC2, $Node1finalmacNIC3, $Node1finalmacNIC4).
- 以下脚本输出每个 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
- 该
Node1
获取 VM 本地管理员凭据,然后重命名Node1
:$cred = get-credential
重命名和映射 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
运行以下命令,在 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}
设置管理 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"}
启用 Hyper-V 角色。 此命令重启 VM
Node1
:Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All }
重启并安装 Hyper-V 角色后
Node1
,安装 Hyper-V 管理工具:Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Install-WindowsFeature -Name Hyper-V -IncludeManagementTools}
虚拟机准备就绪后,必须在 Azure 中将其注册并分配为 Arc 资源的权限 。
在 Azure 中将计算机注册为 Arc 资源并安装所有必需扩展后,请选择以下方法之一,从 Azure 部署 Azure 本地。
使用 Azure 门户 部署 Azure 本地。
使用 Azure 资源管理器 模板部署 Azure 本地。
如果计划测试多节点部署,请重复上述过程以获取额外的节点。 确保虚拟主机名和管理 IP 是唯一的,并且位于同一子网上: