使用 Windows PowerShell 建立 Azure Stack HCI 叢集

適用於:Azure Stack HCI 版本 22H2 和 21H2

警告

本文中提供的部署指示適用於舊版 Azure Stack HCI 22H2。 針對新的部署,建議您使用最新的正式推出版本 Azure Stack HCI 版本 23H2。 如需部署指示,請參閱 關於 Azure Stack HCI 版本 23H2 部署

在本文中,您將瞭解如何使用 Windows PowerShell 來建立使用 儲存空間直接存取 的 Azure Stack HCI 超融合式叢集。 如果您想要使用 Windows Admin Center 中的「叢集建立」精靈來建立叢集,請參閱使用 Windows Admin Center 建立叢集

注意

如果您要安裝 Azure Stack HCI 21H2 的單一伺服器,請使用 PowerShell 來建立叢集。

您可以選擇兩種叢集類型的其中一種:

  • 標準叢集:包含一或兩個皆位於單一站台的伺服器節點。
  • 延展式叢集:至少包含四個跨兩個站台的伺服器節點,每個站台至少有兩個節點。

針對單一伺服器案例,請針對一部伺服器完成相同的指示。

注意

單一伺服器設定不支援延展式叢集。

在本文中,我們會建立名為Cluster1的範例叢集,其中包含四個名為 Server1、Server2、Server3 和 Server4 的伺服器節點。

針對延展式叢集案例,我們使用ClusterS1作為名稱,並使用跨月臺 Site1 和 Site2 延伸的相同四個伺服器節點。

如需延展式叢集的詳細資訊,請參閱延展式叢集的概觀

若要以最少或沒有額外的硬體測試 Azure Stack HCI,您可以參閱 Azure Stack HCI 評估指南。 在本指南中,我們會逐步引導您使用 Azure VM 內的巢狀虛擬化來體驗 Azure Stack HCI。 或者,請嘗試建立 Azure Stack HCI 的 VM 實驗室教學課程,在所選的伺服器上使用巢狀虛擬化建立自己的私人實驗室環境來部署執行 Azure Stack HCI 的 VM 以供叢集之用。

開始之前

在您開始前,請確定:

使用 Windows PowerShell

您可以在主機伺服器的 RDP 工作階段中本機執行 PowerShell,或從管理電腦遠端執行 PowerShell。 本文涵蓋遠程選項。

從管理計算機執行 PowerShell 時,請以您要管理的伺服器或叢集名稱包含 -Name-Cluster 或參數。 此外,使用伺服器節點的參數時 -ComputerName ,您可能需要指定 FQDN (完整功能變數名稱) 。

您需要適用於 Hyper-V 和故障轉移叢集的遠端伺服器管理工具 (RSAT) Cmdlet 和 PowerShell 模組。 如果管理電腦上的 PowerShell 工作階段中尚未提供 Cmdlet 和模組,您可以使用下列命令來新增這些 Cmdlet 和模組: Add-WindowsFeature RSAT-Clustering-PowerShell

步驟 1:設定伺服器

首先,連線到每部伺服器、將它們加入網域 (管理計算機所在的相同網域) ,然後安裝必要的角色和功能。

步驟 1.1:連線至伺服器

為了連線至伺服器,您必須先具備網路連線,加入相同網域或完全信任的網域,以及具有伺服器的本機系統管理權限。

開啟 PowerShell,並使用您要連線之伺服器的完整功能變數名稱或 IP 位址。 在每個伺服器上執行下列命令後,系統將提是您輸入密碼。

在此範例中,我們假設伺服器名為 Server1、Server2、Server3 和 Server4:

Enter-PSSession -ComputerName "Server1" -Credential "Server1\Administrator"

以下是另一個執行相同動作的範例:

$myServer1 = "Server1"
$user = "$myServer1\Administrator"

Enter-PSSession -ComputerName $myServer1 -Credential $user

提示

從您的管理電腦執行 PowerShell 命令時,您可能會收到錯誤 (例如 WinRM 無法處理要求)。若要修正此錯誤,請使用 PowerShell 將每個伺服器新增至管理電腦上的信任主機清單。 此清單支援萬用字元,例如 Server*

