是否可能会延迟使虚拟机角色可用,直到启动任务完成?
在将机器安全地添加到负载平衡器之前,我需要在虚拟机启动时完成一些任务。有没有办法做到这一点?
找到了解决方案。在 VM Role Startup windows 服务中,我可以处理 RoleEnvironment.StatusCheck 事件。然后我可以调用 SetBusy() 来告诉阻止实例在负载均衡器中可用。
private void RoleEnvironmentStatusCheck(object sender, RoleInstanceStatusCheckEventArgs e)
{
if (this.busy)
{
e.SetBusy();
}
statusCheckWaitHandle.Set();
}
我相信将taskType
属性设置为simple
将使角色在实际开始之前等待任务完成:
<ServiceDefinition name="MyService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WebRole name="WebRole1">
<Startup>
<Task commandLine="Startup.cmd" executionContext="limited" taskType="simple">
</Task>
</Startup>
</WebRole>
</ServiceDefinition>