タスクプラットフォーム
3 台の仮想マシン、一台をマネージャーノードとして、残りの二台をワーカーノードとして使用します。
デプロイガイド
Docker のインストール#
# Dockerファイルと依存関係をダウンロードしてインストール
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
# Dockerを起動し、起動時に自動起動を設定
systemctl start docker
systemctl enable docker
# バージョンを確認
docker -v
ファイアウォールのポートを開放する#
TCP プロトコルポート 2377 :クラスター管理ポート
TCP プロトコルポート 7946 :ノード間通信ポート(開放しないと負荷分散が無効になります)
UDP プロトコルポート 4789 :オーバーレイネットワーク通信ポート
firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --zone=public --add-port=7946/tcp --permanent
firewall-cmd --zone=public --add-port=7946/udp --permanent
firewall-cmd --zone=public --add-port=4789/tcp --permanent
# ファイアウォールをリロード
firewall-cmd --reload
# 80ポートが開放されているか確認
firewall-cmd --query-port=80/tcp
# 開放されているすべてのポートを確認
firewall-cmd --zone=public --list-ports
マネージャーノードで Swarm クラスターを作成#
docker swarm init --advertise-addr=自分のIP:2377 --listen-addr=自分のIP:2377
Swarm が初期化されました:現在のノード (608u180nsa654xbxdthdhl0f6) はマネージャーになりました。
この Swarm にワーカーを追加するには、次のコマンドを実行してください:
docker swarm join --token SWMTKN-1-13dv43qm3tdux7243z3c0najcetizjpgly1urd4uchtcooxe87-4eh15dbayxttxipm34s5tod6t 172.20.1.51:2377
この Swarm にマネージャーを追加するには、'docker swarm join-token manager' を実行し、指示に従ってください。
実行後に生成されたコマンド(上記の赤字の部分)を他のホストに追加し、実行後に次の結果が得られれば、成功したことになります。
または、次のコマンドを実行してトークンを生成し、定期的にローテーションする計画を立てることができます(推奨)。
docker swarm join-token --rotate worker
このノードはワーカーとして Swarm に参加しました。
(拡張)マネージャーノードに参加するためのコマンド
docker swarm join-token --rotate manager
マネージャーノードでdocker node ls
を入力すると、すべてのノードを確認できます。
Swarm サービス用のカスタムオーバーレイネットワークを作成#
# 方法1
# --attachableオプションは、このネットワークが追加可能であることを示します。つまり、他のコンテナがこのネットワークに接続できます。
docker network create -d overlay --attachable my-overlay
# 方法2
# --subnet: サブネット --gateway: ゲートウェイ
docker network create --driver overlay --subnet 10.0.9.0/24 --gateway 10.0.9.99 my-overlay
# Dockerネットワークを確認
docker network ls
ホスト間のコンテナ通信をテスト#
- 3 台のホストにそれぞれコンテナをデプロイし、相互に ping を行います。結果は以下の図の通りです。
# ホスト1
docker run -it --name master --net=my-overlay ubuntu:latest
# ホスト2
docker run -it --name node1 --net=my-overlay ubuntu:latest
# ホスト3
docker run -it --name node2 --net=my-overlay ubuntu:latest
- テストツールをインストール
apt-get update
# pingツールをインストール
apt-get install inetutils-ping -y
# ip確認ツールをインストール
apt-get install net-tools -y