2016-08-16 6 views
0

私は小規模なWebアプリケーションを作成してマイクロサービスアーキテクチャを学んでいます。アプリには以下のコンポーネントがあり、それぞれはドッカーコンテナによってホストされます。 NodeJSで書かれている私のAPIゲートウェイでMarathonによって作成された依存型ドッカーコンテナのIPとポートをプログラムで指定する方法はありますか。

enter image description here

、私が呼び出す、いくつかの場所があります:

request('http://service_b_ip_addr:port/get_service_b', callback); 

マラソンは、サービスBのドッキングウィンドウを持ってまでしかし、service_b_ip_addrportの両方が知られていませんコンテナが作成されます。このようmesos-DNSまたはマラソンポンドなどの一部のサービスディスカバリメカニズムと

、私はちょうどservice_b.marathon.comのようなものにservice_b_ip_addrを変更することができると思います。

しかし、私はportを私のプログラムに入れなければなりません。

ご協力いただきありがとうございます。


PS:

  1. 私は、サービスの複数のインスタンスが同じMesosスレーブ上で見つけることができることを与えられたブリッジネットワークモードを使用しています。だからportはNAT付き乱数です。

答えて

1

this answerをご覧ください。

marathon-lbを使用する場合は、プロキシであるためポートを渡す必要はなく、サービスは名前だけであることがわかります。

mesos-dnを使用する場合は、ipとportを取得するSRV要求を行う必要があります。ノードではdns.resolveSrv(hostname, callback)で行うことができますが、あなたのDNSはdefaul(53)ポートで公開されていなければならず、SRV要求をサポートしています(mesos-dnsがサポートしています)。

関連する問題