Docker 17.06 を使用して Docker のSwarm mode を始める方法を紹介します。Swarm modeを始める事前準備、Swarm モードのクラスタを作成、クラスタへワーカーを追加、ワーカーが参加できたことを確認してみます。環境は Oracle Linux 7.4 を使用しています。 手順は以下の流れで紹介します。
Preparation for creating Swarm
Swarm を構築する前に、必要なポートへの通信を許可します。 Swarm で使用されるポートは以下のとおりです。
TCP:2377
はクラスタマネジメントの通信UDP:4789
はオーバーレイ・ネットワークの通信TCP:7946/UDP:7946
はノード間の通信
Oracle Linux 7.4 では firewalld を使用しているため以下のように設定します。
firewall-cmd --add-port=2377/tcp firewall-cmd --add-port=2377/tcp --permanent firewall-cmd --add-port=4789/udp firewall-cmd --add-port=4789/udp --permanent firewall-cmd --add-port=7946/tcp firewall-cmd --add-port=7946/tcp --permanent firewall-cmd --add-port=7946/udp firewall-cmd --add-port=7946/udp --permanent
Creating Swarm
Swarm ではマネージャとワーカーという役割があります。マネージャで Swarm を作成して、ワーカーでは作成された Swarm へ参加します。
今回は以下のホスト名および IP で構築します。
- ホスト名:manager (IP:192.168.0.1)
- ホスト名:worker1 (IP:192.168.0.2)
以下のコマンドでマネージャ上で Swarm を作成します。
manager> docker swarm init --advertise-addr 192.168.0.1 Swarm initialized: current node (p97k5n820ngil8hwexbi3cf6g) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-52tm0p6xhxqal3orkrdbtlx0e641f2qeieivxpuzbp35nxe961-8xrsi7x9su9f8ea23sxziiuw0 192.168.0.1:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
以下のコマンドでワーカー上で作成された Swarm へ参加します。
worker1> docker swarm join --token SWMTKN-1-52tm0p6xhxqal3orkrdbtlx0e641f2qeieivxpuzbp35nxe961-8xrsi7x9su9f8ea23sxziiuw0 192.168.0.1:2377 This node joined a swarm as a worker.
ワーカーが Swarm へ参加できたことを確認します。
manager> docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS p97k5n820ngil8hwexbi3cf6g * manager Ready Active Leader ukvti8dr7s2i5khx29mxudnig worker1 Ready Active
Reference
Getting started with swarm mode | Docker Documentation