針對 Azure Stack HCI 註冊進行疑難排解

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

針對 Azure Stack HCI 註冊問題進行疑難排解,需要查看 PowerShell 註冊記錄,以及叢集中每部伺服器的 hcisvc 偵錯記錄。

收集 PowerShell 註冊記錄

執行 Register-AzStackHCIUnregister-AzStackHCI Cmdlet 時,每次嘗試都會建立名為 RegisterHCI_{yyyymmdd-hhss}.logUnregisterHCI_{yyyymmdd-hhss}.log 的記錄檔。 您可以使用 Cmdlet 中的 參數來設定這些記錄檔 -LogsDirectoryRegister-AzStackHCI 記錄目錄,並呼叫 Get-AzStackHCILogsDirectory 以取得位置。 根據預設,這些檔案會在 C:\ProgramData\AzureStackHCI\Registration中建立。 針對 PowerShell 模組 2.1.2 版或更早版本,這些檔案會建立在執行 Cmdlet 的 PowerShell 會話工作目錄中。

根據預設,不會包含偵錯記錄。 如果有需要額外偵錯記錄的問題,請在執行 Register-AzStackHCIUnregister-AzStackHCI 之前,先執行下列 Cmdlet 來設定偵錯喜好設定以繼續執行:

$DebugPreference = 'Continue'

收集內部部署 hcisvc 記錄

若要啟用 hcisvc 的偵錯工具記錄,請在叢集每部伺服器上的 PowerShell 中執行下列命令:

wevtutil.exe sl /q /e:true Microsoft-AzureStack-HCI/Debug

若要取得記錄:

Get-WinEvent -Logname Microsoft-AzureStack-HCI/Debug -Oldest -ErrorAction Ignore

無法註冊。 無法在節點 {Node1,Node2} 上產生自我簽署憑證。 無法在節點 {Node1,Node2} 上設定和驗證註冊憑證

失敗狀態說明

在註冊期間,叢集中的每一部伺服器都必須啟動並執行,並具備與 Azure 的輸出網際網路連線能力。 Register-AzStackHCI Cmdlet 會與叢集中的每個伺服器交談,以布建憑證。 每部伺服器都會使用其憑證對雲端中的 HCI 服務進行 API 呼叫,以驗證註冊。

如果註冊失敗,您可能會看到下列訊息:無法註冊。無法在節點 ({Node1,Node2}) 產生自我簽署憑證。無法在節點 ({Node1,Node2}) 設定並驗證註冊憑證

如果在錯誤訊息的「無法在節點上產生自我簽署憑證」部分後面有節點名稱,則表示系統無法在這些伺服器上產生憑證。

補救動作

  1. 檢查上列訊息中所列的每一部伺服器都已啟動且正在執行。 您可以藉由執行來 sc.exe query hcisvc 檢查 hcisvc 的狀態,並在需要時使用 start-service hcisvc 將其啟動。

  2. 確認錯誤訊息中所列的每一部伺服器都可以連線到執行 Register-AzStackHCI Cmdlet 的電腦。 若要進行驗證,請從執行 Register-AzStackHCI 的電腦執行下列 Cmdlet,並使用 New-PSSession 連線到叢集中的每部伺服器並確定其正常運作:

    New-PSSession -ComputerName {failing nodes}
    

