2013-02-24 266 views
0

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

任何人都可以推荐一种方法,我可以将源文件穿梭到虚拟机到blob存储?我可以写一个应用程序来做到这一点,我只是想知道是否有一个开箱即用的解决方案?

其他信息:

  • 虚拟机实例运行Server 2008 R2的SP1(作为一个虚拟机不是一个网络角色)
  • 备份需要进行一次,每24小时生成我们使用的帮助系统称为HelpConsole 2012
  • 新页面在myabe 2-3率为每周

回答

2

答案取决于如何您是否在Windows Azure的虚拟机上或在Windows Azure的Web角色运行此添加。

如果您在Windows Azure虚拟机上运行此VHD,则VHD存储在BLOB存储中,并且如果该站点运行的是C:驱动器而不是数据磁盘,则系统具有一些主机缓存打开读取和写入。在这种情况下,可能(取决于用于写入文件的方法)在发生故障之前,数据不会被推回到BLOB存储中的VHD。您可以确保写入方法执行写入操作,也可以关闭写入​​缓存。更好的是,为您的网站文件附上数据磁盘。默认情况下,数据磁盘既可以读取也可以写入缓存(您可以打开读取缓存)。由于VHD持续存在,您不必担心编辑会迷失方向。您可以编写脚本,对这些文件进行快照并将它们分别移至BLOB存储,或者将它们推送到其他位置。使用此选项需要思考的另一件事是,您必须关心VM实例并使其保持修补并保持最新状态。

如果您正在运行Web角色,那么是的,如果发生故障并且虚拟机经历自我修复,它确实会重新部署旧文件。在这种情况下,我建议更改Web角色中的代码,当它将更新写入本地文件时,它还会将本地文件的副本放入BLOB存储中。另外,在Web角色OnStart中,您可以访问BLOB存储并在本地下拉所有新内容。尽管这种方法非常仔细,但因为它只适用于一个实例,而不是多个实例。如果您计划运行服务器的多个实例(并且如果您想要SLA的正常运行时间,则必须执行此操作),那么您的代码将需要更强大一些,并写入BLOB存储,然后警告角色的所有实例有一个新文件在本地下拉。

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

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

+0

迈克,感谢您的全面回应!我们正在使用虚拟机而不是网络角色。我现在可以在Visual Studio的blob容器中查看.vhd图像。我已将所有源文件部署到D:驱动器(临时存储器),我认为这需要迁移到C:以便映射到.vhd?我通过网站或网络角色选择了虚拟机,因为这个帮助系统是从一个exe安装程序部署的,这个安装程序依赖于一系列需要启动脚本以web角色实现的依赖关系。使用RDP获取网站的工作对我来说是一个寻求解决方案。 – QFDev 2013-02-24 16:09:04

+0

我还应该补充说,这个虚拟机上的帮助系统最多只能每周修改一次。 – QFDev 2013-02-24 16:09:41

+0

啊,是的,绝对将文件移出D:驱动器。这种驱动是暂时的。我建议你创建一个数据磁盘,如果你不想C:上的文件并把网站放在那里。但是,一旦数据位于C:或数据磁盘(不是默认的D :),即使机器停机(同样需要了解驱动器缓存设置的设置),数据仍会保留。考虑到你对附加依赖关系的指示,通过网络角色使用虚拟机来让你走,但我建议看看如何在未来发挥Web角色的作用,以减少修补的维护要求。 – MikeWo 2013-02-24 16:29:41

相关问题