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 の部分は、私が試していることにコンテキストを設定するだけです。 )