Set-Item WSMAN:\Localhost\Client\TrustedHosts -Value Server1 -Force

若要檢視信任的主機清單,請輸入 Get-Item WSMAN:\Localhost\Client\TrustedHosts

若要清空清單,請輸入 Clear-Item WSMAN:\Localhost\Client\TrustedHost

步驟 1.2:加入網域並新增網域帳戶

在上一個步驟中,您已使用 本機系統管理員帳戶 <ServerName>\Administrator連接到每個伺服器節點。

若要繼續,您必須將伺服器加入網域,並使用每部伺服器上的本機 Administrators 群組中的網域帳戶。

使用 Enter-PSSession Cmdlet 連線至每個伺服器每個伺服器,並使用下列 Cmdlet 以替代伺服器名稱、網域名稱和網域認證:

Add-Computer -NewName "Server1" -DomainName "contoso.com" -Credential "Contoso\User" -Restart -Force  

如果您的系統管理員帳戶不是 Domain Admins 群組的成員,請在每個伺服器上將您的系統管理員帳戶新增至本機系統管理員群組,或您甚至可以新增您用於系統管理員的群組。 若要這麼做,您可使用下列命令:

Add-LocalGroupMember -Group "Administrators" -Member "king@contoso.local"

步驟 1.3:安裝角色和功能

接著,在叢集的每個伺服器上安裝必要 Windows 角色和功能。 以下是要安裝的角色:

  • BitLocker
  • 資料中心橋接
  • 容錯移轉叢集
  • 檔案伺服器
  • FS-Data-Deduplication 模組
  • Hyper-V
  • Hyper-V PowerShell
  • RSAT-Clustering-PowerShell 模組
  • RSAT-AD-PowerShell 模組
  • NetworkATC
  • NetworkHUD
  • SMB 頻寬限制
  • 儲存體複本 (針對延展式叢集)

對每部伺服器使用下列命令 (如果您透過遠端桌面連線,則在此處和後續命令省略 -ComputerName 參數):

Install-WindowsFeature -ComputerName "Server1" -Name "BitLocker", "Data-Center-Bridging", "Failover-Clustering", "FS-FileServer", "FS-Data-Deduplication", "FS-SMBBW", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "NetworkHUD", "Storage-Replica" -IncludeAllSubFeature -IncludeManagementTools

若要同時在叢集中的所有伺服器上執行命令,請使用下列指令碼,在開始前修改變數清單以符合您的環境:

# Fill in these variables with your values
$ServerList = "Server1", "Server2", "Server3", "Server4"
$FeatureList = "BitLocker", "Data-Center-Bridging", "Failover-Clustering", "FS-FileServer", "FS-Data-Deduplication", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "NetworkHUD", "FS-SMBBW", "Storage-Replica"

# This part runs the Install-WindowsFeature cmdlet on all servers in $ServerList, passing the list of features in $FeatureList.
Invoke-Command ($ServerList) {
    Install-WindowsFeature -Name $Using:Featurelist -IncludeAllSubFeature -IncludeManagementTools
}

接著,重新啟動所有伺服器:

$ServerList = "Server1", "Server2", "Server3", "Server4"
Restart-Computer -ComputerName $ServerList -WSManAuthentication Kerberos

步驟 2:準備叢集設定

接下來,確認您的伺服器已準備好進行叢集。

作為健全狀況檢查,請考慮執行下列命令,以確定您的伺服器尚未屬於叢集:

使用 Get-ClusterNode 來顯示所有節點:

Get-ClusterNode

使用 Get-ClusterResource 來顯示所有叢集節點:

Get-ClusterResource

使用 Get-ClusterNetwork 來顯示所有叢集網路:

Get-ClusterNetwork

步驟 2.1:準備磁碟機

啟用儲存空間直接存取之前,請確定您的永久性磁碟機是空的。 執行下列指令碼,以移除任何舊的磁碟分割和其他資料。

注意

從指令碼中排除任何連結至伺服器節點的卸除式磁碟機。 例如,如果您從伺服器節點在本機執行此指令碼,您不想要抹除可能用來部署叢集的卸除式磁碟機。

