0

Rancher複数の Amazon インスタンスを使用して、マイクロサービスのクラスターをデプロイしようとしています。

私が遭遇した問題は、すべての Docker コンテナーが 2 つの IP アドレスを持つようになったことです。docker 自体によって定義された 1 つのローカル IP アドレスと、Rancher ブリッジにルーティングされる別の IP アドレス。

45: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:b4:d3:52:be:25 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.4/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.42.232.123/16 scope global eth0
       valid_lft forever preferred_lft forever

によって定義された IP アドレスRancher10.42.*.*範囲内のものであり、すべてのコンテナーで一意です。これが、Spring クラウド構成でこの IP アドレスを使用できるようにする理由です。

いいえ、使用するインターフェイスを構成で指定できることがわかりましたが、サブネットを指定することもできますか? 両方の IP が同じインターフェイス上にあるため ( eth0)、サービスは 10.42. . (たとえば、ディスカバリー サービスに自分自身を登録するため)。

誰かがこれについてさらに助けてくれることを願っています。

私の設定の関連部分:

eureka:
    instance:
        preferIpAddress: true

(Eureka は spring cloud と同じ構成を使用します)

4

2 に答える 2

0

イメージのエントリポイントとしてこのミニ スクリプトを使用して、IPSec マネージド ネットワーク上の牧場主によって設定された IP アドレスを使用して、De Zhang が投稿した同様のソリューションを実装しました。

echo "Setting rancher managed ip address on MANAGED_IP environment variable"
export MANAGED_IP=$(curl --retry 5 --connect-timeout 3 -s 169.254.169.250/latest/self/container/primary_ip)
echo "Rancher IP is ${MANAGED_IP}"
java -Djava.security.egd=file:/dev/./urandom -jar /app.jar

アプリケーションがブートストラップする前に、メタデータ サービスから取得した IP アドレスを設定し、それを環境変数 MANAGED_IP に保存してから出力します。

私の構成リポジトリ(Spring Cloud Config Serverを使用しています)は次のようになります

eureka:
  {...}
  shouldUseDns: false
  instance:
    preferIpAddress: true
    ip-address: ${MANAGED_IP}
于 2017-01-04T17:22:44.023 に答える