我现在在测试平台 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 等)终止是硬关机。这意味着它就像用电源按钮关闭机器而不是关机。
有趣的..