我有一个部署到Tomcat 8的应用程序,该应用程序托管在ElasticBeanstalk环境中,并启用了自动扩展功能。在应用程序中,我有长时间运行的作业必须完成,所有更改必须提交到数据库。
问题是AWS可能会在规模扩张期间终止任何EC2实例,然后某些作业可能无法按预期完成。默认情况下,AWS只等待30秒,然后终止Tomcat进程。
我已经更改了/etc/tomcat8/tomcat8.conf
文件:将参数SHUTDOWN_WAIT
设置为3600
(默认情况下为60
)。但它没有解决问题 - 整个实例在20-25分钟后被杀死。
然后我尝试通过.ebextensions
文件配置生命周期挂钩(因为它解释了here)。但我无法批准生命周期钩子真的推迟了实例的终止(仍在等待AWS支持人员对此的回答)。
所以问题是:你知道吗" legal"当自动缩放组扩展到?
时推迟或取消实例终止的方法我希望有类似的东西:
答案 0 :(得分:0)
Elastic Beanstalk由两部分组成--API和Worker。 API是自动缩放的,因此可能会下降。工人运行的时间更长。您可以使用SQS在它们之间进行通信。这就是他们设计的方式。
您肯定可以调整系统。这是平台即服务,因此您可以通过将最小实例设置为最大值来强制自动缩放组不会出现故障。你也可以关闭健康检查 - 这也可以杀死实例......但这是黑客攻击,后者可以踢。