如何在aws elastic-beanstalk上自动重启节点应用程序

我已经search了这个问题一段时间,但无法find答案。 我的问题是在aws弹性beanstalk服务器上部署nodejs应用程序时,我想如果应用程序崩溃,nodejs应用程序将自动重新启动。

实际上很less有nodejs包已经通过命令行支持了,比如永远的 ,但是从控制台pipe理或者awscli安装这个包并执行它来自动重启,并没有简单的方法。

我想知道你如何解决aws eb上的重启问题?

是的,更好的select使用Supervisor,但是为了能够借助aws控制台或beanstalk cli工具来重新启动应用服务器,您需要将自己的处理程序放到以下目录中的Elastic Beanstalk挂钩:/ opt / elasticbeanstalk / hooks / restartappserver /制定Hook是放置在提到的目录中的shell,python或ruby脚本。 把supervisord的逻辑重新启动在这里,你将能够重新启动pipe理控制台,aws cli工具的帮助( http://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/restart-appserver .html ),弹性beanstalk api 🙁 http://docs.aws.amazon.com/elasticbeanstalk/latest/APIReference/API_RestartAppServer.html

如何添加挂钩,安装supervisiord等你可以在这里阅读: http : //docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

我已经确认(截至2015年3月11日)EB确实为您重启节点。

为了确认,我添加了一个隐藏的查询参数给我的应用程序:

 if (req.query.testcrash == 'true') { setTimeout(function(){ undefined.crashMe(); }, 100); } 

然后在日志中validation发生了exception,并且我的应用程序已重新启动。

以供参考:

  • 我的EB / EC2configuration是“运行Node.js的64位Amazon Linux 2014.09 v1.0.9”
  • 使用nginx和节点0.10.31

永远添加到你的package.json,以便自动安装。 然后在EB控制台中,在configuration下,自定义节点命令:

 node_modules/.bin/forever app.js 

如果你想从cron重新启动服务器,那么你可以使用这些命令。

 aws elasticbeanstalk restart-app-server --environment-name my-env 

参考