適用於:Azure Stack HCI 22H2 版
Important
Azure Stack HCI 現在已成為 Azure Local 的一部分。 然而,舊版的 Azure Stack HCI,例如 22H2,仍會參考 Azure Stack HCI,且不會反映名稱變更。 了解更多。
Warning
本文提供的部署說明適用於較舊的版本,Azure Stack HCI,版本 22H2。 對於新部署,我們建議您使用最新的 Azure Local 版本,詳見「關於 Azure Local 部署」。
在本文中,您將學習如何使用 Windows PowerShell 建立一個使用 儲存空間直接存取 的 Azure Stack HCI 超融合叢集。 如果你比較想用 Windows Admin Center 的叢集建立精靈來建立叢集,請參考「用 Windows Admin Center 建立叢集」。
Note
如果你是單台安裝 Azure Stack HCI 21H2,請使用 PowerShell 來建立叢集。
你可以從兩種叢集類型中選擇:
- 標準叢集,包含一到兩個伺服器節點,全部駐留在同一個站點。
- 這是一種拉伸叢集,至少有四個伺服器節點,跨越兩個站點,每個站點有兩個節點。
針對單一伺服器的情況,對同一台伺服器執行相同的指示。
Note
單一伺服器配置不支援伸展叢集。
本文中,我們建立一個名為 Cluster1 的範例叢集,由四個伺服器節點組成,分別是 Server1、Server2、Server3 和 Server4。
對於拉伸叢集的情況,我們使用 ClusterS1 作為名稱,並使用相同的四個伺服器節點,分布在 Site1 和 Site2 兩個站點。
欲了解更多關於拉伸叢集的資訊,請參閱 拉伸叢集總覽。
開始之前
開始之前,請確定您:
- 閱讀並理解 Azure Stack HCI 系統需求。
- 閱讀並了解 Azure Stack HCI 的實體網路需求與主機網路需求。
- 在叢集中的每台伺服器安裝 Azure Stack HCI 作業系統。 請參見部署 Azure Stack HCI 作業系統。
- 確保所有伺服器都在正確的時區。
- 在每台伺服器上,有一個屬於本地管理員群組的帳號。
- 在 Active Directory 中擁有建立物件的權限。
- 對於擴展叢集,請事先在 Active Directory 中設定好你的兩個站點。
使用 Windows PowerShell
你可以在主機伺服器的 RDP 會話中本地執行 PowerShell,或者從管理電腦遠端執行 PowerShell。 本文介紹遠端選項。
從管理電腦執行 PowerShell 時,請使用 -Cluster 或 -Name 參數,並加上你正在管理的伺服器或叢集名稱。 此外,使用 -ComputerName 伺服器節點參數時,你可能還需要指定完全限定網域名稱(FQDN)。
您需要適用於 Hyper-V 和容錯移轉叢集的遠端伺服器管理工具(RSAT)Cmdlet 與 PowerShell 模組。 如果你的管理電腦上的 PowerShell 工作階段中尚未提供這些 cmdlet 和模組,你可以使用下列命令將它們新增至工作階段:Add-WindowsFeature RSAT-Clustering-PowerShell。
步驟一:設定伺服器
首先,連接每台伺服器,將它們加入一個網域(管理電腦所在的同一網域),並安裝所需的角色與功能。
步驟 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
Tip
當你的管理電腦執行 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連接了每個伺服器節點。
要繼續,你必須將伺服器加入一個網域,並使用每台伺服器本地管理員群組中的網域帳號。
使用 Enter-PSSession cmdlet 連接每台伺服器,並執行以下指令,替換伺服器名稱、網域名稱及網域憑證:
Add-Computer -NewName "Server1" -DomainName "contoso.com" -Credential "Contoso\User" -Restart -Force
如果你的管理員帳號不是網域管理員群組的成員,請將你的管理員帳號加入每台伺服器的本地管理員群組——或者更好的是,加入你用來管理管理員的群組。 你可以使用以下指令來達成:
Add-LocalGroupMember -Group "Administrators" -Member "king@contoso.local"
步驟 1.3:安裝角色與功能
下一步是在叢集的每台伺服器上安裝所需的 Windows 角色與功能。 以下是要安裝的角色:
- BitLocker
- 資料中心橋接
- 容錯叢集
- 檔案伺服器
- FS-資料重複刪除模組
- Hyper-V
- Hyper-V PowerShell
- RSAT-Clustering-PowerShell 模組
- RSAT-AD-PowerShell 模組
- NetworkATC
- 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", "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", "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
步驟二:準備叢集設置
接著,確認你的伺服器是否準備好進行叢集。
作為安全檢查,建議執行以下指令,確保你的伺服器尚未屬於叢集:
用 Get-ClusterNode 來顯示所有節點:
Get-ClusterNode
用 Get-ClusterResource 來顯示所有叢集節點:
Get-ClusterResource
用 Get-ClusterNetwork 來顯示所有叢集網路:
Get-ClusterNetwork
步驟 2.1:準備硬碟
在啟用 儲存空間直接存取 之前,請確保你的永久硬碟是空的。 執行以下腳本移除所有舊的分割區和其他資料。
Note
從指令碼中排除任何連結至伺服器節點的卸除式磁碟機。 舉例來說,如果你是從伺服器節點本地執行這個腳本,你不想清除你可能用來部署叢集的可移動磁碟。
# 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." 你可以放心忽略這個警告」。 此警告是由於沒有可供叢集見證使用的磁碟。 群組見證是在後續步驟中建立的。
Note
如果伺服器使用靜態 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:設定主機網路
如果你使用的是 Azure Stack HCI 版本 21H2 或更新,Microsoft 建議使用 Network 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:設定意圖
在此範例中,會建立一個意圖,指定計算與儲存意圖。 如需更多意圖範例,請參閱使用 Network 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
請注意會顯示「佈建中」、「驗證中」、「成功」和「失敗」的狀態參數。
狀態應會在幾分鐘內顯示為成功。 如果成功狀態未發生或出現狀態參數失敗,請檢查事件檢視器是否有問題。
Note
目前,Network ATC 並未為任何受管理的介面卡設定 IP 位址。 狀態回報完成後 Get-NetIntentStatus ,你應該在轉接器上新增 IP 位址。
步驟 5:設定站點(延伸叢集)
此任務僅適用於你在兩個站點之間建立一個拉伸叢集,且每個站點至少有兩台伺服器。
Note
如果你事先設定了 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 指令碼來驗證兩個站點都是為叢集建立的。
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 版本之後,你可以使用 Network ATC 來設定 Stretch 叢集。 網路 ATC 自 22H2 版起新增 Stretch 作為一種意圖類型。 若要使用 Network ATC 部署具有 Stretch clustering 的 intent,請執行下列命令:
Add-NetIntent -Name StretchIntent -Stretch -AdapterName "pNIC01", "pNIC02"
使用 Network ATC 進行部署時,stretch intent 也可以與其他意圖結合使用。
網站覆寫
根據步驟 5.1 至 5.3,你可以將預先建立的站點新增至使用 Network ATC 部署的 stretch 意圖。 網路 ATC 會用 SiteOverrides 來處理這件事。 要建立 SiteOverride,請執行:
$siteOverride = New-NetIntentSiteOverrides
一旦建立好 siteOverride,你可以為 siteOverride 設定任何屬性。 請確保 siteOverride 的名稱與你網站在 ClusterFaultDomain 中的名稱完全相同。 ClusterFaultDomain 與 siteOverride 名稱不符會導致 siteOverride 未被套用。
你可以為特定 siteOverride 設定的屬性有:Name、StorageVlan 和 StretchVlan。 例如,你為兩個網站——site1 和 site2 建立兩個 siteOverride,使用:
$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 設定為實體磁碟。
對於延展式叢集,Enable-ClusterStorageSpacesDirect Cmdlet 也會:
- 檢查網站是否已設定完成
- 判斷哪些節點位於哪些站點
- 決定每個節點可用的儲存空間
- 檢查每個節點是否安裝了儲存副本功能
- 為每個站點建立一個儲存池,並以站點名稱標示
- 在每個儲存池中分別建立資料磁碟區和記錄磁碟區,每個站點各一個
以下指令可在多節點叢集啟用 儲存空間直接存取。 你也可以指定一個友善的儲存池名稱,如圖所示:
Enable-ClusterStorageSpacesDirect -PoolFriendlyName "$ClusterName Storage Pool" -CimSession $ClusterName
這裡有一個在單節點叢集上停用儲存快取的範例:
Enable-ClusterStorageSpacesDirect -CacheState Disabled
要查看儲存池,請使用以下指令:
Get-StoragePool -CimSession $ClusterName
建立叢集後
現在你的叢集已經建立,還有其他重要任務需要完成:
- 如果您使用雙節點或更大型的叢集,請設定叢集見證。 參見 設置一個群組證人。
- 建立你的音量。 請參閱「建立磁碟區」。 在單一節點叢集上建立磁碟區時,您必須使用PowerShell。 請參閱 使用 PowerShell 建立磁碟區。
- 對於擴充叢集,建立磁碟區並使用 Storage Replica 設定複製。 請參閱 建立磁碟區並為延伸叢集設定複寫。
下一步
- 請用 Azure 註冊你的叢集。 請參閱Connect Azure Stack HCI to Azure。
- 最後對叢集進行驗證。 請參閱 驗證 Azure Stack HCI 叢集
- 管理主機網路。 請參閱 使用網路 ATC 管理主機網路。