2016-12-15 7 views
0

このMeteor Appサーバーコードは、別のMeteorワーカーのメソッドを使用しようとします。アプリとワーカーの両方が同じサーバーEC2上の別々のドッカーコンテナにあります。
stream error Network error: ws://localhost:9000/websocket: connect ECONNREFUSED 127.0.0.1:9000同じホスト上のコンテナ間のMeteor DDP呼び出し

:労働者は、Appの方法 appCallingWorkerを起動すると、私は文字列「アプリケーションから呼び出された労働者を」労働者コンテナのログを参照することが期待しかし docker logs containerIDが与えるすべてはこのように見ている多くの行でポート9000
上で実行されています

どのようにして、アプリケーションからワーカーのメソッドを使用できますか? THX

//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を示しドッキングウィンドウのホスト上で編集2
のiptables -L -nを
9000に及びcontainerDefinitions.portMapings.containerPortとHOSTPORTの両方が設定されている、私はコードではlocalhostを置き換えipと今すぐ動作します。しかし、ホストの再起動やコンテナの再起動によってipが変更される可能性があります。

+0

接続が拒否されました。つまり、localhost:9000でリッスンすることはありません。あなたのアプリケーションが別々のドッカーコンテナにある場合、それらは独自のIPを持っていますか、それに接続しようとしていますか? – Mikkel

+0

@Mikkel私は私の記事の編集であなたに良い意見に答えました。あなたの入力のためのthx。私のプロセスが完了していない場合は、さらに情報を提供してください。 –

+0

あなたがしたのは、localhostを127.0.0.1に置き換えたものです。これは有効なネットワークアドレスではありません。 – Mikkel

答えて

0

ドッカーのコンテナ間で通信しようとしているのと同じ問題がありました。あなたのコンテナがあるサーバの外部IP:ポートアドレスを使用する必要があります。

+0

AWSオートスケールまたはマニュアル再作成ECSクラスタ内のEC2はIPを無効にします。 –

+0

ドメイン名を使用できますか? 'service.myapp.com:9000'なんか? – rkstar

+0

ドメイン名を持っていないバックエンドワーカーはどうでしょうか?ドメイン名を使用すると、コンテナ間のローカルトラフィックがインターネットを横断しますか? –

関連する問題