我有一個應用程序部署到託管在ElasticBeanstalk環境上並啓用自動縮放的Tomcat 8。在應用程序中,我必須完成長時間運行的作業,並且必須將所有更改都提交到數據庫。如何在AWS AutoScaling終止EC2實例時在Tomcat上完成長時間運行的任務?
問題是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實例在終止
這可以是暫停:https://stackoverflow.com/questions/42348571/aws-scaling-in-termination-protection-for-ec2-container-service/42351705#42351705 – Mahdi