繁体   English   中英

Windows服务并关闭EC2节点

[英]Windows Services and shutting down EC2 nodes

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

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

我们在Linux EC2实例中使用它非常好,并且Windows服务在启动,检测信号和手动停止时都可以正常工作。

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

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

编辑 :关于网络中断的问题,我也不是Windows服务最精通的人,如果将Netman设置为服务依赖项,是否可以保证服务终止的顺序呢?

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

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

对于Windows,由于某些技术限制,通过API终止(这意味着通过elasticfox,rightscale等)是很难进行的。 这意味着就像用电源按钮关闭计算机而不是关机一样。

有趣..

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM