1

Azure 有时可以重新启动运行我的角色实例的 VM,有时它可以在一个 VM 上停止它,然后将其部署到另一个 VM - 例如,如果运行 VM 的硬件发生故障。

显然,在这两种情况下,VM 正常运行时间都会重置。

我如何检测后者——我如何判断它是一个新的虚拟机,而不是经过一些自动清理后的旧虚拟机?

4

3 回答 3

1

我不确定这是否可行,但也许您可以创建一个本地存储驱动器,并将“角色回收时清理”设置为 false。当您的角色开始时,请检查是否存在预定文件。如果该文件在那里,那么您将在旧 VM 上重新启动。如果没有文件,您将在新 VM 上启动。无论哪种情况,请在检查后写入文件。

于 2013-05-07T14:58:59.460 回答
0

我建议您捕获并记录(到 ATS/blob/SQLAzure 等共享存储)所有 RoleEnvironment 事件,例如 Stopping/Starting/etc 以及机器名称和实例 ID。当您的机器重新启动以及它们是否被移动时,这将为您提供调试所需的所有信息。

于 2013-05-07T12:40:35.717 回答
0

不是 100% 万无一失的方法,但您可以做的是,当虚拟机启动时,您可以使用属性获取角色实例的 id,使用RoleInstance.Id属性获取虚拟机的计算机名称,Environment.MachineName并将其保存在表存储中的某个位置。然后,每次启动 VM 时,您都可以检查此表以确定是否已将新 VM 分配给您的角色实例。

于 2013-05-07T10:22:44.297 回答