Docker Swarm クラスタ管理の使用と原理の分析

Docker Swarm クラスタ管理の使用と原理の分析

Swarm クラスター管理

導入

Docker Swarm は Docker 用のクラスター管理ツールです。 Docker ホストのプールを単一の仮想 Docker ホストに変換します。 Docker Swarm は標準の Docker API を提供するため、Docker デーモンと既に通信しているツールであれば、Swarm を使用して複数のホストに簡単に拡張できます。

サポートされているツールには、以下のものが含まれますが、これらに限定されません。

  • ドック
  • Docker の作成
  • ドッカーマシン

原理

下の図に示すように、Swarm クラスターは管理ノード (マネージャー) とワーカーノード (ワークノード) で構成されます。

  • Swarm マネージャー: クラスターの構成、サービス管理、その他すべてのクラスター関連タスクを含む、クラスター全体の管理を担当します。
  • 作業ノード: 図内の使用可能なノード。主に、対応するサービスを実行してタスクを実行する役割を担います。

ここに画像の説明を挿入

使用

以下の例はすべて Docker Machine と VirtualBox に基づいています。ホストに VirtualBox がインストールされていることを確認してください。

1. スウォームクラスタ管理ノード(マネージャー)を作成する

Docker マシンを作成します。

$ docker-machine 作成 -d 仮想ボックス swarm-manager 

ここに画像の説明を挿入

Swarm クラスターを初期化します。初期化を実行するマシンは、クラスターの管理ノードです。

$ docker-machine ssh swarm-manager
$ docker swarm init --advertise-addr 192.168.99.107 #ここでの IP は、マシンの作成時に割り当てられた IP です。 

ここに画像の説明を挿入

上記の出力は初期化が成功したことを証明しています。作業ノードを追加するときに使用する次の行をコピーする必要があります。

docker swarm に参加 --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

2. スウォームクラスターワーカーノード(ワーカー)を作成する

ここでは、swarm-worker1 と swarm-worker2 という 2 つのマシンを作成します。

ここに画像の説明を挿入

2 台のマシンを個別に入力し、前の手順で作成したクラスターに追加することを指定します。ここでは、前の手順でコピーしたコンテンツが使用されます。

ここに画像の説明を挿入

上記のデータ出力は、正常に追加されたことを示しています。

上の図では、前の手順でコピーしたコンテンツが比較的長いため、自動的に切り捨てられます。図で実際に実行されるコマンドは次のとおりです。

docker@swarm-worker1:~$ docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

3. クラスター情報を表示する

管理ノードに入り、docker info を実行して現在のクラスターの情報を表示します。

$ docker情報

ここに画像の説明を挿入

4. クラスターにサービスをデプロイする

注: クラスター管理に関連するすべての操作は、管理ノードで実行されます。

次の例では、ワーカー ノードにランダムに割り当てられる helloworld という名前のサービスをワーカー ノードに作成します。

docker@swarm-manager:~$ docker サービス作成 --replicas 1 --name helloworld alpine ping docker.com 

ここに画像の説明を挿入

5. サービスの展開を確認す​​る

helloworld サービスがどのノードで実行されているかを確認すると、現在は swarm-worker1 ノードで実行されていることがわかります。

docker@swarm-manager:~$ docker サービス ps helloworld 

ここに画像の説明を挿入

helloworld デプロイメントの詳細情報を表示します。

docker@swarm-manager:~$ docker service inspect --pretty helloworld 

ここに画像の説明を挿入

6. クラスターサービスの拡張

上記の helloworld サービスを 2 つのノードに拡張します。

docker@swarm-manager:~$ docker サービススケール helloworld=2 

ここに画像の説明を挿入

1つのノードから2つのノードに拡張されたことがわかります。

ここに画像の説明を挿入

7. サービスの削除

docker@swarm-manager:~$ docker サービス rm helloworld 

ここに画像の説明を挿入

削除されたかどうかを確認します:

ここに画像の説明を挿入

8. ローリングアップグレードサービス

次の例では、Redis のバージョンをより高いバージョンにローリングアップグレードする方法を紹介します。

Redis の 3.0.6 バージョンを作成します。

docker@swarm-manager:~$ docker サービス作成 --replicas 1 --name redis --update-delay 10s redis:3.0.6 

ここに画像の説明を挿入

Redis のローリング アップグレード。

