Windows服务并关闭EC2节点

时间:2009-03-26 00:04:29

标签: windows amazon-ec2 cloud cloud-platform

我现在有一个相当简单的Windows服务在测试平台EC2节点上运行,基本上是:

  • 当服务启动时,在本地数据中心的计算机上调用Web服务(该服务设置为自动启动,因此它在实例联机时运行)。
  • 每分钟调用一次另一个W​​eb服务作为监控心跳。
  • 服务停止时调用第三个Web服务。

我们在Linux EC2实例中使用它非常好,Windows服务在启动,心跳和手动停止时工作正常。

问题在于,当通过ElasticFox,Rightscale等终止节点时,服务似乎永远不会被停止,或者至少它从不进行Web服务调用。有什么想法吗?

[请注意,这是从我在AWS开发人员论坛上的帖子中逐字复制的,但与SO相比,这是超低流量。道歉!]

编辑:关于网络关闭的问题,我也不是最熟悉的Windows服务,如果我将Netman设置为服务依赖关系,服务终止的顺序是否合适保证尊重吗?

关于EBS,我们为在普通的Linux实例上运行的类似系统采用的模型将应用服务器视为短暂的,因此EBS不会对我们有多大好处。我们在EC2之上使用Rightscale,这使得挂起Linux实例关闭,所以我们只是将实例的日志发送到其他地方。

编辑#2 :嗯,我收到AWS工作人员的回复要比我预期的要快得多:

  

对于Windows,由于某些技术限制,通过API终止(这意味着通过elasticfox,权限等)是一种硬关闭。这意味着它就像用电源按钮关闭机器而不是关机。

有趣..

2 个答案:

答案 0 :(得分:1)

当Windows关闭时会发生很多事情,所以我的猜测已经停止了您的Web服务调用需要,首先猜测是网络连接。

这有点棘手,因为您无法在C或D驱动器上保留本地日志文件以检查该调用是否至少是尝试过,因为您将无法再次访问它们已经停止。您是否在可以保存日志文件的实例中使用EBS卷?

答案 1 :(得分:1)

我使用新的Windows EBS根卷测试了启动和关闭组策略脚本。当您停止并启动这些实例时,这两个脚本在适当的序列期间按预期运行。因此,另一种方法是使用EBS根卷运行实例并发出stop命令以确保Windows实例执行所有关闭序列。实例停止后,您应该能够终止实例并释放与其关联的所有EBS卷。