部署虛擬的 Azure 本地系統

適用於:Azure Local 的超融合部署

本文說明如何在運行 Windows Server 2022、Windows 11 或更新作業系統(OS)的主機系統上部署虛擬化的 Azure Local 實例。 主機必須啟用 Hyper-V 才能部署。

你需要管理員權限才能使用 Azure Local 虛擬部署,並且熟悉現有的 Azure Local 解決方案。 部署可能需要大約 2.5 小時才能完成。

重要

Azure Local 的虛擬部署僅用於教育與示範目的。

Microsoft 支援服務 不支援虛擬部署。

必要條件

虛擬部署所需的硬體、網路及其他前置條件如下:

實體主機需求

以下是成功部署 Azure Local 的最低要求。

在您開始前,請確定:

  • 你可以存取一個實體主機系統,該系統在Windows Server 2022、Windows 11或更新版本上運行 Hyper-V。 此主機用於配置虛擬 Azure Local 部署。

  • 您有足夠的容量。 執行虛擬機或容器等實際工作負載需要更多容量。

  • 用於虛擬部署的實體硬體符合下列需求:

    元件 最小值
    處理器 Intel VT-x 或 AMD-V 支援巢狀虛擬化。 如需詳細資訊,請參閱 我的處理器是否支援 Intel® 虛擬化技術?
    記憶體 實體主機必須至少配備 48 GB 記憶體,以支援單一虛擬節點部署。 虛擬主機虛擬機至少應該有 32GB 記憶體。

    實體主機必須至少有 72 GB 記憶體,以支援兩個虛擬節點部署。 每個虛擬主機虛擬機應至少配備 32 GB 記憶體,用於部署及更新應用。
    主機網路適配器 單一網路適配器。
    儲存體 1 TB 固態硬碟(SSD)。

虛擬主機需求

在開始之前,請確保每個虛擬主機系統都能分配以下資源來配置你的虛擬化 Azure Local 實例:

元件 要求
虛擬機 (VM) 類型 已啟用安全啟動和受信任的平台模組(TPM)。
虛擬中央處理器 (vCPU)們 四個核心。
記憶體 至少需要 32 GB。
網路 至少有兩張網路適配器連線到內部網路。 必須啟用 MAC 仿冒。
開機磁碟 一顆磁碟用來安裝 Azure Stack HCI 作業系統,從 ISO 安裝。 至少有 127 GB。
儲存空間直接存取 的硬碟 兩個動態膨脹盤。 磁碟大小上限為 1024 GB。
Hyper-V 整合工具中的時間同步 已停用

注意

這些要求是成功部署 Azure Local 的最低標準。 在執行虛擬機或容器等實際工作負載時,增加虛擬核心和記憶體等容量。

設定虛擬交換器

在虛擬環境中部署 Azure Local 時,你可以使用現有網路,並使用該網路的 IP 位址(如果有的話)。 在這種情況下,您只需要建立外部交換器,並將所有虛擬網路適配器連線到該虛擬交換器。 虛擬主機可以直接連接到你的實體網路,不需要額外設定。

不過,如果你計畫部署 Azure Local 虛擬環境的實體網路 IP 稀少,你可以建立一個啟用 NAT 的內部虛擬交換器,將虛擬主機與實體網路隔離,同時保持對網際網路的外接連線。

下列列出兩個選項的步驟:

使用外部虛擬交換器進行部署

cmdlet new-vmswitch 的參數可能會根據你Windows的作業系統而有所不同。 如需詳細資訊,請參閱 New-VMSwitch

在您的實體主計算機上,執行下列 PowerShell 命令來建立外部虛擬交換器:

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

使用已啟用內部虛擬交換器和 NAT 進行部署

在您的實體主計算機上,執行下列 PowerShell 命令來建立內部虛擬交換器。 使用此交換器確保 Azure Local 部署被隔離。

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網路的預設閘道:

#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 Manager 或 PowerShell 來建立這個虛擬機:

  • Hyper-V 管理員。 欲了解更多資訊,請參見 使用 Hyper-V Manager 建立虛擬機器以鏡像您的實體管理網路。

  • PowerShell Cmdlets。 執行 PowerShell Cmdlet 之前,請務必先調整 虛擬主機需求 中所參考的 VM 組態參數。

