【发布时间】:2017-11-24 05:03:39
【问题描述】:
我有一个部署到 Tomcat 8 的应用程序,该应用程序托管在启用了自动缩放的 ElasticBeanstalk 环境中。在应用程序中,我有必须完成的长时间运行的作业,并且所有更改都必须提交到数据库。
问题在于 AWS 可能会在缩减期间终止任何 EC2 实例,然后某些作业可能未按预期完成。默认情况下,AWS 只等待 30 秒,然后终止 Tomcat 进程。
我已经更改了/etc/tomcat8/tomcat8.conf 文件:将参数SHUTDOWN_WAIT 设置为3600(默认为60)。但它并没有解决问题 - 整个实例在 20-25 分钟后被杀死。
然后我尝试通过.ebextensions 文件配置生命周期挂钩(正如here 所解释的那样)。但我不同意生命周期钩子真的推迟了实例的终止(仍在等待 AWS 支持人员对此的答复)。
所以问题是:您是否知道在自动扩缩组缩容时推迟或取消实例终止的任何“合法”方式?
我想要这样的东西:
- AWS 开始在自动扩缩组中扩缩
- 自动缩放组向 EC2 实例发送关闭信号
- EC2 实例开始停止所有活动进程
- Tomcat 进程收到关闭信号,但一直等到活动作业完成
- 应用程序提交作业结果(甚至可能需要 60 分钟)
- Tomcat 进程终止
- EC2 实例已终止
【问题讨论】:
-
这可能是 halpful:stackoverflow.com/questions/42348571/…
标签: amazon-web-services amazon-ec2 autoscaling aws-ebs