docker@swarm-manager:~$ docker サービス更新 --image redis:3.0.7 redis 

ここに画像の説明を挿入

画像から、redis のバージョンが 3.0.6 から 3.0.7 にアップグレードされ、サービスが正常にアップグレードされたことがわかります。

9. ノードが新しいタスクを受信しないようにする

すべてのノードを表示:

docker@swarm-manager:~$ docker ノード ls 

ここに画像の説明を挿入

すべてのノードが現在アクティブであり、新しいタスクの割り当てを受け取ることができることがわかります。

ノード swarm-worker1 を停止します。

ここに画像の説明を挿入

注: swarm-worker1 の状態が Drain に変わります。クラスター サービスは影響を受けませんが、swarm-worker1 ノードは新しいタスクを受信しなくなり、クラスターの負荷容量は減少します。

次のコマンドでノードを再アクティブ化できます。

docker@swarm-manager:~$ docker ノード更新 --availability アクティブ swarm-worker1 

ここに画像の説明を挿入

Docker Swarm クラスター管理の使用方法と原理分析に関するこの記事はこれで終わりです。より関連性の高い Docker Swarm クラスター管理コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker Swarmを使用してWordPressを構築する方法
  • Docker Swarm を使用して分散クローラー クラスターを構築する例
  • Docker Swarmを使用してクラスターを構築する方法
  • Docker 1.12 を使用してマルチホスト Docker Swarm クラスターを構築する詳細な説明
  • Docker をインストールして Docker Swarm モードで使用する方法
  • Docker swarm の簡単なチュートリアル

<<:  Vue シングルページ SEO の 4 つのソリューションについての簡単な説明

>>:  MySQL 8.0.22 圧縮パッケージの完全なインストールと構成のチュートリアル図 (テスト済みで効果的)

推薦する

MySQLのlike演算子の詳細

1. はじめに不明な値または部分的に既知の値をフィルタリングする場合は、like 演算子を使用でき...

中国のウェブサイトユーザーエクスペリエンスランキング

<br />ユーザーエクスペリエンスは中国のウェブサイトでますます重視されており、ユーザ...

今日は、珍しいけれど役に立つJSテクニックをいくつか紹介します

1. 戻るボタンhistory.back() を使用してブラウザの「戻る」ボタンを作成します。 &l...

PXEを使用してCentOS7.6を自動的にインストールする方法の詳細なチュートリアル

1. 需要ベースには 300 台の新しいサーバーがあり、CentOS7.6 オペレーティング システ...

Linux でスワップ領域を確認する 5 つのコマンドの概要

序文Linux では、スワップ パーティションとスワップ ファイルの 2 種類のスワップ領域を作成で...

win10 mysql 5.6.35 winx64 無料インストールバージョン設定チュートリアル

mysql 5.6.35 winx64無料インストールバージョン構成チュートリアルwin10、具体的...

JSで実施された機雷掃海プロジェクトの概要

この記事では、JS掃海プロジェクトの概要を参考までに紹介します。具体的な内容は次のとおりです。プロジ...

Web ページのエンコーディングで gbk や gb2312 ではなく utf-8 が使用されるのはなぜですか?

選択肢がある場合は、UTF-8を使用することをお勧めします。実際、Windows システム自体のプロ...

vue3ソースコード解析の簡単な実装方法

目次序文🍹準備🍲vue3 の使い方🍖 実装要約する序文最近、私の最初の公式 vue3 + ts プロ...

IPとポートが接続可能かどうかを検出する方法

Windows コマンドテルネット形式: telnet IP ポート場合: テルネット 191.1....

Vue 名前付きスロットの基本的な使用例

序文名前付きスロットは、スロット内の「name」属性を使用して要素にバインドされます。知らせ: 1....

JSインターセプト文字列の3つの方法の詳細な説明

JS には、文字列をインターセプトするための 3 つのメソッド、 slice() 、 substri...

ノード スキャフォールディングを使用してトークン検証を実装するサーバーを構築する方法

コンテンツスキャフォールディングを使用してノードプロジェクトを素早く構築するデータベースとやり取りす...

Centos システムの指定された場所に Nginx をインストールする方法

Centos システムの指定された場所に Nginx をインストールするにはどうすればいいですか?は...

Vue コンポーネントはどのように解析され、レンダリングされるのでしょうか?

序文この記事では、Vue コンポーネントがどのように解析され、レンダリングされるかを説明します。 V...