我们努力确保 Azure 服务始终可用。 但偶尔可能发生计划外服务中断。 为了帮助最大程度地减少停机时间,Azure 存储支持客户管理的故障转移,使数据在部分中断和完全中断期间保持可用。
本文介绍如何使用 Azure 门户、PowerShell 或 Azure CLI 为存储帐户启动帐户故障转移。 若要详细了解帐户故障转移,请参阅 Azure 存储灾难恢复规划和故障转移。
先决条件
在启动客户管理的故障转移之前,请查看 灾难恢复指南 文章中详述的这些重要主题。
-
潜在的数据丢失:在存储帐户故障转移期间,数据丢失是可以预期的。 有关帐户故障转移的影响以及如何准备数据丢失的详细信息,请参阅 “预计数据丢失和不一致 ”部分。
-
异地冗余:在执行故障转移之前,必须为存储帐户配置异地冗余。 在故障转移过程开始之前,必须完成从主要区域到次要区域的初始同步。 如果未为异地冗余配置帐户,可以按照 “更改存储帐户复制方式 ”一文中所述的步骤进行更改。 有关 Azure 存储冗余选项的详细信息,请参阅 Azure 存储冗余 文章。
-
了解不同类型的帐户故障转移:有两种类型的客户管理的故障转移。 请参阅 “故障转移计划” 一文,了解每种类型的潜在用例及其差异。
-
规划不支持的功能和服务:查看 不支持的功能和服务 文章,并在启动故障转移之前采取适当的措施。
-
支持的存储帐户类型:确保存储帐户类型可用于启动故障转移。 请参阅 支持的存储帐户类型。
-
设置对计时和成本的预期:客户管理的故障转移过程完成所需的时间可能会有所不同,但通常需要不到一小时的时间。 故障转移会导致异地冗余配置丢失。 重新配置异地冗余存储(GRS)通常会产生额外的时间和成本。 有关详细信息,请参阅 故障转移时间和成本 部分。
启动故障转移机制
可以使用 Azure 门户、PowerShell 或 Azure CLI 启动客户管理的故障转移。
完成以下步骤,使用 Azure 门户启动帐户故障转移:
访问您的存储帐户。
从数据管理组中选择冗余。 下图显示了存储帐户的异地冗余配置和故障转移状态。
验证是否已为异地冗余存储(GRS、RA-GRS、GZRS 或 RA-GZRS)配置存储帐户。 如果不是,请从 “冗余 ”下拉列表中选择所需的冗余配置,然后选择“ 保存” 以提交更改。 更改异地冗余配置后,数据将从主要区域同步到次要区域。 这一同步过程大约需要几分钟,在所有数据复制完成之前,无法执行故障转移。 在同步完成之前,将显示以下消息:
选择 “准备 Customer-Managed 故障转移 ,如下图所示:
将会显示一条警告,以提醒你可能的数据丢失,并告知你故障转移后需要手动重新配置地理冗余:
查看 准备故障转移 页面。 准备就绪后,键入 “是 ”,然后选择“ 故障转移 ”以确认并启动故障转移过程。
将显示一条消息,指示故障转移正在进行:
若要获取存储帐户的当前冗余和故障转移信息,然后启动故障转移,请执行以下步骤:
安装适用于 PowerShell 的 Azure 存储预览模块
在 PowerShell 5.1 上安装并运行预览模块
建议的最佳做法包括安装和使用最新版本的 PowerShell。 如果在使用旧版 PowerShell 安装预览模块时遇到问题,可能需要在安装 Az.Storage 5.2.2 预览模块之前将 PowerShellGet 更新到最新版本 。
若要安装最新版本的 PowerShellGet 和 Az.Storage 预览模块,请执行以下步骤:
使用以下 cmdlet 更新 PowerShellGet:
Install-Module PowerShellGet -Repository PSGallery -Force
关闭并重新打开 PowerShell
使用以下 cmdlet 安装 Az.Storage 预览模块:
Install-Module -Name Az.Storage -RequiredVersion 5.2.2-preview -AllowPrerelease
通过运行以下命令确定是否已安装更高版本的 Az.Storage 模块:
Get-InstalledModule Az.Storage -AllVersions
如果还安装了更高版本(如 5.3.0 或 5.4.0),则需要在使用它之前显式导入预览版本。
再次关闭并重新打开 PowerShell
在运行任何其他命令之前,请使用以下命令导入模块的预览版本:
Import-Module Az.Storage -RequiredVersion 5.2.2
运行以下命令验证 FailoverType
参数是否受支持:
Get-Help Invoke-AzStorageAccountFailover -Parameter FailoverType
有关安装 Azure PowerShell 的详细信息,请参阅 安装 Azure Az PowerShell 模块。
使用 PowerShell 获取存储帐户的当前状态
在故障转移之前确认存储账户状态。 检查可能影响故障转移的属性,例如:
- 主要区域和次要区域及其状态
- 存储类型和访问层
- 当前故障转移状态
- 上次同步时间
- 存储帐户 SKU 转换状态
# Log in first with Connect-AzAccount
Connect-AzAccount -Environment AzureChinaCloud
# Specify the resource group name and storage account name
$rgName = "<your resource group name>"
$saName = "<your storage account name>"
# Get the storage account information
Get-AzStorageAccount `
-Name $saName `
-ResourceGroupName $rgName `
-IncludeGeoReplicationStats
若要将显示中的属性列表优化为最相关的集,请考虑将上一示例中的命令替换为 Get-AzStorageAccount
以下命令:
Get-AzStorageAccount `
-Name $saName `
-ResourceGroupName $rgName `
-IncludeGeoReplicationStats `
| Select-Object Location,PrimaryLocation,SecondaryLocation,StatusOfPrimary,StatusOfSecondary,@{E={$_.Kind};L="AccountType"},AccessTier,LastGeoFailoverTime,FailoverInProgress,StorageAccountSkuConversionStatus,GeoReplicationStats `
-ExpandProperty Sku `
| Select-Object Location,PrimaryLocation,SecondaryLocation,StatusOfPrimary,StatusOfSecondary,AccountType,AccessTier,@{E={$_.Name};L="RedundancyType"},LastGeoFailoverTime,FailoverInProgress,StorageAccountSkuConversionStatus `
-ExpandProperty GeoReplicationStats `
| fl
使用 PowerShell 发起存储帐户的故障转移
Invoke-AzStorageAccountFailover `
-ResourceGroupName $rgName `
-Name $saName `
-FailoverType <unplanned>
完成以下步骤以获取存储帐户的当前冗余和故障转移信息,然后启动故障转移:
安装适用于 Azure CLI 的 Azure 存储预览版扩展
安装最新版本的 Azure CLI。 有关详细信息,请参阅安装 Azure CLI。
使用以下命令安装 Azure CLI 存储预览扩展:
az extension add -n storage-preview
重要
Azure CLI 存储预览扩展添加了对当前处于预览状态的功能或参数的支持。
有关适用于 Beta 版、预览版或尚未正式发布的 Azure 功能的法律条款,请参阅 Azure 预览版补充使用条款 。
使用 Azure CLI 获取存储帐户的当前状态
运行以下命令以获取存储帐户的当前异地复制信息。 将尖括号 (<>) 中的占位符值替换为你自己的值:
az storage account show \
--resource-group <resource-group-name> \
--name <storage-account-name> \
--expand geoReplicationStats
有关storage account show
命令的详细信息,请运行:
az storage account show --help
使用 Azure CLI 执行存储帐户的故障转移
运行以下命令以启动存储帐户的故障转移。 将尖括号 (<>) 中的占位符值替换为你自己的值:
az storage account failover \
--resource-group <resource-group-name> \
--name <storage-account-name> \
--failover-type <unplanned>
有关 storage account failover
命令的详细信息,请运行:
az storage account failover --help
监视故障转移
可以使用 Azure 门户、PowerShell 或 Azure CLI 监视故障转移的状态。
故障转移的状态显示在 Azure 门户中的 “通知”、“活动日志”和存储帐户的 “冗余 ”页上。
Notifications
若要检查故障转移的状态,请选择 Azure 门户全局页面标头最右侧的钟形通知图标:
活动日志
若要查看故障转移的详细状态,请在通知中的 活动日志链接中选择“更多事件 ”,或转到存储帐户的活动 日志 页:
冗余页面
存储帐户冗余页上显示的消息用于提供故障转移状态更新。
如果故障转移即将完成,冗余页可能会将原始次要区域显示为新的主要区域,但仍显示一条消息,指示故障转移正在进行:
故障转移完成后,冗余页会显示上次故障转移时间和新的主要区域的位置。
故障转移的重要含义
启动存储帐户的故障转移时,将更新辅助终结点的 DNS 记录,使辅助终结点变为主终结点。 启动故障切换之前,请确保了解对存储帐户的潜在影响。
若要在启动故障转移之前估计可能数据丢失的程度,请检查 上次同步时间 属性。 如需详细了解如何检查“上次同步时间”属性,请参阅检查存储帐户的“上次同步时间”属性。
启动后故障转移所需的时间可能会有所不同,但通常少于一小时。
当故障转移完成后,您的存储帐户类型将自动转换为新主区域中的本地冗余存储(LRS)。 可以为帐户重新启用异地冗余存储(GRS)或可读访问异地冗余存储(RA-GRS)。 请注意,从 LRS 转换为 GRS 或 RA-GRS 会产生额外费用。 成本是由于网络出口费用导致需要将数据重新复制到新的备用区域。 有关详细信息,请参阅 带宽定价详细信息。
为存储帐户重新启用 GRS 后,Azure 开始将帐户中的数据复制到新的次要区域。 复制时间取决于许多因素,其中包括:
- 存储帐户中对象的数量和大小。 许多小对象可能比少量而大型的对象花费更长的时间。
- 可用于后台复制的资源,例如 CPU、内存、磁盘和 WAN 容量。 实时流量优先于异地复制。
- 如果使用 Blob 存储,则每个 Blob 的快照数。
- 如果使用表存储,需考虑数据分区策略。 复制过程不能扩展到超过所用分区键数量的地步。
发生故障转移时,主要区域中的所有数据都将丢失,因为次要区域将成为新的主要区域。 重新启用异地冗余后,需要重复对主要区域的存储帐户执行的所有写入作。 有关更多详细信息,请参阅 Azure 存储灾难恢复规划和故障转移。
在故障转移过程中,Azure 存储资源提供程序不会发生故障转移。 因此,Azure 存储 REST API 的位置 属性在故障转移完成后继续返回原始位置。
存储帐户故障转移是服务中断的临时解决方案,不应用作数据迁移策略的一部分。 有关如何迁移存储帐户的信息,请参阅 Azure 存储迁移概述。
另请参阅