【问题标题】:Backup Azure Virtual Machine local folders to blob storage?将 Azure 虚拟机本地文件夹备份到 Blob 存储?
【发布时间】:2013-02-25 00:11:02
【问题描述】:

我刚刚在 Windows Azure 中设置了一个额外的小型 VM 实例来运行我们公司的帮助控制台。可以通过简单的 .NET 界面更新和发布帮助文件。显然,平面 html 文件正在部署到 VM 上的本地驱动器,并通过 IIS 公开。我只是想知道这有多稳定?如果虚拟机发生硬件故障,大概不会自动故障转移,我们对帮助系统所做的任何编辑都会丢失?

谁能推荐一种方法可以将源文件从 VM 传送到 blob 存储中?我可以编写一个应用程序来执行此操作,我只是想知道是否有现成的解决方案?

其他信息:

  • VM 实例正在运行 Server 2008 R2 SP1(作为虚拟机而不是 Web 角色)
  • 需要每 24 小时创建一次备份
  • 需要从 blob 容器中自动清除过期备份(3 天以上)
  • 我们使用的帮助系统称为 HelpConsole 2012
  • 新页面以每周 2-3 次的速度添加

【问题讨论】:

    标签: azure backup virtual-machine azure-blob-storage


    【解决方案1】:

    答案取决于您是在 Windows Azure 虚拟机还是在 Windows Azure Web 角色上运行它。

    如果您在 Windows Azure 虚拟机上运行此程序,则 VHD 存储在 BLOB 存储中,如果站点运行的是 C: 驱动器而不是数据磁盘,则系统已启用一些主机缓存读取和写入都打开。在这种情况下,有可能(取决于您用来写出文件的方法)在发生故障之前数据不会被推回 BLOB 存储中的 VHD。您可以确保您的写入方法执行写入操作,或者关闭写入缓存。更好的是,为您的网站文件附加一个数据磁盘。默认情况下,数据磁盘已关闭读取和写入缓存(您可以打开读取缓存)。由于 VHD 是持久的,因此您不必担心编辑会丢失。您可以编写文件快照并将它们单独移动到 BLOB 存储,或者甚至将它们推送到其他地方。使用此选项要考虑的另一件事是,您必须关心 VM 实例并使其保持修补和最新状态。

    如果您正在运行 Web 角色,那么是的,如果发生故障并且 VM 进行自我修复,它确实会使用旧文件重新部署。在这种情况下,我建议更改 Web 角色中的代码,以便在将更新写入本地文件时,还会将本地文件的副本放入 BLOB 存储中。此外,在 Web 角色 OnStart 中,您可以访问 BLOB 存储并在本地下载所有新内容。不过要非常小心这种方法,因为它只适用于一个实例,而不是多个实例。如果您计划运行服务器的多个实例(如果您想要 SLA 以保证正常运行,则必须这样做),那么您的代码将需要更健壮一些,并写入 BLOB 存储,然后提醒角色的所有实例有一个新文件要在本地下拉。

    Web 角色的另一个选项是也为内容编写一个处理程序,以便请求进入并直接映射到文件 BLOB 存储。然后可以进行更新以将编辑定向到 BLOB 存储中的文件。这会将平面文件的服务从计算节点卸载到 BLOB 存储,您甚至可以实现一些缓存并通过处理程序将内容流回,而不是让它们直接访问 BLOB 存储。

    现在,另一种选择是为此使用 Windows Azure 网站。 Windows Azure 网站中网站文件的底层存储是一个共享位置,因此更新其中的文件将立即反映在所有实例中。此外,该站点的内容存储在 BLOB 存储中,可以通过 FTP、源代码控制或直接从代码进行更新。这里有很多选择。您最终可能会转向保留实例,以帮助避免网站拥有的某些配额。网站目前可能不是您的选择,具体取决于其他要求(例如,您需要对环境进行多少控制,因为您对网站没有太多控制权)。

    【讨论】:

    • 迈克,感谢您非常全面的回复!我们正在运行虚拟机而不是网络角色。我现在可以从 Visual Studio 查看 blob 容器中的 .vhd 图像。我已将所有源文件部署到 D: 驱动器(临时存储),我认为需要将其移动到 C: 以便映射到 .vhd?我选择了虚拟机而不是网站或 web 角色,因为帮助系统是从 exe 安装程序部署的,该安装程序依赖于一堆依赖项,这些依赖项需要启动脚本才能在 web 角色中实现。使用 RDP 让网站正常运行对我来说是一个更快捷的解决方案。
    • 我还要补充一点,这个虚拟机上的帮助系统每周最多只修改一次。
    • 啊,是的,一定要把文件移出 D: 驱动器。那个驱动器是暂时的。如果您不希望将文件放在 C: 上,我建议您创建一个数据磁盘并将网站放在那里。但是,一旦数据在 C: 或数据磁盘(不是默认的 D:)上,即使机器出现故障,数据也会保留(再次注意设置了哪些驱动器缓存设置)。鉴于您对其他依赖项的指示,使用虚拟机而不是 Web 角色来帮助您继续前进是有意义的,但我建议您研究一下如何在未来获得 Web 角色以减少您对修补的维护需求。
    • 如果是我,我会创建一个数据磁盘来托管文件,而不是将其放在 C: 上。这种方式更加灵活,而且您的文件与操作系统不在同一个驱动器上。
    • 太棒了!只是让我了解 .vhd 文件是 VM 上 C: 驱动器的映像?这个 .vhd 文件多久刷新一次?我将一大块数据复制到 C: 驱动器并刷新了 blob 浏览器,.vhd 的大小没有改变?如果我设置一个数据驱动器,是否会创建一个特定于该驱动器的单独 blob 容器?抱歉所有问题...这对我来说是全新的!
    猜你喜欢
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 2017-10-22
    • 2015-06-10
    • 1970-01-01
    • 2019-06-15
    • 2023-01-27
    • 2021-07-02
    相关资源
    最近更新 更多