# Fill in these variables with your values
$ServerList = "Server1", "Server2", "Server3", "Server4"

Invoke-Command ($ServerList) {
    Update-StorageProviderCache
    Get-StoragePool | ? IsPrimordial -eq $false | Set-StoragePool -IsReadOnly:$false -ErrorAction SilentlyContinue
    Get-StoragePool | ? IsPrimordial -eq $false | Get-VirtualDisk | Remove-VirtualDisk -Confirm:$false -ErrorAction SilentlyContinue
    Get-StoragePool | ? IsPrimordial -eq $false | Remove-StoragePool -Confirm:$false -ErrorAction SilentlyContinue
    Get-PhysicalDisk | Reset-PhysicalDisk -ErrorAction SilentlyContinue
    Get-Disk | ? Number -ne $null | ? IsBoot -ne $true | ? IsSystem -ne $true | ? PartitionStyle -ne RAW | % {
        $_ | Set-Disk -isoffline:$false
        $_ | Set-Disk -isreadonly:$false
        $_ | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false
        $_ | Set-Disk -isreadonly:$true
        $_ | Set-Disk -isoffline:$true
    }
    Get-Disk | Where Number -Ne $Null | Where IsBoot -Ne $True | Where IsSystem -Ne $True | Where PartitionStyle -Eq RAW | Group -NoElement -Property FriendlyName
} | Sort -Property PsComputerName, Count

步驟 2.2:測試叢集設定

在此步驟中,請確定已正確設定伺服器節點以建立叢集。 Test-Cluster Cmdlet 會用來執行測試,以確定您的設定適合以超融合式叢集運作。 下列範例會 -Include 使用 參數搭配指定的特定測試類別,以確保驗證中包含正確的測試。

Test-Cluster -Node $ServerList -Include "Storage Spaces Direct", "Inventory", "Network", "System Configuration"

步驟 3:建立叢集

您現在已準備好使用您在上述步驟中驗證的伺服器節點來建立叢集。

建立叢集時,您可能會收到指出的警告 - "There were issues while creating the clustered role that may prevent it from starting. For more information, view the report file below." 您可以安全地忽略此警告。 此警告是因為叢集見證沒有可用的磁碟。 叢集見證會在後續步驟中建立。

注意

如果伺服器使用靜態 IP 位址,請新增下列參數並指定 IP 位址:-StaticAddress <X.X.X.X>;,來修改下列參數並反映靜態 IP 位址。

$ClusterName="cluster1" 
New-Cluster -Name $ClusterName –Node $ServerList –nostorage

建立叢集之後,可能需要一些時間,才能透過網域中的 DNS 複寫叢集名稱,特別是當工作組伺服器剛新增至 Active Directory 時。 雖然叢集可能會在 Windows Admin Center 中顯示,但仍可能無法進行連線。

請仔細檢查以確保所有叢集資源皆已連線:

Get-Cluster -Name $ClusterName | Get-ClusterResource

如果在一段時間後仍無法成功解析叢集,在大部分情況下,您可以使用其中一個叢集伺服器的名稱來進行連線,而非使用叢集名稱。

步驟 4:手動設定主機網路

如果您執行的是 Azure Stack HCI 21H2 版或更新版本,Microsoft 建議您使用網路 ATC 以部署主機網路。 否則,如需特定需求和資訊,請參閱主機網路需求

如果您為適配卡指定一或多個意圖類型,網路 ATC 可以自動化預定網路設定的部署。 如需特定意圖類型的詳細資訊,請參閱: 網路流量類型

步驟 4.1:檢查實體介面卡

在其中一個叢集節點上,執行 Get-NetAdapter 以檢閱實體介面卡。 確定叢集中的每個節點都有相同命名的實體介面卡且回報的狀態為 'Up' (啟動)。

Get-NetAdapter -Name pNIC01, pNIC02 -CimSession $ClusterName | Select Name, PSComputerName

如果叢集中的各個節點有不同的實體介面卡名稱,您可以執行 Rename-NetAdapter 重新命名。

Rename-NetAdapter -Name oldName -NewName newName

步驟 4.2:設定意圖

在此範例中,會建立指定計算和儲存空間的意圖。 如需更多意圖範例,請參閱使用網路 ATC 簡化主機網路