請遵循下列步驟,使用 PowerShell Cmdlet 建立名為 Node1 的範例 VM:

  1. 建立虛擬機器:

    New-VHD -Path "your_VHDX_path" -SizeBytes 127GB
    New-VM -Name Node1 -MemoryStartupBytes 32GB -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 可讓您測試兩個網路意圖,例如使用每個兩個 NIC 來測試 Mgmt_ComputeStorage

    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) 位址,看起來像另一個網路介面卡。
    • NetworkATC 團隊負責管理與計算意圖,並依配置提供儲存虛擬網卡。
    Get-VmNetworkAdapter -VmName "Node1" | Set-VmNetworkAdapter -MacAddressSpoofing On -AllowTeaming On
    
  8. 針對 VM Node1上的所有網路適配器啟用主幹埠(僅適用於多節點部署)。 此腳本會設定特定 VM 的網路適配器,以主幹模式運作。 此配置通常用於多節點部署,允許您允許多個虛擬區域網路(VLAN)透過單一網路卡進行通訊:

    Get-VmNetworkAdapter -VmName "Node1" | Set-VMNetworkAdapterVlan -Trunk -NativeVlanId 0 -AllowedVlanIdList 0-1000
    
  9. 建立一個新的金鑰保護器並指派給 Node1。 此步驟使用本地「不可信」守護者,適用於實驗室與測試環境。

    # Create a local guardian for lab/testing if one doesn't already exist
    New-HgsGuardian -Name "UntrustedGuardian" -GenerateCertificates
    
    $owner = Get-HgsGuardian -Name "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. 將虛擬處理器變更為 4

     Set-VmProcessor -VMName "Node1" -Count 4
    
  12. 建立額外的磁碟,分別作為開機磁碟和兩顆硬碟用於 儲存空間直接存取。 執行這些指令後,如本範例所示,會在C:\vms\Node1目錄中建立三個新的 VHDX。

     new-VHD -Path "C:\vms\Node1\OS.vhdx" -SizeBytes 127GB
     new-VHD -Path "C:\vms\Node1\s2d1.vhdx" -SizeBytes 1024GB
     new-VHD -Path "C:\vms\Node1\s2d2.vhdx" -SizeBytes 1024GB
    
  13. 將磁碟驅動器連結至新建立的 VHDX 以供 VM 使用。 在這些指令中,兩個位於 C:\vms\Node1 目錄中且已命名 s2d1.vhdxs2d2.vhdx VHD 會被 Node1加入 。 每個 Add-VMHardDiskDrive 命令都會將一個 VHD 新增至 VM,因此命令會以不同的 -Path 參數值重複六次。

    之後, Node1 虛擬機會接上兩台 VHD。 這些 VHDX 用於在虛擬機上啟用 儲存空間直接存取,這是 Azure Local 部署所必需的:

     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\OS.vhdx"
     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d1.vhdx"
     Add-VMHardDiskDrive -VMName "Node1" -Path "C:\vms\Node1\s2d2.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

請完成以下步驟,在虛擬主機虛擬機上安裝並設定 Azure Stack HCI 作業系統:

  1. 下載23H2作業系統版本以Azure Local部署安裝Azure Stack HCI作業系統

  2. 因為這是虛擬機第一次啟動,請更新密碼。 確保密碼符合 Azure 的複雜度要求:

    1. 密碼至少有14個字元。
    2. 密碼至少包含:
      1. 一個大寫字母。
      2. 一個小寫字母。
      3. 一個數字。
      4. 一個特別的角色。
  3. 變更密碼之後,系統會自動載入伺服器組態工具 (SConfig)。 選取選項 15 以結束命令行,然後從該處執行後續步驟。

  4. 執行下列命令來啟動 SConfig:

      SConfig
    

    如需如何使用 SConfig 的資訊,請參閱 使用伺服器組態工具設定 (SConfig)

  5. 將主機名稱變更為 Node1。 請在 SConfig 中使用選項 2 以用於 Computer name

    主機名變更會導致重新啟動。 當系統提示您重新啟動時,請輸入 Yes 並等候重新啟動完成。 SConfig 會自動再次啟動。

  6. 從實體主機上,執行 Get-VMNetworkAdapterForEach-Object Cmdlet,將指派的 MAC 位址對應至客體作業系統上的相應網路介面卡,以設定 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. Node1 上的網路介面卡重新命名和映射。 重新命名是根據虛擬機首次啟動時 Hyper-V 分配的網卡的 MAC 位址。 這些命令應該直接從主機執行:

    使用 Get-NetAdapter 命令來擷取 VM 上的實體網路適配器,根據其 MAC 位址進行篩選,然後使用 Rename-NetAdapter Cmdlet 將其重新命名為相對應的適配卡。

    對虛擬機上的四個網卡重複此程序,分別指定 MAC 位址與新名稱。 這建立了 Hyper-V Manager 中網卡名稱與虛擬機作業系統中網卡名稱之間的對應關係:

    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,且及對外連接到網際網路:

    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. Node1 重新啟動並安裝 Hyper-V 角色後,安裝 Hyper-V 管理工具:

    Invoke-Command -VMName "Node1" -Credential $cred -ScriptBlock {Install-WindowsFeature -Name Hyper-V -IncludeManagementTools}
    
  13. 虛擬主機準備好後,您必須在 Azure 中註冊並指派權限,作為 Arc 資源。

  14. 當機器在 Azure 註冊為 Arc 資源並安裝所有強制擴充功能後,請選擇以下方法之一從 Azure 部署 Azure Local。

如果你打算測試多節點部署,請重複前述的流程來增加節點。 確定虛擬主機名和管理IP是唯一的,且位於相同的子網上:

下一步