docker node promote コマンドを使ってワーカーノードを昇格させる方法

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Docker Swarm 内のワーカーノードをマネージャーノードに昇格させる方法を学びます。まず、LabEx 仮想マシン上で Docker Swarm を初期化し、ワーカーノードをそれに参加させます。

セットアップが完了したら、Swarm 内のワーカーノードを特定し、docker node promote コマンドを使用してその役割をマネージャーに変更します。最後に、ノードの新しい役割を確認して、昇格が成功したことを確認します。この実践的な演習は、Docker Swarm 管理の重要な側面を示すものです。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/ls -.-> lab-555183{{"docker node promote コマンドを使ってワーカーノードを昇格させる方法"}} docker/version -.-> lab-555183{{"docker node promote コマンドを使ってワーカーノードを昇格させる方法"}} docker/system -.-> lab-555183{{"docker node promote コマンドを使ってワーカーノードを昇格させる方法"}} end

Docker Swarm の初期化

このステップでは、LabEx 仮想マシン上で Docker Swarm を初期化します。Docker Swarm は、Swarm モードで実行されている Docker ホストのクラスターです。Swarm モードを使用すると、Docker ノードのクラスターを単一の仮想システムとして管理することができます。

Swarm を初期化する前に、仮想マシンにインストールされている現在の Docker バージョンを確認しましょう。

docker version

以下のような出力が表示され、Docker バージョンが 20.10.21 であることが示されます。

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.9
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:01:18 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.9
  Git commit:       363bd3a
  Built:            Tue Oct 25 17:59:35 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b4bd5d2bb63a5d10182b7e90689158e7c7b9b06b
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

では、Docker Swarm を初期化しましょう。Swarm を初期化すると、現在のノードが最初のマネージャーノードになります。マネージャーノードは、Swarm の管理タスクを処理します。例えば、Swarm の状態を維持したり、サービスをスケジュールしたり、Swarm モード API を提供したりします。

docker swarm init コマンドを使用して Swarm を初期化します。他のノードが仮想マシンの IP アドレスを使用して Swarm に参加できるように、アドバタイズアドレスを指定します。YOUR_VM_IP_ADDRESS を LabEx 仮想マシンの実際の IP アドレスに置き換えてください。この IP アドレスは、LabEx 環境の詳細で確認できます。

docker swarm init --advertise-addr YOUR_VM_IP_ADDRESS

コマンドを実行すると、Swarm が初期化されたことを示す出力が表示され、他のノードがワーカーとして Swarm に参加するためのコマンドが提供されます。次のステップで必要になるので、この参加コマンドを控えておいてください。

Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.

To add a worker to this swarm, run the following command on the worker node:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

ワーカーノードを Swarm に参加させる

前のステップでは、Docker Swarm を初期化し、現在のノードがマネージャーになりました。ここでは、この Swarm にワーカーノードを追加するシミュレーションを行います。実際のシナリオでは、ワーカーとして参加させたい別のマシンでこのステップを実行します。ただし、この実験では、同じ仮想マシンを使用してワーカーノードが Swarm に参加するシミュレーションを行います。

ノードをワーカーとして参加させるには、Swarm を初期化した後に提供される参加コマンドが必要です。このコマンドには、Swarm 参加トークンとマネージャーノードの IP アドレスとポートが含まれています。

前のステップで参加コマンドを控えていない場合は、マネージャーノードで docker swarm join-token worker コマンドを使用して取得できます。

docker swarm join-token worker

このコマンドを実行すると、ワーカーノード用の参加コマンドが出力されます。

To add a worker to this swarm, run the following command on the worker node:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377

では、取得した参加コマンドを実行しましょう。同じ仮想マシン上でワーカーをシミュレートしているので、同じターミナルでこのコマンドを実行します。

docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377

ノードがワーカーとして Swarm に参加したことを示す出力が表示されるはずです。

This node joined a swarm as a worker.

これは、単一の仮想マシンが Swarm 内でマネージャーノードとワーカーノードの両方の役割を果たしていることを意味します。

Swarm ノードを一覧表示し、ワーカーノードを特定する

