共用方式為


使用 Windows PowerShell 建立 Azure Stack HCI 叢集

適用於:Azure Stack HCI 版本 22H2

警告

本文提供的部署指示適用於舊版 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 群組的成員,請將您的系統管理員帳戶新增至每部伺服器上的本機 Administrators 群組,或更妥善地新增您用於系統管理員的群組。 您可以使用下列命令來執行此動作:

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:測試叢集組態

在此步驟中,請確定已正確設定伺服器節點以建立叢集。 Cmdlet Test-Cluster 可用來執行測試,以確認您的設定適合做為超融合式叢集。 下列範例會使用 -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 位址來反映靜態 IP 位址: -StaticAddress <X.X.X.X>;

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

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

一個很好的檢查,以確保所有叢集資源都在在線:

Get-Cluster -Name $ClusterName | Get-ClusterResource

如果在一段時間后解析叢集未成功,在大部分情況下,您可以使用其中一部叢集伺服器的名稱來連線,而不是叢集名稱。

步驟 4:設定主機網路

Microsoft建議您在執行 Azure Stack HCI 21H2 版或更新版本時,使用 網路 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。 例如,您會使用下列兩個網站 -site1 和 site2 建立 2 個 siteOverrides:

$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 存放集區」 的叢集建立存放集區。

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

  • 建立數據和記錄磁碟區: 在存放集區中建立數據磁碟區和記錄磁碟區。

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

  • 建立層: 建立兩個階層作為預設層。 一個稱為「容量」,另一個稱為「效能」。 此 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

建立叢集之後

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

下一步