第31回 Docker Swarmクラスタのオーバレイネットワークを構築する方法:古賀政純の「攻めのITのためのDocker塾」(2/7 ページ)
複数の物理サーバで稼働するコンテナ同士の通信を可能にするには、Docker Swarmを用いたオーバレイネットワークを構築します。前回はその概要について解説しましたが、今回はこの環境を構築する方法を紹介します。
Swarmマネージャを起動する
それでは、Swarmクラスタによるオーバレイネットワークを実際に構築してみましょう。まずは、Swarmクラスタのマネージャノードを構築します。
以下では、ホストOSのn0121、n0122、n0123のrootユーザーのコマンドプロンプトをそれぞれ「n0121 #」「n0122 #」「n0123 #」で表すとします。Swarmクラスタのマネージャノードの作成は、dockerコマンドに「swarm init」を付与します。さらに、「--advertise-addr=」オプションを付与し、SwarmマネージャノードがワーカノードにホストOSとSwarmのAPIによる通信を行う際に利用されるアドレスを記述します。今回はマネージャノードのIPアドレスを指定しています。
n0121 # docker swarm init --advertise-addr=172.16.1.121
この状態で、Swarmクラスタに登録されたノードを確認します。Swarmクラスタに登録されたノードを確認するには、dockerコマンドに「node ls」を付与して実行します。
n0121 # docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 5ownu2cgmq58hd8ia2tistq74 * n0121 Ready Active Leader
すると、物理サーバ1号機のn0121が登録されていることが分かります。1号機のn0121がマネージャノードの場合は、「MANAGER STATUS」列に「Leader」と表示されます。
Swarmワーカノードの起動
次に、n0122とn0123でワーカノードを起動します。ワーカノードを起動するには、クラスタに参加するためのトークンという文字列を得る必要があります。このトークンが同一のノードとして一つのクラスタを形成します。まずは、マネージャノードでワーカノード参加のためのトークンを表示します。
n0121 # docker swarm join-token worker To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-1y881q5hkrpynj7uhd0ahhj5ue24049vg82vnu6jwh6yyl3tcd-emxpycaai05khj37leoj7w4zi \ 172.16.1.121:2377
上記の「--token」以降に表示されている長い文字列が今回構成するSwarmクラスタのトークンです。このトークンを使ってワーカノードをクラスタに参加させます。上記に出力された「docker swarm join」以降のテキストの内容をそのままワーカノードにコピー&ペーストして実行します。ノードn0122をSwarmクラスタにワーカノードとして参加させてみしょう。
n0122 # docker swarm join \ > --token SWMTKN-1-1y881q5hkrpynj7uhd0ahhj5ue24049vg82vnu6jwh6yyl3tcd-emxpycaai05khj37leoj7w4zi \ > 172.16.1.121:2377 This node joined a swarm as a worker.
同様に、n0123をSwarmクラスタにワーカノードとして参加させます。
n0123 # docker swarm join \ > --token SWMTKN-1-1y881q5hkrpynj7uhd0ahhj5ue24049vg82vnu6jwh6yyl3tcd-emxpycaai05khj37leoj7w4zi \ > 172.16.1.121:2377 This node joined a swarm as a worker.
上記よりワーカノードは、マネージャノード(172.16.1.121)の2377番ポートで通信することが分かります。ワーカノードがSwarmクラスタに参加できているかをマネージャノード側で確認します。
n0121 # docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 0gijcr6pvjveceuira0q5iv9h n0122 Ready Active 5ownu2cgmq58hd8ia2tistq74 * n0121 Ready Active Leader 9tma9o8v8qu8z97n3duhafbhw n0123 Ready Active
マネージャノードn0121にワーカノードのn0122とn0123が登録されましたので、Swarmクラスタが構築できました。
関連記事
- 第30回 Docker Swarmを知る 複数の物理サーバでDocker環境をクラスタ化する方法
複数の物理サーバで稼働するDockerコンテナ同士が通信するには、どうすればよいのでしょうか。そのためには、Docker特有のコンポーネントを理解する必要があります。今回は、Docker環境のネットワーキングを実現するソフトウェアコンポーネントと具体的なコンテナ間の通信方法を紹介します。 - 第28回 Docker Networkingの基礎知識 ソフトウェア定義型時代の到来
今回からDocker環境のネットワーキングに迫ります。ネットワーキングと聞くと、とても難解なイメージがあるかもしれませんが要素技術は非常に重要です。従来の物理システムと異なる点もあるDockerのネットワーキングについて、まずは基本を解説します。 - 第29回 Docker Networkingの基礎知識 標準的なネットワークを理解する
引き続きDocker環境におけるネットワーキングの基礎を解説します。今回は、Dockerでの標準的なネットワークを例に、手順を交えながらその構成がどうなっているのかを理解していきましょう。 - 【古賀政純の「攻めのITのためのDocker塾」】バックナンバー
Copyright © ITmedia, Inc. All Rights Reserved.