2017-02-24 7 views
0

いくつかのマイクロサービスを展開すると、レジストリに正しくないIPでランダムに登録されることがあります。私はユーレカがコンテナのIPを間違って識別していることを理解しています... このapplication.yml configのようないくつかのソリューションをテストしましたが、正常に動作しませんでした。何か案は?JuresterレジストリがEurekaから間違ったIPアドレスを取得しました(Dockerデプロイ)

eureka: 
    instance: 
     prefer-ip-address: true 
     hostname: ${server.address} 
     ip-address: ${server.address} 

私はここで、このソリューションを見た:https://groups.google.com/d/msg/jhipster-dev/n7s7OTgT18E/RtZ3O4hlEwAJ

をしかし、この設定は「文字列値に 『server.address』プレースホルダを解決できませんでした」がスローされます。これは読んだときに意味があります。Reference a key in application.yml

+0

すべてのサービスがeurekaのカスタムインスタンスIDで自分自身を登録していることを確認していますか?おそらくユーレカはIDを使って覚えている古いipsのサービスを提供するでしょう –

+0

はい、インスタンスIDはランダムな値です:instanceId:sd_api:$ {spring.application.instance_id:$ {random.value}} – Snowblind

+0

私はリダイレクトするときに問題が発生するコンテナ内のポート。コンテナがポートを公開している場合、Eurekaは誤ったIPを登録します。 – Snowblind

答えて

0

@snowblindこれはおそらくドッカーコンテナのネットワークに問題があります。実際に最初の登録を行うとき、ユーレカはアプリケーション内から利用可能なものだけを使用します。それで、java.net.InetAddressのようなものでアドレスを決定し、この値をレジストリに伝播して、サービスに到達する方法を宣伝します。しかし、あなたのケースでは、それは間違った情報を報告しているようです。

まずは、常にコンテナポートを同じホストポートにマッピングしてください。代わりに、あなたのコンテナがホストと同じネットワークインターフェイスを共有するように、ドッカーホストネットワーキング( - net = host)を使用することもできます。これは、ドッカーの作成では、net: "host"をサービスデシジョンに追加することで可能です。

もう一つのアイデアは、私たちがデフォルトで設定するIPベースのもの(prefer-ip-adress = true)とは対照的に、ホスト名ベースのユーレカ登録を使用することですが、試したことがない限り動作するとは保証できませんそれを自分でしたい場合は、ユーレカのドキュメントを参照してください。

+0

私はドッカーの作成でnetwork_mode:hostを使用していますが、同じ問題が発生しています。ホスト名では動作しますが、ip(他のサービスにはこの情報が必要です)を使用する必要があります。助けてくれてありがとう! – Snowblind

関連する問題