我现在有一个相当简单的Windows服务在测试平台EC2节点上运行,基本上是:
我们在Linux EC2实例中使用它非常好,Windows服务在启动,心跳和手动停止时工作正常。
问题在于,当通过ElasticFox,Rightscale等终止节点时,服务似乎永远不会被停止,或者至少它从不进行Web服务调用。有什么想法吗?
[请注意,这是从我在AWS开发人员论坛上的帖子中逐字复制的,但与SO相比,这是超低流量。道歉!]
编辑:关于网络关闭的问题,我也不是最熟悉的Windows服务,如果我将Netman设置为服务依赖关系,服务终止的顺序是否合适保证尊重吗?
关于EBS,我们为在普通的Linux实例上运行的类似系统采用的模型将应用服务器视为短暂的,因此EBS不会对我们有多大好处。我们在EC2之上使用Rightscale,这使得挂起Linux实例关闭,所以我们只是将实例的日志发送到其他地方。
编辑#2 :嗯,我收到AWS工作人员的回复要比我预期的要快得多:
对于Windows,由于某些技术限制,通过API终止(这意味着通过elasticfox,权限等)是一种硬关闭。这意味着它就像用电源按钮关闭机器而不是关机。
有趣.. 的
答案 0 :(得分:1)
当Windows关闭时会发生很多事情,所以我的猜测已经停止了您的Web服务调用需要,首先猜测是网络连接。
这有点棘手,因为您无法在C或D驱动器上保留本地日志文件以检查该调用是否至少是尝试过,因为您将无法再次访问它们已经停止。您是否在可以保存日志文件的实例中使用EBS卷?
答案 1 :(得分:1)
我使用新的Windows EBS根卷测试了启动和关闭组策略脚本。当您停止并启动这些实例时,这两个脚本在适当的序列期间按预期运行。因此,另一种方法是使用EBS根卷运行实例并发出stop命令以确保Windows实例执行所有关闭序列。实例停止后,您应该能够终止实例并释放与其关联的所有EBS卷。