У меня есть один стол OpsWorks Nodejs. Я настраиваю несколько приложений nodejs. Теперь проблема заключается в том, что все скрипты nodejs server.js прослушивают порт 80 для проверки жизни амазонки, но порт может использоваться только одним. Я не знаю, как это решить. Я прочитал документацию amazon, но не смог найти решение. Я прочитал, что я могу попытаться изменить разброс переменных рецепта, чтобы установить эту проверку жизни на другой порт, но это не сработало. Любая помощь?aws opsworks несколько приложений nodejs?
4
A
ответ
5
Я некоторое время сражался с этой проблемой и в итоге нашел очень простое решение.
порт устанавливается в атрибутах Deploy поваренную книгу в ...
https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/deploy/attributes/deploy.rb
линией ...
default[:deploy][application][:nodejs][:port] = deploy[:ssl_support] ? 443 : 80
вы можете изменить это с помощью стека пользовательского JSON , такие как:
{
"deploy" : {
"app_name_1": {
"nodejs": {
"port": 80
}
},
"app_name_2": {
"nodejs": {
"port": 3000
}
}
},
"mongodb" : {
...
}
}
Теперь файлы monitrc на /etc/monit.d/node_web_app-.monitrc должны отражать их соответствующие порты, а monit должен сохранять их в живых!
0
Мое решение состояло в том, чтобы выполнить службу узла проверки жизни, которая прослушивает порт 80. Когда запрос проверки жизни амазонки поступает на эту услугу, он отвечает и выполняет свою собственную логику, чтобы проверить работоспособность всех служб. Он отлично работает.
как бы я вперед разные домены/субдомены на порт 80 например: dom1.example.com:80 => APP_NAME_1: 80 dom2.example.com:80 => APP_NAME_1: 3000 –
@ToliZaslavskiy Я убежищем» t играл с субдоменами в opsworks, но я знаю, что для каждого приложения есть настройка поддомена. Вы также можете создать отдельный балансировщик нагрузки в EC2, который указывает на http: // domain: 3000, чтобы попасть в ваше приложение, запущенное на порту 3000. –
@DerekSoike так много иголочек заслуживает. Благодаря! –