執行下列命令,將儲存空間和計算意圖類型新增至 pNIC01 和 pNIC02。 請注意,我們會指定 -ClusterName 參數。

Add-NetIntent -Name Cluster_ComputeStorage -Compute -Storage -ClusterName $ClusterName -AdapterName pNIC01, pNIC02

命令應會在初始驗證之後立即傳回。

步驟 4.3:驗證意圖部署

執行 Get-NetIntent Cmdlet 查看叢集意圖。 如果有多個意圖,您可以指定 Name 參數以僅查看特定意圖的詳細資料。

Get-NetIntent -ClusterName $ClusterName

若要查看意圖的佈建狀態,請執行 Get-NetIntentStatus 命令:

Get-NetIntentStatus -ClusterName $ClusterName -Name Cluster_ComputeStorage

請注意,狀態參數會顯示正在佈建、正在驗證、成功、失敗。

狀態應該會在幾分鐘內顯示成功。 如果成功狀態未發生,或您看到狀態參數失敗,請檢查事件查看器中是否有問題。

注意

網路 ATC 目前不會設定任何其受管理介面卡的 IP 位址。 Get-NetIntentStatus 回報狀態已完成後,您應將 IP 位址新增至介面卡。

步驟 5:設定站台 (延展式叢集)

只有在您在兩個月臺之間建立延展式叢集,且每個站台中至少有兩部伺服器時,才適用這項工作。

注意

如果您事先設定 Active Directory 網站和服務,則不需要依照下一節所述手動建立網站。

步驟 5.1:建立站台

在下列 Cmdlet 中, FaultDomain 只是網站的另一個名稱。 此範例會使用 "ClusterS1" 作為延展式叢集的名稱。

New-ClusterFaultDomain -CimSession $ClusterName -FaultDomainType Site -Name "Site1"
New-ClusterFaultDomain -CimSession $ClusterName -FaultDomainType Site -Name "Site2"

Get-ClusterFaultDomain使用 Cmdlet 確認已針對叢集建立這兩個月臺。

Get-ClusterFaultDomain -CimSession $ClusterName

步驟 5.2:指派伺服器節點

接下來,我們會將四個伺服器節點指派給各自的月臺。 在下列範例中,Server1 和 Server2 會指派給 Site1,而 Server3 和 Server4 則會指派給 Site2。

Set-ClusterFaultDomain -CimSession $ClusterName -Name "Server1", "Server2" -Parent "Site1"
Set-ClusterFaultDomain -CimSession $ClusterName -Name "Server3", "Server4" -Parent "Site2"

使用 Get-ClusterFaultDomain Cmdlet 確認節點皆位於正確的站台。

Get-ClusterFaultDomain -CimSession $ClusterName

步驟 5.3:設定慣用站台

您也可以定義全域慣用站台,這表示指定的資源和群則皆必須在慣用的站台上執行。 您也可以使用下列命令,在站台層級中定義此設定:

(Get-Cluster).PreferredSite = "Site1"

為延伸叢集指定慣用的站台有下列優點:

  • 冷啟動 - 在冷啟動期間,虛擬機器會置於慣用的站台

  • 仲裁投票

    • 使用動態仲裁時,加權會從被動 (複寫) 月臺先減少,以確保當所有其他專案相等時,慣用的網站會存留。 此外,伺服器節點會在非對稱網路連線失敗等事件之後,先從被動月臺剪除。

    • 在兩個月臺的仲裁分割期間,如果無法連絡叢集見證,則會自動選取慣用的網站以贏得。 被動站台中的伺服器節點接著會退出叢集成員資格,讓叢集能夠同時失去 50% 的投票。

您也可以在叢集角色或群組層級設定慣用的站台。 在此情況下,您可以針對每個虛擬機群組設定不同的慣用月臺,讓月台成為作用中,並針對特定虛擬機偏好使用。

步驟 5.4:使用網路 ATC 設定延展式叢集

22H2 版之後,您可以使用網路 ATC 來設定 Stretch 叢集。 網路 ATC 會將 Stretch 新增為 22H2 版的意圖類型。 若要使用網路 ATC 使用 Stretch 叢集部署意圖,請執行下列命令:

