LoginSignup
1
1

More than 3 years have passed since last update.

Docker Swarmでクラスタを構成する方法

Last updated at Posted at 2021-07-01

Docker Swarmとは

複数のDockerホストを束ねてクラスタを構成するツール。
どのホストにどのコンテナを配置すべきか、ホストをまたいだコンテナ同士の通信制御といったコンテナオーケストレーションの役割を果たす。

Dockerでの名称のまとめ

よく出てくるワードを下記にまとめる。

名称 役割 コマンド
Compose 複数コンテナを使うDockerアプリの管理(シングルホスト) docker-compose
Swarm クラスタ構築や管理を担う(マルチホスト) docker swarm
Service クラスタ内のService(コンテナの集まり)を管理する docker service
Stack 複数のServiceをまとめたアプリ全体の管理 docker stack

Docker Swarmクラスタを構成する方法

サーバを複数台を用意して、それぞれDocker環境を構築する。

Docker Playgroundを利用すればDockerホスト(Ubuntu)をカンタンに追加できるので、利用します。
また学習目的のため、インフラコストの出費を避ける狙いもあります。

マスタノードとなるホストでの設定

+ADD NEW INSTANCEのボタンを押下して、マスタノードとなるホストを追加します。
そして、マスタノードとなるホストのターミナルで下記のコマンドを叩きます。

# Initialize
docker swarm init --advertise-addr <マスタノードのIP>

実行結果のサンプルclip-20201001142126.png

上記ターミナル画面に表示されている通り、マスタノードが管理したいワーカーノードを追加する場合は下記コマンドを実行してください。とメッセージがでます。

 docker swarm join --token <トークン> <マスタノードのIP>:<マスタノードのPORT>

スレーブとなるホスト(ワーカーノード)を追加する

+ADD NEW INSTANCEのボタンを押下して、ワーカーノードとなるホストを追加します。
スレーブとなるDockerホスト上で下記コマンドを叩きます。
先程のスクリプトをハンドコピーせず、コマンドで取得することで、スクリプトによる自動化を可能としました。(とはいえ、今回のマスタノードIPはハンド入力なんですが)

# マスタノードからトークン取得する
token=$(ssh -o StrictHostKeyChecking=no <マスタノードのIP> "docker swarm join-token -q worker") && echo $token

# workerとして追加
docker swarm join  <マスタノードのIP>:<マスタノードのPORT> --token $token

実行結果clip-20201001151834.png

成功すれば、「This node joined a swarm as a worker.」と出る。

マスタとワーカーと繋ぐためのネットワークを構築

マスタとなるホスト上で下記のコマンドを叩きます。

docker network create -d overlay <任意のネットワーク名>

実行することで、マスタとワーカーのコンテナで通信できます。

実行結果clip-20201001152431.png

おわりに

Docker PlayGroundを活用して、2台でのマスタノード、ワーカーノードの設定作業について説明しました。
3台以上で構成する場合も、2台目に実施した時と同じようにjoinコマンドを叩けばOKです。
気が向いたらServiceやStackを利用したコンテナデプロイについても書きます。

以上です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1