如何在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
参考
- AWS EB部署Node应用程序:无法运行npm install
- 在Elastic Beanstalk上通过.ebextensions安装git
- Elastic Beanstalk CLI错误:此目录尚未使用EB CLI进行设置您必须首先运行“eb init”
- Node.js错误:Elastic Beanstalk主机上的EADDRINUSE
- 多个package.json Elastic Beanstalk部署
- 如何重置AWS Elastic Beanstalk上的凭证
- build议在弹性豆茎上安装mongodb
- Amazon Elatisc BeanStalk单实例上的SSL端口NodeJS
- 在elasticbeanstalk中设置NODE_ENVvariables