Windows服务和关闭EC2节点

Windows服务和关闭EC2节点,windows,amazon-ec2,cloud,cloud-platform,Windows,Amazon Ec2,Cloud,Cloud Platform,我现在在测试床EC2节点上运行了一个相当简单的Windows服务,基本上: 当服务启动时,在本地数据中心的计算机上调用Web服务(该服务设置为自动启动,因此在实例联机时运行) 作为监视心跳,每分钟调用另一个Web服务一次 当服务停止时调用第三个Web服务 我们在LinuxEC2实例中使用它非常好,Windows服务在启动、心跳和手动停止时都可以正常工作 问题是,当通过ElasticFox、Rightscale等终止节点时,服务似乎从未停止,或者至少从未进行Web服务调用。有什么想法吗 [请注

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

  • 当服务启动时,在本地数据中心的计算机上调用Web服务(该服务设置为自动启动,因此在实例联机时运行)
  • 作为监视心跳,每分钟调用另一个Web服务一次
  • 当服务停止时调用第三个Web服务
我们在LinuxEC2实例中使用它非常好,Windows服务在启动、心跳和手动停止时都可以正常工作

问题是,当通过ElasticFox、Rightscale等终止节点时,服务似乎从未停止,或者至少从未进行Web服务调用。有什么想法吗

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

编辑:关于网络崩溃的问题,我也不是最熟悉Windows服务的人,如果我将Netman设置为服务依赖项,服务终止的顺序会保证遵守吗

关于EBS,我们为运行在普通Linux实例上的类似系统采用的模型将应用程序服务器视为短暂的,因此EBS不会给我们带来太多好处。我们在EC2上使用Rightscale,这使得挂接到Linux实例的操作关闭,因此我们只需将实例的日志发送到其他地方

编辑#2:我从AWS员工那里得到的回复比我预期的要快得多:

对于windows,由于某些技术限制,通过API(即通过elasticfox、rightscale等)终止是一个很难关闭的过程。这意味着这就像是用电源按钮而不是关机来关闭你的机器


有趣..

当Windows关闭时会发生很多事情,所以我猜web服务调用需要的东西已经停止了,第一个猜测是网络连接


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

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