2017-10-27 8 views
1

私はお互いに話す必要のある多くのDockerベースのマイクロサービスを持っています。彼らはお互いに話すためにコンテナ名を使用します。したがって、Docker SwarmまたはKubernetes(w Flannel)でこれを実行すると、Docker DNSに依存してコンテナ名がIPアドレスに解決されます。与えられたドッカーコンテナ名を指定したmesos/marathonを設定する

今、私はこの同じセットのマイクロサービスをMesos + Marathonで実行しようとしていますが、問題が発生しました。すべてのマイクロサービス(Marathon app.App APIを使用)を起動すると、mesosには「mesos-some_long_hash」という名前が付けられます。コンテナが起動されたマシンに「docker ps」と入力すると、この名前が表示されます。したがって、これらのメソスがコンテナ名を割り当てられているため、マイクロサーブは互いに検索できません。

実験として、(Marathon app.appContainer.DockerContainer APIの下の 'parameters'を使用して)必要な名前にコンテナ名を強制しました。マイクロサービスは機能しますが、Marathonはこれらの "mesos-some_long_hash"という名前を期待しているので混乱します。デプロイ時に停止していると報告しています。

私は "mesos-some_long_hash"という名前を望まず、代わりに自分が選んだ名前(サービス名)を使用することをMarathon API経由で指示する方法が必要です。私はMarathonアプリのAPIでこれを行うことは明らかではありません。

誰でもこの方法を知っていますか?

編集: 私はちょうどmesosのコンテナライターについてこれを見つけました。 http://mesos.apache.org/documentation/latest/docker-containerizer/

コンテナ名を変更することはできません。これはひどい!メソス/マラソンフリークアウトをせずにコンテナに名前を付けることができない場合、どのようにマイクロサービスアーキテクチャを実行しますか?

答えて

0

あなたは、彼らがmesos /マラソンFREAKOUTをせずに自分のコンテナに名前を付けることができない場合はどのように誰もがmicroserviceアーキテクチャをするのでしょうか?Mesos


でコンテナに名前を傾けますか

マイクロサービスアーキテクチャーを開始するときには、ペットとペットの2つのコンテナについて考える必要があります。あなたのサーバーのように(this answerthat blog postを参照)。コンテナはいつでもどこからでも起動し、停止することができます(あなたのMesosエージェントの1つ)、名前を付けることはできません。なぜなら、1つのサーバで2つのコンテナを起動できないからです。

+1

同意してから、[Mesos-DNS](https://github.com/mesosphere/mesos-dns)などのツールを使用して、 – js84

1

解決策を見つけました。

私は自分の "USER"ネットワーク上でDockerコンテナを実行しているので、Docker DNSサービスに依存しています。ドッカーの実行コマンドで--network-aliasパラメータを使用して、Docker DNSサービスでエイリアスを作成できます。私はそこにサービス名を入れて、物事が再び始まる。容器にはさまざまな「メソス - ウイド」の名前が付いています。

基本的に、app.appContainer.DockerContainer.parameterの下にキーの値のペアを追加します。ここで、キーは「ネットワークエイリアス」で、値はサービス名です。

私はMesos-DNSも試してみることができます。

関連する問題