Add-NetIntent -Name StretchIntent -Stretch -AdapterName "pNIC01", "pNIC02"

使用網路 ATC 部署時,延展意圖也可以與其他意圖結合。

SiteOverrides

根據步驟 5.1-5.3,您可以將預先建立的網站新增至使用網路 ATC 部署的延展意圖。 網路 ATC 會使用 SiteOverrides 來處理此作業。 若要建立 SiteOverride,請執行:

 $siteOverride = New-NetIntentSiteOverrides

建立 siteOverride 之後,您可以設定 siteOverride 的任何屬性。 請確定 siteOverride 的名稱屬性名稱與月臺在 ClusterFaultDomain 中的名稱完全相同。 ClusterFaultDomain 與 siteOverride 之間的名稱不符會導致未套用 siteOverride。

您可以針對特定 siteOverride 設定的屬性包括:Name、StorageVlan 和 StretchVlan。 例如,您會使用下列兩個網站建立 2 個 siteOverrides: site1 和 site2:

$siteOverride1 = New-NetIntentSiteOverrides
$siteoverride1.Name = "site1"
$siteOverride1.StorageVLAN = 711
$siteOverride1.StretchVLAN = 25

$siteOverride2 = New-NetIntentSiteOverrides
$siteOverride2.Name = "site2"
$siteOverride2.StorageVLAN = 712
$siteOverride2.StretchVLAN = 26

您可以在 PowerShell 視窗中執行 $siteOverride1$siteOverride2 以確定所有屬性都以所需的方式設定。

最後,若要將一或多個siteOverrides 新增至您的意圖,請執行:

Add-NetIntent -Name StretchIntent -Stretch -AdapterName "pNIC01" , "pNIC02" -SiteOverrides $siteOverride1, $siteOverride2

步驟 6:啟用儲存空間直接存取

建立叢集後,請使用 Enable-ClusterStorageSpacesDirect Cmdlet 來啟用儲存空間直接存取並自動執行下列動作:

  • 建立存放集區:為叢集建立具有名稱的存放集區,例如 "Cluster1 Storage Pool"。

  • 建立叢集效能歷程記錄磁碟:在存放集區中,建立叢集效能歷程記錄虛擬磁碟。

  • 建立資料和記錄磁碟區:在存放集區中,建立資料磁碟區和記錄磁碟區。

  • 設定 儲存空間直接存取 快取:如果有一個以上的媒體 (磁碟驅動器) 類型可供 儲存空間直接存取 使用,它會在大部分情況下,以快取裝置 (讀取和寫入速度最快) 。

  • 建立階層:建立兩個階層作為預設階層。 一個稱為「容量」,另一個稱為「效能」。 此 Cmdlet 會分析裝置,並使用混合的裝置類型和復原功能來設定每一層。

針對單一伺服器案例,唯一 FaultDomainAwarenessDefault 是 PhysicalDisk。 Enable-ClusterStorageSpacesDirect Cmdlet 會偵測單一伺服器,並在啟用期間自動將 FaultDomainAwarenessDefault 設定為 PhysicalDisk。

針對延展式叢集, Enable-ClusterStorageSpacesDirect Cmdlet 也會:

  • 檢查是否已設定網站
  • 決定節點位於的站台
  • 決定每個節點的可用儲存空間
  • 檢查以查看是否已在每個節點上安裝儲存體複本功能
  • 建立每個站台的存放集區,並以站台的名稱加以識別
  • 在每個存放集區中建立資料和記錄磁碟區 (每一站台一組)

下列命令會在多節點叢集上啟用儲存空間直接存取。 您也可以為存放集區指定易記的名稱,如下所示:

Enable-ClusterStorageSpacesDirect -PoolFriendlyName "$ClusterName Storage Pool" -CimSession $ClusterName

以下是在單一節點叢集上停用記憶體快取的範例:

Enable-ClusterStorageSpacesDirect -CacheState Disabled

若要查看存放集區,請使用下列命令:

Get-StoragePool -CimSession $ClusterName

建立叢集之後

現在已建立叢集,您需要完成其他重要工作:

後續步驟