web-dev-qa-db-ja.com

ドッカースウォームモードでネットワークとロードバランサーはどのように機能しますか?

Dockersとコンテナーは初めてです。私はドッカーのチュートリアルを行っていて、この情報に出くわしました。 https://docs.docker.com/get-started/part3/#docker-composeyml

   networks:
     - webnet
networks:
  webnet:

ウェブネットとは?文書は言う

Webnetと呼ばれる負荷分散ネットワークを介してポート80を共有するようにWebのコンテナに指示します。 (内部的には、コンテナ自体が一時ポートでウェブのポート80に公開されます)。

では、デフォルトでは、オーバーレイネットワークはDockerクラスターで負荷分散されていますか?使用されている負荷分散アルゴリズムとは何ですか?

実際、オーバーレイネットワークにロードバランシングがあるのはなぜかはわかりません。

25
SunilS

私はドキュメントよりも明確であるかどうかはわかりませんが、言い換えれば役立つかもしれません。

まず、ここでフォローしているドキュメントは、 swarm mode ドッカーの。

とは - swarm mode

スウォームは、サービスをデプロイするDockerエンジンまたはノードのクラスターです。 Docker Engine CLIおよびAPIには、スウォームノードの管理(ノードの追加や削除など)、およびスウォーム全体でのサービスのデプロイとオーケストレーションのためのコマンドが含まれています。

SOドキュメントから:

スウォームは、サービスをまとめてデプロイする多数のDockerエンジン(またはノード)です。 Swarmは、多くの物理マシン、仮想マシン、またはクラウドマシンに処理を分散するために使用されます。

したがって、スウォームモードでは、マルチホスト(VMおよび/または物理)クラスタ、つまり docker engine

Q1。 Webnetとは

webnetは、スタックの起動時に作成される overlay network の名前です。

オーバーレイネットワークは、スウォームに参加しているDockerデーモン間の通信を管理します

マシンのクラスターでは、仮想ネットワークが作成されます。各サービスにはipがあり、内部DNSエントリー(サービス名)にマップされており、Dockerが着信パケットを群れのすべての場所の適切なコンテナーにルーティングできるようにします(集まる)。

Q2。したがって、デフォルトでは、オーバーレイネットワークはDockerクラスターで負荷分散されますか?

はい、オーバーレイネットワークを使用している場合は、サービスnetworks構成を削除してバイパスすることもできます。次に、公開するサービスのポートを publish にする必要があります。

Q3。使用される負荷分散アルゴリズムとは何ですか?

これから SO質問 スウォームマスターが回答 bmitch ;):

アルゴリズムは現在ラウンドロビンであり、プラグイン可能であることを示す兆候はまだありません。より高いレベルのロードバランサーを使用すると、スウォームノードをメンテナンスのために停止できますが、スウォームモードのラウンドロビンアルゴリズムによって、スティッキーセッションやその他のルーティング機能が取り消されます。

Q4。実際、オーバーレイネットワークに負荷分散があるのはなぜですか

Docker swarmモード/サービスの目的は、replicatedサービスのオーケストレーションを許可することです。つまり、スウォームにデプロイされたコンテナーをスケールアップ/スケールダウンできます。

再び docs から:

スウォームモードには、スウォーム内の各サービスをDNSエントリに自動的に割り当てる内部DNSコンポーネントがあります。 Swarm Managerは、内部負荷分散を使用して、サービスのDNS名に基づいてクラスター内のサービス間でリクエストを分散します。

したがって、プライベートネットワークのDNSエントリやポート構成などを処理せずに、10個のまったく同じコンテナ(アプリケーションhtml/jsを使用してnginxとしましょう)をデプロイできます。受信リクエストは、参加しているホストに自動的に負荷分散されます群れ。

お役に立てれば!

40