如果在錯誤訊息的「無法在節點上設定和驗證註冊憑證」部分後面中有節點名稱,則表示服務可以在這些伺服器上產生憑證,但伺服器無法順利呼叫 HCI 雲端服務 API。 若要進行疑難排解:

  1. 請確定每部伺服器都有必要的網際網路連線,才能與 Azure Stack HCI 雲端服務和其他必要的 Azure 服務通訊,例如Microsoft Entra識別碼,而且防火牆 () 未封鎖。 請參閱 Azure Stack HCI 的防火牆需求

  2. 請嘗試從AzStackHCI.EnvironmentChecker模組執行 Invoke-AzStackHciConnectivityValidation Cmdlet,並確定它成功。 此 Cmdlet 會叫用 HCI 雲端服務的健康情況端點來測試連線能力。

  3. 查看錯誤訊息所列各個節點上的 hcisvc 偵錯記錄。

    • 在失敗時出現「ExecuteWithRetry 作業 AADTokenFetch 在所有重試後失敗」或「ExecuteWithRetry 作業 AADTokenFetch 成功重試」之前,出現幾次「ExecuteWithRetry 作業 AADTokenFetch 失敗,並出現可重試的錯誤」訊息沒有影響。
    • 如果您在記錄中的所有重試之後遇到 ExecuteWithRetry 作業 AADTokenFetch 失敗,即使所有重試之後,系統也無法從服務擷取Microsoft Entra權杖。 將會有與此訊息一起記錄的相關聯Microsoft Entra例外狀況。
    • 如果您看到 AADSTS700027:用戶端判斷提示包含不正確簽章。[原因 - 使用的金鑰已過期。用戶端使用的金鑰指紋:'{SomeThumbprint}',找到金鑰 'Start=06/29/2021 21:13:15, End=06/29/2023 21:13:15',這是在伺服器上時間如何設定的問題。 請在 PowerShell 中執行 [System.DateTime]::UtcNow 以檢查所有伺服器的 UTC 時間,並將此時間與實際的 UTC 時間進行比較。 如果時間不正確,請在伺服器上設定正確的時間,然後再試一次註冊。

從入口網站刪除 HCI 資源並重新註冊相同的叢集會導致問題

失敗狀態說明

如果您從 Azure 入口網站明確刪除 Azure Sack HCI 叢集資源,而不需要先從 Windows Admin Center 或 PowerShell 取消註冊叢集,則直接從入口網站刪除 HCI Azure Resource Manager 資源會導致叢集資源狀態不正確。 應該一律使用 Unregister-AzStackHCI Cmdlet 從 HCI 叢集中觸發取消註冊,以清除取消註冊。 本節說明的清除步驟適用於從入口網站刪除 HCI 叢集資源的情節。

補救動作

  1. 使用叢集使用者認證登入內部部署 HCI 叢集伺服器。
  2. 在叢集上執行 Unregister-AzStackHCI Cmdlet,以清除叢集註冊狀態和叢集 Arc 狀態。
    • 如果取消註冊成功,請流覽至Microsoft Entra > 識別碼應用程式註冊 ([所有應用程式]) 並搜尋符合 clusterNameclusterName.arc 的名稱。 如果這兩個應用程式識別碼存在,請將其刪除。
    • 如果取消註冊失敗並出現錯誤:無法在節點 <節點名稱> 上停用 Azure Arc 整合,請嘗試在節點上執行 Disable-AzureStackHCIArcIntegration Cmdlet。如果節點處於無法執行 Disable-AzureStackHCIArcIntegration 的狀態,請將節點從叢集中移除,然後再次嘗試執行 Unregister-AzStackHCI Cmdlet。登入每個個別節點:
      1. 將目錄變更為 Arc 代理程式的安裝所在位置:cd 'C:\Program Files\AzureConnectedMachineAgent\'
      2. 取得 arcmagent.exe 的狀態,並判斷其預計的 Azure 資源群組:.\azcmagent.exe show。 此命令的輸出會顯示資源群組資訊。
      3. 強制中斷 Arc 代理程式與節點的連線:.\azcmagent.exe disconnect --force-local-only
      4. 登入 Azure 入口網站,並將 Arc-for-Server 資源從步驟 ii 中決定的資源群組中刪除。

使用者不小心刪除了應用程式識別碼

失敗狀態說明

如果叢集已中斷連線超過 8 小時,則可能意外刪除代表 HCI 叢集和 Arc 註冊的相關聯Microsoft Entra應用程式註冊。 如需讓 HCI 叢集和 Arc 正常運作情節,在註冊期間會在租用戶中建立兩個應用程式註冊。

  • 如果刪除 <clustername> 應用程式識別碼,Azure 入口網站中的叢集資源 Azure 連線會顯示已中斷連線 - 叢集未處於連線狀態超過 8 小時。 查看節點上的 HCIsvc 偵錯記錄:錯誤訊息將會是目錄 'Default Directory' 中找不到識別碼為 '<ID>' 的應用程式。如果租用戶的系統管理員尚未安裝此應用程式,或租用戶中的任何使用者未同意,就可能發生此情況。您可能已將驗證要求傳送至錯誤的租用戶。
  • 如果刪除在啟用 Arc 期間建立的 <clustername>.arc,則正常作業期間不會顯示任何錯誤。 只有在註冊和取消註冊程序期間,才需要此身分識別。 在此情節中,取消註冊失敗,發生錯誤:無法在節點 <節點名稱> 上停用 Azure Arc 整合。請嘗試在節點上執行 Disable-AzureStackHCIArcIntegration Cmdlet。如果節點處於無法執行Disable-AzureStackHCIArcIntegration Cmdlet 的狀態,請將節點從叢集中移除,然後再次嘗試執行Unregister-AzStackHCI Cmdlet。

刪除上述任何應用程式會導致無法從 HCI 叢集與雲端進行通訊。

補救動作

  • 如果只 <clustername> AppId 刪除 ,請在叢集上執行修復註冊,以設定Microsoft Entra應用程式:

    Register-AzStackHCI  -SubscriptionId "<subscription_ID>" -ComputerName Server1 -RepairRegistration
    

    修復註冊會重新建立必要的Microsoft Entra應用程式,同時保留其他資訊,例如資源名稱、資源群組和其他註冊選項。

  • 如果刪除的是 <clustername>.arc 應用程式識別碼,記錄中則不會顯示任何錯誤。 如果 <clustername>.arc 已刪除,則取消註冊將會失敗。 如果取消註冊失敗,請遵循本節所述的相同補救動作。

不符合原則錯誤

失敗狀態說明

如果先前註冊的叢集狀態顯示為 OutOfPolicy,則系統設定的變更可能導致 Azure Stack HCI 的註冊狀態不符合原則。

例如,系統變更可能包括但不限於:

  • 關閉註冊節點上的安全開機設定衝突。
  • 清除信賴平台模組 (TPM)。
  • 系統時間的重大變更。

注意

Azure Stack HCI 21H2 會與 KB5010421 (和更新版本) 嘗試從 OutOfPolicy 狀態自動復原。 如需有關目前 OutOfPolicy 狀態和其他資訊的詳細資訊,請檢閱 Microsoft-AzureStack-HCI/系統管理事件記錄檔

在註冊期間,我預期會看到什麼 ‘OutOfPolicy’ 事件識別碼訊息?

事件識別碼訊息有三種:資訊、警告和錯誤。

下列訊息是 Azure Stack HCI 21H2 與 KB5010421 的更新,如果未安裝 KB 則不會看到訊息。

資訊事件識別碼

註冊期間發生的資訊事件識別碼訊息。 檢閱和追蹤訊息中的建議:

  • (資訊) 事件識別碼 592:「Azure Stack HCI 已開始進行資料修復。 使用者目前不需要採取進一步的動作。」

  • (資訊) 事件識別碼594:「Azure Stack HCI 存取資料時發生錯誤。 若要修復,請檢查哪些節點受到影響,如果整個叢集為 OutOfPolicy (執行 Get-AzureStackHCI),請在叢集上執行 Unregister-AzStackHCI、重新開機,並執行 Register-AzStackHCI。 如果只有此節點受到影響,請從叢集中移除此節點、重新開機並等待修復完成,接著再重新加入叢集。」

警告事件識別碼

使用警告訊息時,註冊的狀態不會完成。 可能或可能不會有問題。 請先檢閱事件識別碼訊息,再採取疑難排解步驟。

(警告) 事件識別碼585:「Azure Stack HCI 無法從 Azure 更新授權。 若要取得特定錯誤的詳細資料,請啟用 Microsoft-AzureStack-HCI/偵錯事件通道。」

注意

在成功進行自動修復後,重新建立與 Azure 的完整連線可能會有延遲,且可能會導致顯示事件識別碼 585。 這不會影響節點的工作負載或授權。 也就是說,仍有已安裝的授權,除非節點在自動修復前已超過 30 天的時間範圍。

注意

在某些案例下,Azure Stack HCI 可能無法成功完成自動復原作業。 當叢集中所有節點的註冊狀態不符合原則時,便會發生此情況。 需要一些手動步驟。 請參閱 Microsoft-AzureStack-HCI/管理事件識別碼訊息。

錯誤事件識別碼

事件識別碼的錯誤訊息會識別註冊流程中的失敗情形。 錯誤訊息提供如何解決錯誤的指示。

  • (錯誤) 事件識別碼591:「Azure Stack HCI 無法與 Azure 連線。 如果您繼續看到此錯誤,請嘗試使用 -RepairRegistration 參數,再次執行 Register-AzStackHCI。」

  • (錯誤) 事件識別碼594:「Azure Stack HCI 存取資料時發生錯誤。 若要修復,請檢查哪些節點受到影響,如果整個叢集為 OutOfPolicy (執行 Get-AzureStackHCI),請在叢集上執行 Unregister-AzStackHCI、重新開機,並執行 Register-AzStackHCI。 如果只有此節點受到影響,請從叢集中移除此節點、重新開機並等待修復完成,接著再重新加入叢集。」

Azure 入口網站中的叢集和 Arc 資源存在,但 Get-AzureStackHCI狀態顯示「尚未」註冊

失敗狀態說明

此問題的原因是使用錯誤的雲端環境或不正確的訂用帳戶資訊取消註冊 HCI 叢集。 如果使用者以不正確的 -EnvironmentName-SubcriptionId 參數執行叢集的 Unregister-AzStackHCI Cmdlet,叢集的註冊狀態會從內部部署叢集本身中移除,但 Azure 入口網站中的叢集和 Arc 資源仍會存在於原始環境或訂用帳戶中。

例如:

  • 錯誤-EnvironmentName <value>:您已如下列範例所示,在 -EnvironmentName AzureUSGovernment 中註冊叢集。 附註:預設 -EnvironmentName 為「AzureCloud」。 例如,您執行了:

    Register-AzStackHCI  -SubscriptionId "<subscription_ID>" -EnvironmentName AzureUSGovernment
    

    但接著如下所示,您會使用 -EnvironmentName Azurecloud (預設) 來執行 Unregister-AzStackHCI Cmdlet:

    Unregister-AzStackHCI -SubscriptionId "<subscription_ID>"
    
  • 錯誤-SubscriptionId <value>:如下所示,您已使用 -SubscriptionId "<subscription_id_1>" 註冊叢集:

    Register-AzStackHCI  -SubscriptionId "<subscription_id_1>"
    

    但您接著會針對不同的訂用帳戶識別碼執行 Unregister-AzStackHCI Cmdlet:

    Unregister-AzStackHCI -SubscriptionId "<subscription_id_2>"
    

補救動作

  1. 從入口網站刪除叢集和 Arc 資源。
  2. 流覽至[Microsoft Entra識別碼 > ] 應用程式註冊 ([所有應用程式]) ,然後搜尋名稱比 <clusterName> 對, <clusterName>.arc 然後刪除兩個應用程式識別碼。

將叢集節點重新啟動後立即發出 Sync-AzureStackHCI 會導致 Arc 資源遭到刪除

失敗狀態說明

在節點同步處理之前執行人口普查同步處理,可能會導致將同步處理傳送至 Azure,但 Azure 中不包含節點。 這會導致該節點的 Arc 資源遭到移除。 Sync-AzureStackHCI Cmdlet 只能用來對 HCI 叢集的雲端連線進行偵錯。 HCI 叢集在重新啟動後有一小段準備時間,以協調叢集狀態;因此,將節點重新啟動之後,請勿立即執行 Sync-AzureStackHCI

補救動作

  1. 在 Azure 入口網站上,登入顯示為 [未安裝] 的節點。

  2. 使用下列兩個命令中斷 Arc 代理程式的連線:

    cd "C:\Program Files\AzureConnectedMachineAgent"
    

    然後在受影響的網域控制站上執行

    .\azcmagent.exe disconnect --force-local-only
    
  3. 修復註冊:

    Register-AzStackHCI  -SubscriptionId "<subscription_ID>" -ComputerName Server1  -RepairRegistration
    
  4. 修復作業之後,節點會重新回到連線狀態。

註冊順利完成,但入口網站中的 Azure Arc 連線顯示 [未安裝]

案例 1

失敗狀態說明

如果Azure Connected Machine Resource Manager所需的角色已從 Arc-for-Server 資源群組中的 HCI 資源提供者中移除,就會發生這種情況。

您可以在資源群組Azure 入口網站的[存取控制] 刀鋒視窗下找到許可權。 下圖顯示許可權:

存取控制刀鋒視窗的螢幕擷取畫面。

補救動作

執行修復註冊 Cmdlet:

Register-AzStackHCI -TenantId "<tenant_ID>" -SubscriptionId "<subscription_ID>" -ComputerName Server1  -RepairRegistration

案例 2

失敗狀態說明

此訊息也可能是因為執行 Azure Stack HCI 註冊時有時發生的暫時性問題所造成。 發生這種情況時, Register-AzStackHCI Cmdlet 會顯示下列警告訊息:

Register-AzStackHCI Cmdlet 輸出訊息的螢幕擷取畫面。

補救動作

在註冊之後等候 12 小時,以自動解決問題。

案例 3

失敗狀態說明

當 Proxy 未正確設定,以便從 HCI 節點連線到 Azure ARC 雲端服務時,也會發生這種情況。 您可能會在 Arc 代理程式記錄中看到下列錯誤:

Arc 代理程式記錄的螢幕擷取畫面。

補救動作

若要解決此問題,請遵循 指導方針來更新 Proxy 設定。 接著,重新註冊 Azure Stack HCI 叢集。

無法在 Fairfax 和 Mooncake 中輪替憑證

失敗狀態說明

  1. 從 Azure 入口網站中,叢集資源 Azure 連線會顯示 [已中斷連線]。
  2. 查看節點上的 HCIsvc 偵錯記錄。 錯誤訊息會是例外狀況:AADSTS700027:用戶端判斷提示簽章驗證失敗
  3. 錯誤也可以顯示為 RotateRegistrationCertificate 失敗:不正確對象

補救動作

在叢集上執行修復註冊,以在Microsoft Entra應用程式中新增憑證:

Register-AzStackHCI  -SubscriptionId "<subscription_ID>" -ComputerName Server1 -RepairRegistration

修復註冊會在Microsoft Entra應用程式中產生新的取代憑證,同時保留其他資訊,例如資源名稱、資源群組和其他註冊選項。

OnPremisesPasswordValidationTimeSkew

失敗狀態說明

Microsoft Entra權杖產生失敗,如果本機節點時間太遠與 TRUE 目前時間不同, (UTC) 。 Microsoft Entra識別碼會傳回下列錯誤:

AADSTS80013:OnPremisePasswordValidationTimeSkew - 無法完成驗證嘗試,因為執行驗證代理程式的機器和 AD 之間有時間差異。 請修正時間同步問題。

補救動作

請確定時間已同步至已知且精確的時間來源。

無法取得租使用者的權杖,發生錯誤

失敗狀態說明

如果用於註冊的使用者帳戶是多個Microsoft Entra租使用者的一部分,您必須在叢集註冊和取消註冊期間指定 -TenantId ,否則它將會失敗,錯誤無法取得租使用者的權杖併發生錯誤。您必須使用多重要素驗證來存取租使用者。請使用其他參數 -TenantId 重新執行 Connect-AzAccount

補救動作

  • 針對叢集註冊,請指定 -TenantId 參數:

    Register-AzStackHCI  -SubscriptionId "<subscription_ID>" -ComputerName Server1 -TenantId <Tenant_ID>
    
  • 針對取消註冊,請指定 -TenantId 參數:

    Unregister-AzStackHCI -ComputerName ClusterNode1 -SubscriptionId "<subscription ID GUID>" -ResourceName HCI001 -TenantId <Tenant_ID>
    

一或多個叢集節點無法連線到 Azure

失敗狀態說明

當一或多個叢集節點在註冊之後發生連線問題,且無法長時間連線到 Azure 時,就會發生此問題。 即使在解決連線問題之後,節點仍無法因為憑證過期而重新連線到 Azure。

補救動作

  1. 登入已中斷連線的節點。

  2. 執行 Disable-AzureStackHCIArcIntegration

  3. 執行 Get-AzureStackHCIArcIntegration 來檢查 ARC 整合的狀態,並確定它現在顯示已中斷連線節點的「已停用」:

    Get-AzureStackHCIArcIntegration Cmdlet 輸出的螢幕擷取畫面。

  4. 登入Azure 入口網站,並刪除代表此節點 Arc 伺服器的 Azure Resource Manager 資源。

  5. 再次登入已中斷連線的節點,然後執行 Enable-AzureStackHCIArcIntegration

  6. 在節點上執行 Sync-AzureStackHCI

嘗試建立 VM 時的工作失敗

失敗狀態說明

如果未在部署時向 Azure 註冊叢集,或叢集已註冊但尚未連線到 Azure 超過 30 天,系統將不會允許建立或新增 (VM 的新虛擬機器) 。 發生這種情況時,您會在嘗試建立 VM 時看到下列錯誤訊息:

There was a failure configuring the virtual machine role for 'vmname'. Job failed. Error opening "vmname" clustered roles. The service being accessed is licensed for a particular number of connections. No more connections can be made to the service at this time because there are already as many connections as the service can accept.

補救動作

向 Azure 註冊 HCI 叢集。 如需如何註冊叢集的資訊, 請參閱 Register-AzStackHCI 檔中的指示

針對叢集和 Arc-for-Server 資源使用通用資源群組

最新的 PowerShell 模組支援針對叢集和 Arc-for-Server 資源擁有通用資源群組,或使用任何適用于 Arc-for-Server 資源的既有資源群組。

針對向 PowerShell 模組 1.4.1 版或更早版本註冊的叢集,您可以執行下列步驟來使用新功能:

  1. 從其中一個節點執行 Unregister-AzStackHCI 來取消註冊叢集。 請參閱 使用 PowerShell 取消註冊 Azure Stack HCI
  2. 安裝最新的 PowerShell 模組: Install-Module Az.StackHCI -Force
  3. Register-AzStackHCI傳遞 和 -ArcForServerResourceGroupName 的適當參數 -ResourceGroupName 來執行。

注意

如果您針對 Arc-for-Server 資源使用不同的資源群組,建議您使用資源群組,其 Arc-for-Server 資源僅與 Azure Stack HCI 相關。 Azure Stack HCI 資源提供者具有在 ArcServerResourceGroup中管理任何其他 Arc-for-Server 資源的許可權。

後續步驟