Swarm へのノード参加
読む時間の目安: 2 分
Swarm を生成したら、それは単一の Docker Engine を Swarm モードにしたということです。 Swarm モードを最大限活用するには、Swarm にノードを追加していきます。
- ワーカーノードは、これを追加することによって収容能力を増加させます。 Swarm に対してサービスをデプロイすると Engine は、ワーカーノード、マネージャーノードを問わず、利用可能なノードに対してタスクをスケジューリングします。 Swarm に対してワーカーノードを追加すると、Swarm のスケールが増加し、マネージャーの Raft 合意に影響することなくタスクを取り扱うことができます。
- マネージャーノードは耐障害性能を向上させます。 マネージャーノードは Swarm においてオーケストレーション機能およびクラスター管理機能を実現します。 マネージャーの中では、リーダーとなるノードがオーケストレーションタスクを管理します。 リーダーノードが処理不能になると、残りのマネージャーノードの中から新たなリーダーが選出され、オーケストレーション機能と Swarm 状態を復元します。 デフォルトではマネージャーノードも通常のタスクを実行します。
Docker Engine が Swarm に参加する際には、docker swarm join
コマンドによって示される 参加トークン(join-token)を利用します。
ノードがトークンを利用するのはこの参加のときだけです。
この後にトークンのローテート操作を行っても、既存の Swarm ノードには影響しません。
Docker Engine の Swarm モード実行 を参照してください。
ワーカーノードとしての参加
ワーカーノード用に、参加トークンの表示も込みで join コマンドを表示するには、マネージャーノード上にて以下のコマンドを実行します。
$ docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
192.168.99.100:2377
$ docker swarm join-token worker
Swarm にワーカーを追加するには、以下のコマンドを実行してください。
docker swarm join \
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
192.168.99.100:2377
ワーカーノード上において、出力結果どおりのコマンドを実行して Swarm に参加します。
$ docker swarm join \
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
192.168.99.100:2377
This node joined a swarm as a worker.
$ docker swarm join \
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
192.168.99.100:2377
このノードはワーカーとして Swarm に参加しました。
docker swarm join
コマンドは以下の処理を行います。
- 現在のノードである Docker Engine を Swarm モードに切り替えます。
- マネージャーに TLS 証明書を要求します。
- マシンホスト名を使ってノード名を定めます。
- Swarm トークンに基づくマネージャーのリッスンアドレスで、現在のノードを Swarm に参加させます。
- 現在のノードの利用状態(availability)を
Active
に設定します。 これはスケジューラーからのタスク受け入れが可能であることを意味します。 - 現在のノードに対して、
ingress
オーバーレイネットワークを拡張します。
マネージャーノードとしての参加
docker swarm join
を実行してマネージャートークンを受け渡すと、Docker Engine はワーカーノードの場合と同様に、Swarm モードへの切り替えを行います。
マネージャーノードは Raft 合意(raft consensus)にも参加します。
新たに参加させたこのノードはReachable
(到達可能)となりますが、Swarm のLeader
は、それまでのものがそのまま担当します。
Docker はクラスターの高可用性を実現するため、マネージャーノードを 3 つあるいは 5 つにより構成することが推奨されます。 Swarm モードにおけるマネージャーノードは Raft を利用してデータ共有を行うため、マネージャーノード数は奇数としなければなりません。 Swarm はマネージャーノードの半数以上の quorum(多数票)が得られれば、機能し続けることができます。
Swarm マネージャーと Swarm の管理に関する詳細は Docker Engine の Swarm 管理と保守 を参照してください。
マネージャーノード用に、参加トークンの表示も込みで join コマンドを表示するには、マネージャーノード上において以下のコマンドを実行します。
$ docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6 \
192.168.99.100:2377
$ docker swarm join-token manager
Swarm にマネージャーを追加するには、以下のコマンドを実行してください。
docker swarm join \
--token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6 \
192.168.99.100:2377
新たなマネージャーノード上において、出力結果どおりのコマンドを実行して Swarm に参加します。
$ docker swarm join \
--token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6 \
192.168.99.100:2377
This node joined a swarm as a manager.
$ docker swarm join \
--token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6 \
192.168.99.100:2377
このノードはマネージャーとして Swarm に参加しました。
さらに詳しく
- コマンドラインリファレンス の
swarm join
- Swarm モードチュートリアル