3

Consul、Rancher、および Docker を試しています。

したがって、4 つの異なるホストで実行されるこの REST サービスがあります。このサービスの各インスタンスは、コンテナー リンクを使用して単一の Consul コンテナーに登録されます。つまり、すべてのインスタンスが Consul コンテナを認識しています。

これはうまくいきます。

うまく機能しないのは、Consul が私のサービスに対してヘルスチェックを行おうとするときです。サービスのインスタンスが領事コンテナーと同じホストで実行されている場合、それは機能します。ただし、別のホストで実行されているインスタンスは失敗します。アドレスを取得できません。

いくつかの異なる方法でサービス インスタンス コンテナーの IP を抽出しようとしました。1) コンテナー内の使用可能なすべての非稼働インターフェースと IP をリストします。2) コンテナー内の「ホスト名 -i」。

それらはすべて IP を生成します。たとえば、Rancherは同じコンテナー172.16.0.06 などの IP をリストします。10.43.100.24

私の推測では、Consul はコンテナ内で抽出した IP ではなく、Rancher が示す IP に対してヘルス チェックを実行する必要があります。

私はここで少し途方に暮れています。私のサービスは、Consul 内で自分自身を登録するために使用する必要がある IP をどのように見つける必要がありますか?

(これは実際には Consul の使用方法ではないことは承知していますが、問題は、あるホストのコンテナーが別のホストのコンテナーにアクセスできないことです。そのため、Consul の部分は、私が試していることにコンテキストを設定するだけです。 )

4

2 に答える 2

1

@leodotcloud の回答は、解析マジックを投げると正しい IP が提供されるため、正しいとマークしました。

でも、Rancher Froums からもっと率直な答えがありました。 https://forums.rancher.com/t/how-to-get-rancher-virtual-ip-from-within-a-container/3668

この URI を呼び出して、アドレスを取得できます。 http://rancher-metadata/2015-12-19/self/container/primary_ip

于 2016-08-11T04:24:43.827 に答える