本文介绍Azure Stack Hub上Azure 存储帐户中的存储帐户的保护与恢复。
解决方案的元素
本部分介绍解决方案及其主要部分的整体结构。
应用程序层
可以通过发出多个 PUT Blob 或 Put Block 操作,在单独的Azure Stack Hub缩放单元上的存储帐户之间复制数据,以将对象写入多个位置。 或者,在主账户的 Put 操作完成后,应用程序可以发出 Copy Blob 操作,将该 Blob 复制到托管在独立缩放单元上的存储账户。
定时复制任务
AzCopy是一种工具,可用于从本地文件系统、Azure云存储、Azure Stack Hub存储和 s3 复制数据。 目前,AzCopy无法在两个Azure Stack Hub存储帐户之间复制数据。 将对象从源Azure Stack Hub存储帐户复制到目标Azure Stack Hub存储帐户需要中间本地文件系统。
有关详细信息,请参阅Azure Stack Hub存储文章中的“使用数据传输工具”一文中的AzCopy部分。
Azure Stack Hub(源)
此存储账户是您要备份的数据来源。
需要源存储帐户 URL 和 SAS 令牌。 有关使用存储帐户的说明,请参阅Azure Stack Hub存储开发工具入门。
Azure Stack Hub(目标)
此目标存储要备份的帐户数据。 目标Azure Stack Hub实例必须位于与源Azure Stack Hub不同的位置。 源需要连接到目标。
需要源存储帐户 URL 和 SAS 令牌。 有关使用存储帐户的说明,请参阅Azure Stack Hub存储开发工具入门。
中间本地文件系统
从源复制,然后写入目标Azure Stack Hub时,需要一个位置来运行AzCopy和存储数据。 此位置是源Azure Stack Hub中的中间服务器。
可以将 Linux 或 Windows 服务器创建为中间服务器。 服务器需要有足够的空间来存储源存储帐户容器中的所有对象。
- 有关设置 Linux 服务器的说明,请参阅使用 Azure Stack Hub 门户创建 Linux 服务器 VM。
- 有关设置Windows Server的说明,请参阅使用 Azure Stack Hub 门户创建Windows server VM。
设置Windows Server后,安装 Azure Stack Hub PowerShell 和 Azure Stack Hub Tools。
为存储帐户设置备份
检索源和目标存储帐户的 Blob 终结点。
为源和目标存储帐户创建和记录 SAS 令牌。
在中间服务器上安装AzCopy,并将 API 版本设置为Azure Stack Hub存储帐户。
- 对于 Windows 服务器:
set AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09 PowerShell use: $env:AZCOPY_DEFAULT_SERVICE_API_VERSION="2017-11-09"- 对于 Linux(Ubuntu)服务器:
export AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09在中间服务器上,创建脚本。 使用 存储帐户、 SAS 密钥和 本地目录路径更新此命令。 运行脚本以增量方式从 源 存储帐户复制数据。
azcopy sync "https:/<storagaccount>/<container>?<SAS Key>" "C:\\myFolder" --recursive=true --delete-destination=true输入 存储帐户、 SAS 密钥和 本地目录路径。 使用此信息以增量方式将数据复制到 目标 存储帐户。
azcopy sync "C:\\myFolder" "https:// <storagaccount>/<container>?<SAS Key>" --recursive=true --delete-destination=true使用 Cron 或任务计划程序,安排将数据从源 Azure Stack Hub 存储帐户复制到中间服务器上的本地存储。 然后将中间服务器中的本地存储复制到目标Azure Stack Hub存储帐户。
可以通过此解决方案实现的 RPO 由 /MO 参数值以及源帐户与中间服务器与中间服务器与目标帐户之间的网络带宽确定。
- 对于 Linux(Ubuntu)服务器:
schtasks /CREATE /SC minute /MO 5 /TN "AzCopy Script" /TR C:\\<script name>.bat参数 Note /SC 使用分钟计划。 /MO 间隔为XX分钟。 /TN 任务名称。 /TR script.bat文件的路径。- 对于 Windows 服务器:
有关使用Windows任务计划的信息,请参阅面向开发人员的任务计划程序。
在灾难中使用存储帐户
每个Azure Stack Hub存储帐户都有一个唯一的 DNS 名称,该名称来自Azure Stack Hub区域的名称。 例如,https://krsource.blob.east.asicdc.com/。 写入和读取此 DNS 名称的应用程序需要在灾难期间使用目标帐户时处理存储帐户 DNS 名称更改。 例如,目标帐户可能是 https://krtarget.blob.west.asicdc.com/。
声明灾难后,可以更改应用程序连接字符串,以考虑对象的重定位。 如果在位于源存储帐户和目标存储帐户前端的 Azure 负载均衡器前使用 CNAME 记录,则可以将该负载均衡器配置为使用手动故障转移算法,以便将目标存储帐户指定为活动目标。
如果应用程序使用 SAS 而不是 Microsoft Entra ID 或 AD FS,则上述方法将不起作用,并且需要使用目标存储帐户 URL 和为目标存储帐户生成的 SAS 密钥(s)更新应用程序连接字符串。