部署虚拟 Azure 本地版本 23H2 系统
本文内容
先决条件
设置虚拟交换机
创建虚拟主机
在虚拟主机 VM 上安装 OS
后续步骤
适用于:Azure Local 2311.2 及更高版本
重要
Azure Stack HCI 现在是 Azure 本地的一部分。 了解详细信息 。
本文介绍如何在运行 Windows Server 2022、Windows 11 或更高版本操作系统(OS)上的 Hyper-V 的主机系统上部署运行版本 23H2 的虚拟化 Azure 本地实例。
需要 Azure 本地虚拟部署的管理员权限,并且应该熟悉现有的 Azure 本地解决方案。 部署可能需要大约 2.5 小时才能完成。
重要
Azure Local 版本 23H2 的虚拟部署仅用于教育和演示目的。 Microsoft 支持部门不支持虚拟部署。
下面是虚拟部署的硬件、网络和其他先决条件:
以下是成功部署 Azure 本地版本 23H2 的最低要求。
在开始之前,请确保:
在开始之前,请确保每个虚拟主机系统都可以指定以下资源来预配虚拟化的 Azure 本地实例:
展开表
组件
要求
虚拟机(VM)类型
已启用安全启动和受信任的平台模块(TPM)。
vCPU
四个核心。
内存
至少为 24 GB。
网络
至少两个连接到内部网络的网络适配器。 必须启用 MAC 欺骗。
启动磁盘
一个磁盘,用于从 ISO 安装 Azure Stack HCI 操作系统。 至少 200 GB
用于存储空间直通的硬盘
四个动态扩展磁盘。 最大磁盘大小为 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
在物理主计算机上,运行以下 PowerShell 命令来创建内部虚拟交换机。 使用此开关可确保隔离 Azure 本地部署。
New-VMSwitch -Name "internal_switch_name" -SwitchType Internal -NetAdapterName "network_adapter_name"
创建内部虚拟交换机后,会在主机上创建新的网络适配器。 必须为此网络适配器分配 IP 地址,才能在连接到此内部交换机网络后成为虚拟主机的默认网关。 还需要定义虚拟主机连接的 NAT 网络子网。
以下示例脚本创建一个具有前缀HCINAT
的 NAT 网络192.168.44.0/24
,并使用主机上的接口将 IP 定义为192.168.44.1
网络的默认网关:
Get-NetAdapter -Name "vEthernet (InternalSwitch)"
New-NetIPAddress -IPAddress 192.168 .44.1 -PrefixLength 24 -InterfaceAlias "vEthernet (InternalSwitch)"
New-NetNat -Name "HCINAT" -InternalIPInterfaceAddressPrefix 192.168 .44.0 /24
使用以下配置创建用作虚拟主机的 VM。 可以使用 Hyper-V 管理器或 PowerShell 创建此 VM:
按照以下步骤创建使用 PowerShell cmdlet 命名 Node1
的示例 VM:
创建 VM:
New-VHD -Path "your_VHDX_path" -SizeBytes 127 GB
New-VM -Name Node1 -MemoryStartupBytes 20 GB -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 1024 GB
new-VHD -Path "C:\vms\Node1\s2d2.vhdx" -SizeBytes 1024 GB
new-VHD -Path "C:\vms\Node1\s2d3.vhdx" -SizeBytes 1024 GB
new-VHD -Path "C:\vms\Node1\s2d4.vhdx" -SizeBytes 1024 GB
new-VHD -Path "C:\vms\Node1\s2d5.vhdx" -SizeBytes 1024 GB
new-VHD -Path "C:\vms\Node1\s2d6.vhdx" -SizeBytes 1024 GB
将驱动器附加到为 VM 新建的 VHDX。 在这些命令中C:\vms\Node1
,将添加到s2d1.vhdx
目录中的六个 VHD 并命名s2d6.vhdx
为 Node1
。 每个 Add-VMHardDiskDrive
命令都会向 VM 添加一个 VHD,因此该命令将重复六次,并使用不同的 -Path
参数值。
之后,Node1
VM 上便连接了 4 个 VHD。 这些 VHDX 用于在 VM 上启用存储空间直通,这是 Azure Stack HCI 部署所必需的:
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"
禁用时间同步:
Get-VMIntegrationService -VMName "Node1" |Where-Object {$_ .name -like "T*" }|Disable-VMIntegrationService
启用嵌套虚拟化:
Set-VMProcessor -VMName "Node1" -ExposeVirtualizationExtensions $true
启动 VM:
Start-VM "Node1"
完成以下步骤,在虚拟主机 VM 上安装和配置 Azure Stack HCI OS:
下载 Azure 本地 23H2 软件 并 安装 Azure Stack HCI 操作系统 。
更新密码,因为这是第一个 VM 启动。 确保密码满足 Azure 复杂性要求。 密码至少为 12 个字符,包含 1 个大写字符、1 个小写字符、1 个数字和 1 个特殊字符。
更改密码后,会自动加载服务器配置工具(SConfig)。 15
选择此选项可退出命令行,然后从该命令行运行后续步骤。
运行以下命令启动 SConfig:
SConfig
有关如何使用 SConfig 的信息,请参阅 “使用服务器配置”工具(SConfig) 进行配置。
将主机名更改为 Node1
. 在 SConfig 中使用选项2
Computer name
执行此操作。
主机名更改会导致重启。 当系统提示重启时,请输入 Yes
并等待重启完成。 SConfig 会自动启动。
在物理主机中,通过将分配的 MAC 地址映射到来宾 OS 上的相应网络适配器,运行 Get-VMNetworkAdapter
cmdlet ForEach-Object
来配置 VM Node1
的四个网络适配器名称。
该 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 本地。
如果计划测试多节点部署,请重复上述过程以获取额外的节点。 确保虚拟主机名和管理 IP 是唯一的,并且位于同一子网上: