Windows Azure上的WebRole是否必须是无状态的?

时间:2011-12-15 09:41:36

标签: azure azure-web-roles

我遇到了一个有趣的情况。我通过仪表板重新启动了我的WebRole。一旦WebRole重新启动并运行,我就可以远程登录到WebRole,发现我发布的站点的整个文件夹已被擦除并替换为包中的文件夹。只有像桌面上那些文件夹之外的文本文件才能幸免于难。

除非整个驱动器E:在尝试重新启动时被擦除并重新安装。

所以现在我的想法是,由于虚拟机可以在崩溃或微软维护时重新启动,我们开发人员必须确保WebRole是无状态的并且没有任何东西保存在本地,这是正确的吗?

非常感谢,

1 个答案:

答案 0 :(得分:3)

计算VM的本地磁盘存储(无论是Web角色,辅助角色还是VM角色)不是持久的。它可以随时消失。数据中心有权在其认为必要时移动和重新创建VM。这可能是因为硬件故障或仅仅因为需要重新组织数据中心而发生的。发生这种情况时,您将丢失VM磁盘文件并返回到部署映像。这种情况发生只是时间问题。这是云计算计算实例的正常行为。

如何将数据保存在云中?最好使用持久的托管服务,例如Windows Azure Storage或SQL Azure数据库。这为您提供了可依赖的存储,并提供三重冗余支持。

如果您无法迁移到持久存储,另一种可行的方法(如果数据文件是只读的)是将数据文件添加到部署包中,并使用该包升级VM实例。

此答案已从此网址移植:http://social.msdn.microsoft.com/Forums/en-AU/windowsazuredevelopment/thread/3cd21ac6-aeb6-442b-af89-ae913946b3ba