第30回 Docker Swarmを知る 複数の物理サーバでDocker環境をクラスタ化する方法:古賀政純の「攻めのITのためのDocker塾」(3/3 ページ)
複数の物理サーバで稼働するDockerコンテナ同士が通信するには、どうすればよいのでしょうか。そのためには、Docker特有のコンポーネントを理解する必要があります。今回は、Docker環境のネットワーキングを実現するソフトウェアコンポーネントと具体的なコンテナ間の通信方法を紹介します。
ルーティング・メッシュとは?
このようにSwarmが提供するクラスタでは、Ingressロードバランシングによる負荷分散機能によってクライアントにサービスを公開しますが、この際、全ノードは「Ingressルーティング・メッシュ」を形成します。
ルーティング・メッシュは、Swarm内蔵のロードバランサとコンテナのポート間におけるルーティングのためのメッシュ構造の通信路のことを指します。このメッシュ構造のおかげで、Swarmクラスタでは、例え、あるノード上で目的のサービス(コンテナ)が稼働していなくても、別のノードで稼働するコンテナがサービスをクライアントに提供することができます。
クライアントからサービスの要求のためのアクセスが発生すると、ルーティング・メッシュの仕組みにより、Swarm内蔵のロードバランサがアクセス要求をコンテナに転送します。通常は、コンテナを起動する際にアクセス元のポート番号と転送先のポート番号を対応付けるように指定します。例えば、クライアントから公開用ポートとして8080番ポートでアクセス要求を行われたとします。すると、Swarm内蔵のロードバランサは、クライアントからのアクセス要求をコンテナの80番ポートに転送します。このとき、コンテナが稼働していないホスト上に対して、クライアントからの8080番へのアクセス要求が行われたとしても、ルーティング・メッシュの仕組みを通じて80番ポートのサービスを提供するコンテナが稼働しているホストにアクセス要求が転送されます。
Docker,ルーティング・メッシュの模式図。クライアントからの8080番ポートへのアクセスは80番ポートへ転送される。コンテナが稼働していないワーカノードであっても、ルーティング・メッシュによりアクセス要求がコンテナに転送される
今回は、複数の物理サーバで稼働するDockerコンテナ同士のネットワーク通信を行うための環境について解説しました。次回はこのオーバレイネットワーク環境を実際に構築する方法を紹介します。
古賀政純(こが・まさずみ)
日本ヒューレット・パッカード株式会社 オープンソース・Linuxテクノロジーエバンジェリスト。兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師、SIを経験。2006年、米国ヒューレット・パッカードからLinux技術の伝道師として「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。プリセールスMVPを4度受賞。現在は日本ヒューレット・パッカードにて、Hadoop、Spark、Docker、Linux、FreeBSDなどのサーバー基盤のプリセールスSE、文書執筆を担当。日本ヒューレット・パッカードが認定するオープンソース・Linux テクノロジーエバンジェリストとして、メディアでの連載記事執筆、講演活動なども行っている。Red Hat Certified Virtualization Administrator, Novell Certified Linux Professional, Red Hat Certified System Administrator in Red Hat OpenStack, Cloudera Certified Administrator for Apache Hadoopなどの技術者認定資格を保有。著書に「OpenStack 実践ガイド」「Docker 実践ガイド」「CentOS 7実践ガイド」「Ubuntu Server実践入門」などがある。趣味はレーシングカートとビリヤード。古賀氏の最新記事が読めるブログはこちら。
関連記事
- 第28回 Docker Networkingの基礎知識 ソフトウェア定義型時代の到来
今回からDocker環境のネットワーキングに迫ります。ネットワーキングと聞くと、とても難解なイメージがあるかもしれませんが要素技術は非常に重要です。従来の物理システムと異なる点もあるDockerのネットワーキングについて、まずは基本を解説します。 - 第29回 Docker Networkingの基礎知識 標準的なネットワークを理解する
引き続きDocker環境におけるネットワーキングの基礎を解説します。今回は、Dockerでの標準的なネットワークを例に、手順を交えながらその構成がどうなっているのかを理解していきましょう。 - 第15回 1つのDockerコンテナでサービスをたくさん動かすには?(基礎編)
サービスを稼働させる上で、ハイパーバイザ型の仮想化環境とDockerコンテナの環境では大きな違いがあります。まずは基礎知識から解説しましょう。 - 【古賀政純の「攻めのITのためのDocker塾」】バックナンバー
Copyright © ITmedia, Inc. All Rights Reserved.