2016-12-15 16 views
0

이 Meteor App 서버 코드는 다른 Meteor 작업자의 메소드를 사용하려고 시도합니다. 앱과 작업자 모두 동일한 서버 EC2에있는 별도의 고정 컨테이너에 있습니다.
stream error Network error: ws://localhost:9000/websocket: connect ECONNREFUSED 127.0.0.1:9000동일한 호스트에있는 컨테이너 사이의 Meteor DDP 호출

: 작업자 포트 앱이 방법 appCallingWorker를 발생 9000
에서 실행되고, 나는 노동자 용기가 문자열 '응용 프로그램에서 호출 노동자를'로그 아웃하지만 docker logs containerID이 제공하는 모든이처럼 보이는 많은 라인이다 할 전망

응용 프로그램에서 작업자의 메서드를 어떻게 사용할 수 있습니까? 들으

//App/server/main.js 
let workerConn = DDP.connect('http://localhost:9000'); 
Meteor.methods({ 
'appCallingWorker':() => { 
    workerConn.call('workerMethod'); 
    } 
}); 

//Worker/server/main.js 
Meteor.methods({ 
    'workerMethod': function() { 
    console.log('worker called from App'); 
    } 
}) 

편집
EC2는 AWS ECS의 컨테이너 인스턴스입니다. 말했다으로 9000에서 수신 대기 컨테이너의 IP를 보여줍니다 고정 표시기 호스트에서 편집이
의 iptables -L -n을
9000에와 containerDefinitions.portMapings.containerPort 및 hostPort가 모두 설정되어, 나는 코드에서 로컬 호스트를 교체 ip 그리고 지금은 작동합니다. 그러나 호스트 재부팅이나 컨테이너가 다시 시작되면 ip는 변경 될 수 있습니다. 솔루션을 찾기위한 또 다른 문제.

+0

연결이 거부되었습니다. 즉, localhost : 9000에서 수신 대기하는 것이 없습니다. 앱이 별도의 고정 컨테이너에있는 경우 자체 ip가 있으며 연결을 시도해야합니까? – Mikkel

+0

@Mikkel 내 게시물을 편집하여 좋은 관찰에 응답했습니다. 귀하의 입력에 대한 THX. 프로세스가 완료되지 않은 경우 추가 정보를 제공해주십시오. –

+0

당신이했던 모든 일은 로컬 호스트를 127.0.0.1로 대체했습니다. 이것은 유효한 네트워크 주소가 아닙니다. – Mikkel

답변

0

도커 컨테이너간에 통신하는 데 동일한 문제가있었습니다. 컨테이너가있는 서버의 외부 IP : 포트 주소를 사용해야합니다.

+0

AWS 자동 크기 조절 또는 수동 재 작성 ECS 클러스터의 EC2가 IP를 무효화합니다. 그 다음은 무엇입니까? –

+0

도메인 이름을 사용할 수 있습니까? 'service.myapp.com : 9000'이나 뭐? – rkstar

+0

도메인 이름이없는 백엔드 작업자는 무엇입니까? 도메인 이름을 사용하면 컨테이너가 인터넷을 통과하는 로컬 트래픽이 발생합니까? –