2014-12-21 2 views
4

У меня есть один стол OpsWorks Nodejs. Я настраиваю несколько приложений nodejs. Теперь проблема заключается в том, что все скрипты nodejs server.js прослушивают порт 80 для проверки жизни амазонки, но порт может использоваться только одним. Я не знаю, как это решить. Я прочитал документацию amazon, но не смог найти решение. Я прочитал, что я могу попытаться изменить разброс переменных рецепта, чтобы установить эту проверку жизни на другой порт, но это не сработало. Любая помощь?aws opsworks несколько приложений nodejs?

ответ

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 например: dom1.example.com:80 => APP_NAME_1: 80 dom2.example.com:80 => APP_NAME_1: 3000 –

+0

@ToliZaslavskiy Я убежищем» t играл с субдоменами в opsworks, но я знаю, что для каждого приложения есть настройка поддомена. Вы также можете создать отдельный балансировщик нагрузки в EC2, который указывает на http: // domain: 3000, чтобы попасть в ваше приложение, запущенное на порту 3000. –

+0

@DerekSoike так много иголочек заслуживает. Благодаря! –

0

Мое решение состояло в том, чтобы выполнить службу узла проверки жизни, которая прослушивает порт 80. Когда запрос проверки жизни амазонки поступает на эту услугу, он отвечает и выполняет свою собственную логику, чтобы проверить работоспособность всех служб. Он отлично работает.