2016-08-17 19 views
0

私は6個のマイクロサービスをドッキング用のコンテナで梱包しています。すべてのswarmノードで、私は領事エージェントをインストールし、ホストのIPにバインドして、クライアントを0.0.0.0モードでインストールしました。 すべてのマイクロサービスは、私がSwarmマネージャーから実行しているドッカー作成ファイルにあります。 マイクロサービスはJavaとbootstrap.ymlで書かれています。私はconsul agent endpointを指定する必要があります。可能な選択肢は次のとおりです。Docker swarm、Consul and Spring Boot

  • localhostの
  • $ {HOSTIP}環境変数

問題: - ローカルホストは、ホストのローカルホストが、コンテナはlocalhostではない、と私は上の領事エージェントを持っていませんコンテナのローカルホストがホストです。 - $ {HOSTIP}の作成ファイルでこのenv varを指定する必要があります。しかし、Swarm MAnagerがマイクロサービスの開始をスケジュールする場所はわからないので、どのIPアドレスが使用されるのか分からない。

各ノードのホストIPアドレスに公開しようとしましたが、マネージャから作成を実行しているので、この変数は読み取れません。

これを解決する方法はありますか?私は領事クラスター、3マネージャー、3ノードを持っています。各マネージャーとノード上で私は領事代理店を(ドッカーのコンテナとして)開始しました。私が使っているネットワーキングのタイプに関係なく、私はマイクロサービスを起動できません。私は領事を - net = hostと--net = bridgeのように始めましたが、これはうまくいきません。

考えている人はいますか? ありがとうございます。

+0

[この記事を読む](http://blog.nimbleci.com/2016/08/17/how 1000ノード・ドッカー・スウォーム/にセットアップ・アンド・デプロイしてください。 [これも1つ](http://stackoverflow.com/questions/34365604/how-to-create-docker-overlay-network-between-multi-hosts/34434948#34434948)。 – Auzias

+0

v1.12の新しいDocker Engine swarm機能をチェックアウトします。サービスディスカバリが組み込まれました。コンテナのインスタンスを追跡するために領事の使用をもう必要としない場合があります。 https://docs.docker.com/engine/swarm/。ロードバランサを新しいスウォームモードに統合する方法について詳しく説明している次のことをお勧めします。https://technologyconversations.com/2016/08/01/integrating-proxy-with-docker-swarm-tour-around-docker-1 -12-シリーズ/ –

答えて

0

あなたはコンサルもコンテナで走っていますよね?あなたのセットアップでコンテナをリンクすることは可能ですか?だから、領事コンテナを各ホストの "領事"として始め、あなたのマイクロサービスをそれにリンクさせることができます。リンクされたコンテナはホストエントリを取得するので、領事サービスはあなたのサービス内から「領事:8500」に到達可能でなければなりません。 編集:Hashicorpの公式領事ドッカー画像を使用している場合、クライアントアドレスを0.0.0.0に設定できます。これにより、ホスト上で実行されている他のコンテナでconsul APIを利用できるようになります。

+0

私はすべてのホスト上の公式画像であるドッカーコンテナで領事館を運営しています。クライアントのアドレスは0.0.0.0に設定されています。また、私はflag-net = hostで領事を実行しています。作成ファイルには、5つのコンテナがあります。領事はホストネットワーク上にありますが、コンテナはオーバーレイネットワークで開始されているため、リンクは役に立ちません。ブリッジネットワーキングも試しましたが、うまくいきませんでした。 –

+0

True、リンク、 - net = hostは同時に使用できません。 Hashicorpの公式画像では、いくつかの環境変数を使用できます。'docker run -d -e CONSUL_CLIENT_INTERFACE = docker0 -e CONSUL_BIND_INTERFACE = lo --net =ホストconsulエージェント' - クライアントインターフェイスとAPIをDockerブリッジインターフェイスにバインドします(標準は172.17.0.1)。今私はこのIP – kgorskowski

+0

を介して別のコンテナからカール経由で代理店に電話することができました。 Consulはlocalhost上で起動されますが、Javaアプリケーションはコンテナ内にあり、consul endopointはlocalhostなので、コンテナからではなく、VMからlocalhostを使用するだけではわかりません。 –

0

これは私たちがやりたいことではありません。つまり、Swarmにいくつかのものを入れたり、Swarmの外にいくつかのものを置くことはできません。ならない。サービス発見としての領事もスウォームの外では使用できません。簡単な答えは、Docker OrchestrationとService Discoveryを使用し、Consulには関与しないことです。誰かがスウォームを使用している場合、すべてがオーバーレイネットワーク(ウサギ、レディス、エルクなど)でなければなりません...

+0

「これは私たちがやりたいことではない」と言ったとき、OPが何を尋ねるのか、あるいはkgorskowskiが答えたのか話していますか?あなたの回答を編集して明瞭にすることができますか?ありがとうございました! –