1

私は OSX で Docker を使用しており、ブリッジされたネットワークと仮想 IP を共有するいくつかのコンテナーを備えたホストを作成しました (したがって、172.19.0.50 は 172.19.0.1 を指し、そのコンテナーがダウンした場合、172.19.0.50 は 172.19. 0.2 など)。このネットワーク内の他のコンテナは 172.19.0.50 にアクセスでき、どちらのボックスも計画どおりに表示されます。

私が混乱しているのは、特定のコンテナー IP ではなく、172.19.0.50 に移動するようにパブリック 192.168.99.100 IP を指定する方法です。

あまり詳しくない分野なので、アドバイスよろしくお願いします。

4

1 に答える 1

0

いくつかの調査の結果、現時点では「docker ソリューション」はないようです。私はまったく同じ問題を抱えています.1つのdockerホスト上の3つのコンテナにgaleraクラスターがあります。私のように、コンテナーのポート 3306 にアクセスする必要があるとします。これらの galera ノードで仮想 IP を管理していますが、うまく機能しています。しかし、ポートのホスト (mysql の場合は 3306) を virtual_ip:3306 に一致させるように Docker に指示することはできません。ホストからのポートは、コンテナーとポートにマップする必要があります。IP アドレスではありません。次のようなポート マッピングを使用して、仮想 IP を持つコンテナーを実行する場合:

docker run -d -p 3306:3306 docker_image /bin/bash

3306 のパブリック ホスト IP アドレスへの要求は、コンテナー ネットワーク インターフェイスのポート 3306 にリダイレクトされます (理論上は、静的アドレスと仮想アドレスの 2 つのアドレスがあります)。ただし、仮想 IP が別の Docker に移動した場合、ポート マッピングは何も変更されません。とにかく、外部からのリクエストは最初のコンテナにリダイレクトされます。(ちなみに、複数のコンテナーを同じ docker ホストのポートにマップすることはできません。実際には役に立たないでしょう)

私の意見では、コンテナで HAProxy または Nginx リバース プロキシを使用できます。したがって、3306 のホスト ポートを HAProxy の 3306 ポートにマップでき、HAProxy はリクエストをクラスターにリダイレクトできます (負荷分散の有無にかかわらず)。したがって、仮想 IP も必要ありません。しかし、今は素晴らしい単一障害点があります。別のリバース プロキシをバックアップとして追加するのはよいことですが、そうすると、フェイルオーバー用の仮想 IP が必要になり、最初の問題で立ち往生してしまいます。

誰かがこれに対するより良い解決策を持っているなら...

于 2016-02-02T13:18:32.707 に答える