Как перезагрузить приложение node автоматически на aws-эластичном бобовом стебле

Я искал этот вопрос на некоторое время, но не могу найти ответ. Мой вопрос заключается в том, что при развертывании приложения nodejs на серверах aws flexible-beanstalk я хочу, чтобы приложение nodejs перезагрузилось автоматически, если сбой приложения.

На самом деле несколько пакетов nodejs уже поддерживают это по командной строке, например forever, но нет простого способа управления консолью или awscli для установки этого пакета и выполнить его для автоматического перезапуска.

Мне интересно, как решить проблему перезапуска на aws eb?

Ответ 1

Да, лучший вариант использования Supervisor, однако, чтобы иметь возможность перезапускать сервер приложений с помощью консольных или beanstalk cli-инструментов aws, вам нужно поместить собственный обработчик в Elastic beanstalk hooks в каталог:/opt/elasticbeanstalk/hooks/restartappserver/Enact Крючок - это оболочка, python или ruby ​​ script, которые помещены в указанную директорию. Поместите логику перезапуска супервизора здесь, и вы сможете перезапустить ее с помощью консоли управления, aws cli tools (http://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/restart-app-server.html), эластичный beanstalk api: (http://docs.aws.amazon.com/elasticbeanstalk/latest/APIReference/API_RestartAppServer.html)

Как добавить hook, установить supervisiord и т.д. вы можете прочитать здесь: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

Ответ 2

Я подтвердил (по состоянию на 11 марта 2015 г.), что EB действительно перезагружает node для вас.

Чтобы подтвердить, я добавил параметр скрытого запроса в свое приложение:

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

Затем проверено в журнале, что произошло исключение, и что мое приложение было перезапущено.

Для справки:

  • Моя конфигурация EB/EC2 - "64-битная версия Amazon Linux 2014.09 v1.0.9 под управлением Node.js"
  • Использование nginx и node 0.10.31

Ответ 3

Добавьте навсегда пакет package.json, чтобы он автоматически устанавливался. Затем в консоли EB, в конфигурации, пользовательская команда node:

node_modules/.bin/forever app.js

Ответ 4

Если вы хотите перезапустить сервер из cron, вы можете использовать эти команды.

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

Reference