2014-12-21 3 views
4

하나의 OpsWorks Nodejs Stack이 있습니다. 여러 nodejs 애플 리케이션을 설치했습니다. 문제는 이제 모든 nodejs server.js 스크립트가 아마존 수명 점검을 위해 포트 80에서 수신 대기하지만 포트는 하나만 사용 가능하다는 것입니다. 이 문제를 해결하는 방법을 모른다. 아마존 문서를 읽었지만 해결책을 찾지 못했습니다. 이 레서피를 다른 포트로 설정하기 위해 레서피 변수를 변경하려고 할 수는 있지만 작동하지 않는다는 것을 읽었습니다. 어떤 도움이 필요합니까?aws opsworks 여러 개의 노드 애플리케이션?

답변

5

나는이 문제로 한동안 싸워 결국 매우 간단한 해결책을 발견했습니다.


포트가 배포 요리 책의 속성에서 설정

... 라인에 의해

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" : { 
    ... 
    } 
} 

이제 /etc/monit.d/node_web_app-.monitrc에있는 monitrc 파일은 각각의 포트를 반영해야하고 monit은이를 유지해야합니다!

+0

방법 것 나는 앞으로 다른 도메인/포트의 하위 도메인 80 예 : dom1.example.com:80 => APP_NAME_1 : 80 dom2.example.com:80 => APP_NAME_1 : 3000 –

+0

@ToliZaslavskiy 나는 천국 ' opsworks에서 하위 도메인과 함께 플레이했지만 각 앱에 대한 하위 도메인 설정이 있다는 것을 알고 있습니다. 또한 포트 3000에서 실행중인 앱을 방문하기 위해 http : // domain : 3000을 가리키는 별도의로드 밸런서를 EC2에 만들 수 있습니다. –

+0

@DerekSoike 너무 많은 upvotes가 가치가 있습니다. 감사! –

0

내 솔루션은 포트 80에서 수신 대기하는 수명 검사 노드 서비스를 구현하는 것이 었습니다. 아마존 수명 검사 요청이 해당 서비스에 적용되면 응답하고 자체 논리를 실행하여 모든 서비스의 상태를 확인합니다. 그것은 위대한 작품.

관련 문제