Azure有时可以重新启动运行我的角色实例的VM,有时它可以在一个VM上停止它,然后将其部署到另一个VM上 - 例如,如果运行VM的硬件发生故障。
显然,在这两种情况下,VM正常运行时间都将重置。
我如何检测后者 - 如何判断它是一个新的VM,而不是一个旧的自动清理后的旧VM?
答案 0 :(得分:1)
我不确定这是否可行,但也许你可以创建一个本地存储驱动器,其中“Clean on Role Recycle”设置为false。当您的角色开始时,请检查是否存在预定文件。如果文件在那里,那么您将在旧VM上重新启动。如果没有文件,则启动新VM。在任何一种情况下,请在检查后写入文件。
答案 1 :(得分:0)
不是100%万无一失的方法,但您可以做的是,当VM启动时,您可以使用RoleInstance.Id
属性获取角色实例的ID,并使用Environment.MachineName
属性获取VM的计算机名称并将其保存在表存储中的某个位置。然后,每次VM启动时,您都可以检查此表,以确定是否已将新VM分配给您的角色实例。
答案 2 :(得分:0)
我建议你陷阱& log(到共享存储,如ATS / blob / SQLAzure)所有RoleEnvironment事件,例如Stopping / Starting / etc以及机器名和实例Id。这将为您提供在重新启动计算机时调试所需的所有信息以及它们是否被移动。