banner
云野阁

云野阁

闲云野鹤,八方逍遥

Docker Swarmクラスタのデプロイ

タスクプラットフォーム

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を入力すると、すべてのノードを確認できます。

image-20240323221029238-1711203035847-1

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

ホスト間のコンテナ通信をテスト#

  1. 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
  1. テストツールをインストール
apt-get update
# pingツールをインストール
apt-get install inetutils-ping -y
# ip確認ツールをインストール
apt-get install net-tools -y

image-20240323221151231-1711203113839-3

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。