ドッカースウォームについて
ドッカースウォームは、2つの部分から成ります:
- ドッカークラスター:ドッカーを組織し、1つまたは複数のノードは、ユーザーがクラスタ内で管理することができます。
- アプリケーション振り付け:コンテナを展開し、管理するために使用されるAPIのセット。
公式情報ます。https://docs.docker.com/swarm/
ネットワークダイアグラム
図は、ドッカーの公式サイトから、典型的なドッカースウォームクラスタの展開図である:
ドッカースウォームクラスタを構築する計画に輝い次。
準備
戦闘は、5台のマシン、同じコンフィギュレーション情報の全て次のように合計を使用します。
- オペレーティングシステム:CentOSのLinuxは1810年6月7日にリリース
- ドッカーServicesバージョン:1.13.1
- ファイアウォールは閉鎖されています。
次の表のマシン情報:
| IPアドレス|ホスト名|アイデンティティ|
| - | - | - |
| 192.168.121.142 | M0 |管理ノード|
| 192.168.121.139 | M1 |管理ノード|
| 192.168。 121.140 |平方メートル|管理ノード|
| 192.168.121.141 | W0 | |作業員は、ノード
| 192.168.121.138 | W1 |ワーカーノードを|
なぜ3つの管理ノード?
このように、管理ノードの高可用性(HA)を確保ラフトコンセンサスアルゴリズムを使用して、管理ノードクラスタ間の内部管理コーディネーションから見た公式マップは、一般的に以下の2つの原則を参照します。
- スプリットブレインを減らすのに役立ちます展開奇数管理ノード;
- 複数の管理ノードは、それがコンセンサスに到達するために多くの時間を要することを意味するので、あまりにも多くの管理ノードを展開しないでください。
クラスタのステップを展開するはじめに
全体のプロセスの次の展開は、次のステップに分かれています。
- 第一の管理ノード(M0)を初期化します。
- 新しい管理ノード(M1、M2)を追加します。
- 追加ノードを作動(W0、W1)。
そして、それが開始しました。
第一の管理ノード(M0)を初期化します
- M0ノードのIPアドレスである192.168.121.142、したがってM0ノードで次のコマンドを実行します。
docker swarm init \
--advertise-addr 192.168.121.142:2377
--listen-addr 192.168.121.142:2377
addr-宣伝と聞く-ADDRこれら2つのパラメータ、前者は交通IPとポートベアラ指定群れM0に接続された他のノードのアドレスを指定するために使用され、彼らは、より詳細で、徹底的な違いの記事を参照することができます。https:/ /boxboat.com/2016/08/17/whats-docker-swarm-advertise-addr/
- 次のようにコンソールが成功した初期化スウォームクラスタを示す情報を返します。
Swarm initialized: current node (7585zt09o2sat82maef0ocf42) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-5huefb5501cv7p8i2op1am2oevasoqu4te8vpvapndkudvszb4-e8l6755jstd7urpdo5smyi8fv \
192.168.121.142:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
- すべてのクラスタノードが現在のスウォームにリストされている、あなたは、固有のノードM0のステータスとIDを見ることができます。
[root@m0 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
7585zt09o2sat82maef0ocf42 * m0 Ready Active Leader
今クラスタは、我々はより多くの管理ノードとワーカーノードを追加する必要があり、その後、確立されています。
新しいノードを追加するには?
- ドッカースウォームの戦略は、新しいノードが管理ノードからのコマンドの長いリストを結合取得することであるトークン参加と呼ばれる、限り、彼らは群れのクラスタに参加するトークンの参加を行うようマシンのクラスタに参加したい人。
- 新しい管理ノードを追加する必要がある場合は、M0実行ドッキングウィンドウの群れが参加し、トークンマネージャトークン管理ノードに参加得るために、次のように:
[root@m0 ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-5huefb5501cv7p8i2op1am2oevasoqu4te8vpvapndkudvszb4-5tz9d4w7nwzu8r4ozd0ff2aiu \
192.168.121.142:2377
- ファイル名を指定して実行M0で、新しい作業ノードを追加する必要性がある場合はドッキングウィンドウの群れに参加トークン労働者を取得するために、次のように仕事のノードは、トークン参加します:
[root@m0 ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-5huefb5501cv7p8i2op1am2oevasoqu4te8vpvapndkudvszb4-e8l6755jstd7urpdo5smyi8fv \
192.168.121.142:2377
二種類のトークンに参加し、準備ができている、新しいノードの追加を開始。
追加した管理ノードM1、M2
- 管理ノードm1の実装に作られたフロントは、トークンに参加します:
[root@m1 ~]# docker swarm join \
> --token SWMTKN-1-5huefb5501cv7p8i2op1am2oevasoqu4te8vpvapndkudvszb4-5tz9d4w7nwzu8r4ozd0ff2aiu \
> 192.168.121.142:2377
This node joined a swarm as a manager.
- 平方メートルで同じ操作を行います。
- M0、M1、RenyiyitaiコマンドM2で実行ドッカーノードLSは以下に示すように、群発クラスタの状態を表示、我々は3つの管理ノードが正常状態である見ることができ、IDフィールドは、アスタリスクサフィックスが付いマシンが現在のコマンドを実行していることを示しM1:
[root@m1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
0isfyre69mdu1hm11esf1q3dk m2 Ready Active Reachable
7585zt09o2sat82maef0ocf42 m0 Ready Active Leader
slc0hjbs7jh2hdi8ai3wohy23 * m1 Ready Active Reachable
作業ノードW0、W1に参加
- W0で以前に取得されたノードの実装は、トークンに参加します:
[root@w0 ~]# docker swarm join \
> --token SWMTKN-1-5huefb5501cv7p8i2op1am2oevasoqu4te8vpvapndkudvszb4-e8l6755jstd7urpdo5smyi8fv \
> 192.168.121.142:2377
This node joined a swarm as a worker.
- W1で同じ操作を行います。
- M0、M1、M2上のコマンドを実行しているRenyiyitai ドッカノードlsのステータスを表示スウォームのクラスタ・ノードのすべての準備ができて見て仕事を持っています:
[root@m0 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
0isfyre69mdu1hm11esf1q3dk m2 Ready Active Reachable
7585zt09o2sat82maef0ocf42 * m0 Ready Active Leader
i71bcxt1auc804syybroajtan w1 Ready Active
slc0hjbs7jh2hdi8ai3wohy23 m1 Ready Active Reachable
wqcwcccva3d3mxgi5p423d4fv w0 Ready Active
これまでのところ、設定スウォームクラスタ環境が完了し、次を確認することができます。
スウォームクラスタ環境を確認してください
- Tomcatのネットオーバーレイ・ネットワーク(オーバーレイNetowork)という名前のファイルを作成し、これはレイヤ2ネットワークで、ネットワーク内のドッキングウィンドウのコンテナに、ホストが同じでない場合であっても、彼らはお互いを訪問することができます。
docker network create -d overlay tomcat-net
- 作成したオーバーレイネットワークを使用してTomcatのと呼ばれるサービスを作成します。
docker service create --name tomcat \
--network tomcat-net \
-p 8080:8080 \
--replicas 3 \
tomcat:7.0.96-jdk8-openjdk
- 実行ドッカサービスLSは、現在のすべてのサービスを見ます:
[root@m0 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE
kguawc4b5th4 tomcat replicated 3/3 tomcat:7.0.96-jdk8-openjdk
- 実行ドッカサービスのPS Tomcatの 3個のコンテナを示すのTomcatと呼ばれるビューのサービスは、M0、M2、W1のマシン上に配備されました。
[root@m0 ~]# docker service ps tomcat
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
n1gs9f1plce2 tomcat.1 tomcat:7.0.96-jdk8-openjdk w1 Running Running 19 minutes ago
q8jyg088ci21 tomcat.2 tomcat:7.0.96-jdk8-openjdk m2 Running Running 19 minutes ago
h9ww33dpw56m tomcat.3 tomcat:7.0.96-jdk8-openjdk m0 Running Running 19 minutes ago
- 実行ドッカサービスは検査--pretty Tomcatのビューの詳細Tomcatの命名サービス(より完全なを見ることができ--prettyを削除します):
[root@m0 ~]# docker service inspect --pretty tomcat
ID: kguawc4b5th4qlwlsv183qtai
Name: tomcat
Service Mode: Replicated
Replicas: 3
Placement:
UpdateConfig:
Parallelism: 1
On failure: pause
Max failure ratio: 0
ContainerSpec:
Image: tomcat:7.0.96-jdk8-openjdk@sha256:91eadffb59d9a35ada2d39fcd616a749ac580aa5e834499b7128f27be2e46623
Resources:
Networks: tomcat-net
Endpoint Mode: vip
Ports:
PublishedPort 8080
Protocol = tcp
TargetPort = 8080
あなたが成功し、Tomcatのホーム・ページにアクセスすることができ、ブラウザを開き、8080 5機W1、M0、M1、M2、W0にアクセスしよう:
サービスモデル
- 2つのサービスモデルがあります:入力およびホスト、指定されていない場合、デフォルトはイングレスでは、
- イングレスモードでは、ポート8080のトラフィックは80ポートがマッピングされます、そのノード上のTomcatサービスのないコピーが存在しない場合でも、サービスのいずれかの内部コピーにマッピングされ、スウォームに任意のノードに到達します。
- 次のようにホストモードコマンドを使用してホストモード、コンテナのコピーと機械の操作にのみ開いているポート、:
docker service create --name tomcat \
--network tomcat-net \
--publish published=8080,target=8080,mode=host \
--replicas 3 \
tomcat:7.0.96-jdk8-openjdk
サービスのスケーラブルな能力
- 実行= 5ドッカサービススケールTomcatが 3から5にコピーの数を調整します。
[root@m0 ~]# docker service scale tomcat=5
tomcat scaled to 5
- 実行ドッカサービスのPS Tomcatのビュー・サービスは、各マシンの容器の分布を示す、Tomcatのと呼ばれます:
[root@m0 ~]# docker service ps tomcat
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
w32tjahze2fk tomcat.1 tomcat:7.0.96-jdk8-openjdk m2 Running Running 42 minutes ago
yj5czwwhrrsh tomcat.2 tomcat:7.0.96-jdk8-openjdk m0 Running Running 42 minutes ago
pq40995nbd0k tomcat.3 tomcat:7.0.96-jdk8-openjdk w1 Running Running 42 minutes ago
y1y6z1jczel1 tomcat.4 tomcat:7.0.96-jdk8-openjdk m1 Running Running about a minute ago
w0dcii8f79os tomcat.5 tomcat:7.0.96-jdk8-openjdk w0 Running Running about a minute ago
ローリング・アップグレード
- 現在のサービスのTomcat、Tomcatのミラータグがある7.0.96-jdk8-OpenJDKのは、のにアップグレードしてみましょう9.0.24-jdk11-OpenJDKの、次のコマンドを実行します。
docker service update \
--image tomcat:9.0.24-jdk11-openjdk \
--update-parallelism 1 \
--update-delay 10s tomcat
上記のコマンドは、いくつかあります注意してください。
。更新平行:各更新が、これは1に設定されているコンテナの数は、次にアップグレードする各アップグレードが成功した後、容器を示しています。
。B更新遅延:各バッチのアップグレード後、アップグレード前の時間の次のバッチを待って、成功し、アップグレード、など、10秒後、次のアップグレード容器を表します。
- アップグレード処理中のコマンドを実行しドッカサービスのPS Tomcatのサービスを表示し、あなたが一つのコンテナ1の新しいバージョンを開始する過程を見ることができます:
[root@m0 ~]# docker service ps tomcat
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
w32tjahze2fk tomcat.1 tomcat:7.0.96-jdk8-openjdk m2 Running Running 56 minutes ago
yj5czwwhrrsh tomcat.2 tomcat:7.0.96-jdk8-openjdk m0 Running Running 56 minutes ago
semuna9awsn7 tomcat.3 tomcat:9.0.24-jdk11-openjdk w1 Running Running 15 seconds ago
pq40995nbd0k \_ tomcat.3 tomcat:7.0.96-jdk8-openjdk w1 Shutdown Shutdown about a minute ago
y1y6z1jczel1 tomcat.4 tomcat:7.0.96-jdk8-openjdk m1 Running Running 15 minutes ago
oot3yex74v4t tomcat.5 tomcat:9.0.24-jdk11-openjdk w0 Running Preparing 5 seconds ago
w0dcii8f79os \_ tomcat.5 tomcat:7.0.96-jdk8-openjdk w0 Shutdown Shutdown 3 seconds ago
アップグレードが完了したら、サービスにアクセスするためにブラウザを使用し、目に見えるTomcatのバージョンがアップグレードされました:
サービスを削除します。
実行ドッカサービスのRM Tomcatがサービスを削除するには:
[root@m0 ~]# docker service rm tomcat
tomcat
[root@m0 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE
これまでのところ、基本的な操作からドッカー大群は、あなたが環境を設定したい場合、この記事はあなたにいくつかの参照を与えるだろう、一度体験して展開されています。