【发布时间】:2019-05-30 10:27:53
【问题描述】:
有很多关于我们的服务在 Auto Scaling 组中运行时如何关闭的讨论。主要关注的是允许服务在实例终止之前执行一些任务。例如,如果我在 java 中的 spring 服务中添加了一个 destroy 方法,期望在实例终止之前调用该方法是否合理?
<bean class="com.github.moaxcp.service.Service" destroy-method="destroy">
在这种情况下,Service 将停止接受数据并将当前状态保存到 s3。
或者如果有一个 systemd 关闭脚本应该在实例终止之前运行。在这种情况下,将所有剩余的日志发送到 s3。
autoscaling guide 提到,当满足缩减策略时,会选择并终止 EC2。这是否意味着实例没有正常关闭?我们的服务能否在实例关闭之前完成一些任务?
EC2 Lifecycle 提供了有关终止功能的一些详细信息。它首先关闭实例,然后终止。在这种情况下,服务可能能够在停止之前完成一些任务。
从文档看来,当 EC2 实例直接终止时,它似乎会正常关闭,但当它被 ASG 终止时,它不会。这是真的?有没有关于这种行为的文档?
【问题讨论】:
-
投票关闭,因为这与 stackoverflow 无关。这里的问题应该和编程有关。这是关于服务器管理的,非常适合 serverfault.com。
-
实例会正常终止,但如果关闭时间过长则会被强制“关闭”。您可以运行一些快速关闭活动,但不要执行需要几分钟的操作。最好的方法是进行试验,看看你能取得什么成果。
-
@anothermh 也许吧?我不确定,因为作为开发人员我想知道我的应用程序是如何关闭的,而作为系统管理员我想知道操作系统是如何关闭的。我也在用 java 编程所有这些,只需要知道行为。
-
但是您没有编程问题,您有 AWS 问题。投票关闭看台。
标签: amazon-web-services amazon-ec2