在已連線的環境中,您可以使用 Azure Site Recovery 來保護在 Azure Stack Hub 上執行的虛擬機器 (VM)。 本文描述如何 設定環境,以及 Site Recovery 如何協助您參與這些工作負載的整體商務持續性和災害復原策略。
發生中斷時,Azure Stack Hub 操作員會執行「容錯移轉」程序,當 Azure Stack Hub 再次啟動並執行後,就會執行「容錯回復」程序。 這篇 Site Recovery 文章會描述容錯移轉程序,但容錯回復程序涉及幾個手動步驟:
- 停止在 Azure 中執行的 VM。
- 下載 VHD。
- 將 VHD 上傳到 Azure Stack Hub。
- 重新建立 VM。
- 最後,啟動在 Azure Stack Hub 上執行的 VM。
因為這個程序很容易出錯而且耗時,所以我們建立了指令碼以利加速及自動化此程序。
注意
Azure Site Recovery 工具需要 Azure Stack Hub Az 模組。 如果執行的是 Azure Stack Hub AzureRM 模組,即必須升級工作站,或在具有 Az 模組的隔離環境中使用 Azure Site Recovery 容錯回復工具。 如需詳細資訊,請參閱安裝適用於 Azure Stack Hub 的 PowerShell Az 模組。
容錯回復程序
自動容錯回復程序含三大部分:
Copy-AzSiteRecoveryVmVHD:
- 關閉 Azure VM。
- 準備匯出磁碟。
- 透過 AzCopy 或 StorageBlobCopy 複製磁碟。
- 將磁碟上傳至 Azure Stack Hub 儲存體帳戶。
複製磁碟之後,Prepare-AzSiteRecoveryVMFailBack會涵蓋兩個案例:
- 已復原原始的 Azure Stack Hub。 原始 VM 仍然存在,您只需要變更其 VHD。
- 發生嚴重損壞時,如果遺失原始的 VM,即必須重建整個 VM。
這個程序會建立範本和所需參數檔案以涵蓋這兩種案例。
使用參數檔案實際部署 Azure Resource Manager 範本,並在 Azure Stack Hub 上部署/建立 VM。
必要條件
執行容錯回復程序需要有下列先決條件:
使用 PowerShell 匯入 FailbackTool.psm1 模組。
(選擇性) 下載 AzCopy 10 版本。
- 使用 AzCopy 複製 Blob 的速度較快,但需要額外的本機磁碟空間以暫時儲存 Blob 檔案。
- 如未使用 AzCopy,則會使用 AzStorageBlobCopy 複製 VHD。 這表示不需要本機儲存體,但過程會耗用較長的時間。
存取 Azure 入口網站上的資源,以及在 Azure Stack Hub 上建立這些資源的存取權。
步驟 1:將 Blob 從 Azure 複製到 Azure Stack Hub
呼叫 Copy-AzSiteRecoveryVmVHD PowerShell Cmdlet 以停止 Azure VM、從 Azure 下載 VHD,再將這些 VHD 上傳至 Azure Stack Hub。 例如:
$uris = Copy-AzSiteRecoveryVmVHD `
-SourceVM $vmOnAzure `
-TargetStorageAccountName "targetaccountName" `
-TargetStorageEndpoint "redmond.ext-v.masd.stbtest.microsoft.com" `
-TargetStorageAccountKey $accountKey `
-AzCopyPath "C:\azcopy_v10\azcopy.exe" `
-VhdLocalFolder "C:\tempfolder"
請注意下列考量:
這個範例會使用
$uris
來保存步驟 2 所用的SourceDiskVhdUris
值。-SourceVM
參數是由Get-AzVM
擷取的 VM 物件。- 這是 Azure Stack Hub 中受保護的 VM,已在 Azure 上容錯移轉。
- VM 是否正在執行不重要,因為指令碼會關閉 VM。 但還是建議您明確關閉 VM,並相應停止 VM 內的服務。
您可以提供帳戶金鑰 (使用
TargetStorageAccountSasToken
) 或 Azure Stack Hub 端的儲存體帳戶 SAS 權杖 (使用TargetStorageAccountKey
)。 您必須在至少具有下列權限的儲存體帳戶層級建立 SAS 權杖:您可以提供包含區域和 FQDN 的儲存體端點,例如
regionname.azurestack.microsoft.com
;或提供 Azure Stack Hub 的環境名稱,例如AzureStackTenant
。 如果使用環境名稱,則應使用 Get-AzEnvironment 列出。您可以選擇使用 AzCopy 或 AzStorageBlobCopy 將 VHD 從 Azure 複製到 Azure Stack Hub。 AzCopy 的速度較快,但必須先將 VHD 檔案下載至本機資料夾:
- 若要使用 AzCopy,請提供參數
-AzCopyPath
和-VhdLocalFolder
(將要複製的 VHD 路徑)。 - 如果本機空間不足,您可以省略參數
-AzCopyPath
和-VhdLocalFolder
,選擇不使用 AzCopy 直接複製 VHD。 根據預設,此命令會使用 AzStorageBlobCopy 直接複製到 Azure Stack Hub 儲存體帳戶。
- 若要使用 AzCopy,請提供參數
步驟 2:產生 Resource Manager 範本
複製磁碟之後,使用 Prepare-AzSiteRecoveryVMFailBack Cmdlet 建立在 AZURE STACK HUB 上部署 VM 所需的 $templateFile
和 $parameterFile
:
$templateFile, $parameterFile = Prepare-AzSiteRecoveryVMFailBack `
-SourceContextName "PublicAzure" `
-SourceVM $vmOnAzure `
-SourceDiskVhdUris $uris `
-TargetResourceLocation "redmond" `
-ArmTemplateDestinationPath "C:\ARMtemplates" `
-TargetVM $vmOnHub `
-TargetContextName "AzureStack"
請注意下列考量:
這個範例使用
-SourceDiskVhdUris
作為步驟 1 的傳回值 (使用$uris
)。這個 Cmdlet 支援兩種案例:
- 指定
-TargetVM
,即假設 VM 在 Azure Stack Hub 端為作用中,而且您想要以從 Azure 複製而來的最新磁碟取代其磁碟。 - 指令碼會產生 Resource Manager 範本以部署此 VM,並刪除來自 Azure Stack Hub 的現有 VM。
注意
刪除 Azure Stack Hub VM 本身並不會移除其他的物件 (例如 VNET、資源群組、NSG)。 這只會移除 VM 資源本身,然後使用
-incremental
參數部署範本。- 若不提供
-TargetVM
參數,指令碼會假設 VM 不再存在於 Azure Stack Hub 端,因此指令碼會建立 Resource Manager 範本,以部署全新的 VM。
- 指定
產生的 Resource Manager 範本檔案會放在
-ArmTemplateDestinationPath
下,並傳回範本檔案或參數檔案的完整路徑。如果提供
-TargetVM
參數,則此 Cmdlet 會刪除 VM,以便您可繼續下列步驟。
步驟 3:部署 Resource Manager 範本
此時,VHD 會上傳至 Azure Stack Hub,並建立 Resource Manager 範本和個別的參數檔案。 最後只剩下在 Azure Stack Hub 上部署 VM。
在某些情況下,您可能會想要編輯此範本,以及新增、移除或變更某些名稱或資源。 這是允許的,因為您可以視需要編輯及調整範本。
當您準備好,並確認 Resource Manager 範本中存在預期的資源後,您就可以呼叫 New-AzResourceGroupDeployment Cmdlet 來部署資源。 例如:
New-AzResourceGroupDeployment `
-Name "Failback" `
-ResourceGroupName "failbackrg" `
-TemplateFile $templateFile `
-TemplateParameterFile $parameterFile `
-Mode Incremental
請注意下列考量:
-
-ResourceGroupName
參數應為現有的資源群組。 -
-TemplateFile
和-TemplateParameterFile
參數來自步驟 2 的傳回值。