2016-08-10 20 views
2

私はConsul、RancherとDockerを実験しています。Rancherとのコンテナ/ホスト間通信

私は4つの異なるホスト上で実行されるこのRESTサービスを持っています。 このサービスの各インスタンスは、コンテナリンクを使用して1つのConsulコンテナに登録されます。つまり、すべてのインスタンスが領事コンテナについて知っています。

これは問題なく動作します。

Consulが私のサービスにヘルスチェックを行おうとすると、うまくいかないものがあります。 サービスのインスタンスが領事コンテナと同じホスト上で実行されている場合、それは機能します。 しかし、異なるホスト上で実行されているインスタンスはすべて失敗します。 アドレスが判読不能です。

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

これらのすべてのyeild IP。例えば172.16.0.06 Rancherは同じコンテナの10.43.100.24などのIPをリストしていますが、

私の推測では、ConsulはRancherが示すIP上でヘルスチェックを実行し、コンテナ内で抽出したIPではなく、

私はここで紛失しています。私のサービスは領事館内に登録するために使用するIPをどのように見つけますか?

(これは実際のConsulの使用方法ではありませんが、あるホストのコンテナは別のホストのコンテナに届くことができないということに気付いています。したがって、Consulの部分は、

答えて

3

ドッカーによって発行されたIPアドレスは、クラスタ全体で一意ではありません。したがって、Rancherは10.42.0.0/16サブネットを使用して一意のIPアドレスを割り当てます。

あなたはランチャーIPアドレスを使用するようにアプリケーションを構成することができた場合は、このコマンド

ip addr 

を使用してランチャーIPアドレスを見つけることができます、あなたがホストを介して通信することができるようになります。ランチャー内のネットワークの詳細については

、このページをチェックしてください:http://rancher.com/day-life-packet-inside-rancher/トラブルシューティングガイドは

:あなたが投げるならば、それは正しいIPを提供してhttp://docs.rancher.com/rancher/v1.2/en/faqs/troubleshooting/#cross-host-communication

関連する問題