第30回 Docker Swarmを知る 複数の物理サーバでDocker環境をクラスタ化する方法:古賀政純の「攻めのITのためのDocker塾」(2/3 ページ)
複数の物理サーバで稼働するDockerコンテナ同士が通信するには、どうすればよいのでしょうか。そのためには、Docker特有のコンポーネントを理解する必要があります。今回は、Docker環境のネットワーキングを実現するソフトウェアコンポーネントと具体的なコンテナ間の通信方法を紹介します。
クラスタとは?
Docker Swarmによって束ねられた複数のDockerホストの集まり(群れ)は、「クラスタ」と呼ばれます。SwarmとはDockerエンジンの集合体、すなわちクラスタを意味し、クラスタではアプリケーションが稼働するコンテナを「サービス」として定義します。この複数のサービスが配備される場所が「Swarm」です。
Swarmの特徴は、複数のDocker ホストを集め、1つの仮想的な Docker ホストとして扱える点です。一般的に、Dockerの世界で「Swarm」というと、「複数のDockerエンジンが集まったクラスタ」を意味します。つまり「Swarmで稼働するコンテナ」は、Swarmによって形成されたクラスタで稼働するコンテナになります。
Docker Swarmクラスタは、マネージャノードとワーカノードから構成されます。ここでいうノードとは、Swarmクラスタに参加しているDockerエンジンのインスタンスを意味します。マネージャノードは、Swarmクラスタ全体を管理します。マネージャノードは複数台でも構成できます。一方、ワーカノードは、Dockerコンテナが稼働するDockerホスト群です。Docker 1.12以上では、「Ingress」(イングレス)という名前のオーバレイネットワークがビルトインされています。また、ユーザー独自のオーバレイネットワークを定義することもできます。
Docker Swarmは、複数のDockerホストを束ねてクラスタを形成する。Docker 1.12以降では、ビルトインされているオーバレイネットワークにより、Docker Swarmクラスタ内のコンテナ同士で通信が可能
負荷分散機能も提供する
Docker Swarm 1.11までのバージョンで負荷分散を実現するには、「Kubernetes」(クーバネティス)と呼ばれるソフトウェアなどを別途組み込む必要がありました。しかし、Docker 1.12からDocker SwarmがDockerエンジン本体に取り込まれたことで、Kubernetesを使わずにDocker Swarm入りのDockerエンジンで負荷分散できるようになりました。
Swarmクラスタで提供されるIngressオーバレイネットワーク上で稼働するコンテナのアプリケーションは、特定のポートを公開し、外部にサービスを提供します。クライアントからIngressオーバレイネットワーク上で公開されているアプリケーションのポートに対してアクセスすると、サービスが稼働しているクラスタのワーカノードに自動的にルーティングされます。このときのワーカノードの負荷は自動的に分散されます。
マネージャノードは、「Ingressロードバランシング」と呼ばれる負荷分散機能によって、Swarm クラスタの外部に存在するクライアントにサービスを公開します。この時、公開用ポートが割り当てられます。クラスタ外に存在するクライアントは、公開用ポートを使ってSwarmクラスタ上のノードにアクセスできます。Swarmクラスタにおいては、ワーカノード間でサービスをどのように分散するかを指定できます。また、Swarm クラスタの内部には、 DNSがビルトインされており、Swarm マネージャノードは、負荷分散機能を使ってクラスタ内におけるサービスのDNS 名に基づいて、接続要求を分散処理することができます。
関連記事
- 第28回 Docker Networkingの基礎知識 ソフトウェア定義型時代の到来
今回からDocker環境のネットワーキングに迫ります。ネットワーキングと聞くと、とても難解なイメージがあるかもしれませんが要素技術は非常に重要です。従来の物理システムと異なる点もあるDockerのネットワーキングについて、まずは基本を解説します。 - 第29回 Docker Networkingの基礎知識 標準的なネットワークを理解する
引き続きDocker環境におけるネットワーキングの基礎を解説します。今回は、Dockerでの標準的なネットワークを例に、手順を交えながらその構成がどうなっているのかを理解していきましょう。 - 第15回 1つのDockerコンテナでサービスをたくさん動かすには?(基礎編)
サービスを稼働させる上で、ハイパーバイザ型の仮想化環境とDockerコンテナの環境では大きな違いがあります。まずは基礎知識から解説しましょう。 - 【古賀政純の「攻めのITのためのDocker塾」】バックナンバー
Copyright © ITmedia, Inc. All Rights Reserved.