前のステップでは、Docker Swarm を初期化し、同じノードをワーカーとして Swarm に参加させました。ここでは、Swarm 内のノードを一覧表示して、現在の状態を確認し、各ノードの役割を特定しましょう。

Swarm 内のノードを一覧表示するには、docker node ls コマンドを使用します。このコマンドは、Swarm 内の各ノードに関する情報を提供します。情報には、ノードの ID、ホスト名、ステータス、可用性、マネージャーステータス、およびエンジンバージョンが含まれます。

docker node ls

以下のような出力が表示されるはずです。

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxxxxxxxxxxx                  labex-vm            Ready     Active         Leader           20.10.21
yyyyyyyyyyyy                  labex-vm            Ready     Active                          20.10.21

この出力では、ホスト名が labex-vm のエントリが 2 つ表示されます。これは、単一の仮想マシンが Swarm 内で 2 つのノード(1 つのマネージャーと 1 つのワーカー)として動作しているためです。

  • MANAGER STATUSLeader と表示されているノードは、最初のステップで初期化したマネージャーノードです。
  • MANAGER STATUS が表示されていないノードは、2 番目のステップで参加させたワーカーノードです。

ワーカーノードの ID をメモしておいてください。次のステップでこのノードをマネージャーに昇格させる際に、この ID が必要になります。ID は、Swarm 内の各ノードの一意の識別子です。

ワーカーノードをマネージャーに昇格させる

前のステップでは、Swarm 内のノードを一覧表示し、MANAGER STATUS が表示されていないこととノードの ID からワーカーノードを特定しました。ここでは、このワーカーノードをマネージャーノードに昇格させます。ワーカーノードをマネージャーに昇格させることで、Swarm 内のマネージャーノードの数が増えます。これは、本番環境における高可用性と耐障害性にとって重要です。

ノードを昇格させるには、docker node promote コマンドの後に昇格させたいノードの ID を指定します。ワーカーノードの ID は前のステップで取得しています。

WORKER_NODE_ID を実際のワーカーノードの ID に置き換えてください。

docker node promote WORKER_NODE_ID

コマンドを実行した後、ノードが昇格したことを確認する出力が表示されるはずです。

Node WORKER_NODE_ID was promoted to a manager.

これは、以前はワーカーであったノードが、現在は Swarm 内のマネージャーノードになったことを示しています。これで、Swarm には 2 つのマネージャーノードが存在することになります(ただし、このシミュレーション環境では両方とも同じ物理的な仮想マシン上で実行されています)。

ノードの新しい役割を確認する

前のステップでは、ワーカーノードをマネージャーに昇格させました。ここでは、再度 Swarm 内のノードを一覧表示することで、ノードの役割が正常に更新されたことを確認しましょう。

ノードを一覧表示するには、docker node ls コマンドを使用します。

docker node ls

今回は、以下のような出力が表示されるはずです。

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxxxxxxxxxxx                  labex-vm            Ready     Active         Leader           20.10.21
yyyyyyyyyyyy                  labex-vm            Ready     Active         Reachable        20.10.21

以前は MANAGER STATUS が表示されていなかったノードが、現在は MANAGER STATUS の下に Reachable と表示されていることに注目してください。これは、ノードが正常に昇格し、Swarm によってマネージャーノードとして認識されていることを確認するものです。Leader ステータスのノードはプライマリマネージャーであり、Reachable ステータスのノードはセカンダリマネージャーです。

Swarm に複数のマネージャーノードを持つことで、冗長性が提供されます。リーダーマネージャーノードが利用不可になった場合、別のマネージャーノードがその役割を引き継ぎ、Swarm の継続的な動作を保証します。

まとめ

この実験では、単一ノード上で Docker Swarm を初期化し、それを最初のマネージャーにする方法を学びました。次に、ワーカーノードをこの Swarm に参加させ、クラスターを拡張する練習を行いました。実験では、Swarm ノードを一覧表示して新たに追加されたワーカーを特定する手順を案内しました。最後に、docker node promote コマンドを使用してワーカーノードをマネージャーノードに昇格させるという重要な操作を行い、役割の変更が成功したことを確認しました。