ドッカースウォームクラスタ構成の戦闘

ドッカースウォームとドッキングウィンドウ作曲は、ドッカー公式コンテナ振り付けプロジェクトですが、違いはドッカースウォームが複数のサーバまたはホスト上に作成することができますがドッキングウィンドウ作曲は、単一のサーバまたはホスト上で複数のコンテナを作成するためのツールであり、ありますコンテナクラスタサービスは、マイクロの展開のためのサービスは、明らかにドッカー群れがより適切であろう。

ドッカー1.12.0バージョンを起動し、ドッカースウォームはすでにドッカーエンジン(ドッカ群れ)に含まれており、サービス・ディスカバリ・ツールを構築してきました、我々は以前のように必要にし、サービスの検出を設定するEtcdまたは領事を設定しないでください。

;労働者(実務家)とサービス(サービス)マネージャ(マネージャ):ドッカー群れクラスタは3つの役割を持っています。

レンガは、リーダーシップのタスクを移動するために発行された一方で、本質的に上記の3つの役割では、当社の組織構造は、レンガ(労働者)を移動しているリーダーシップ(マネージャー)と同様のサービスのドッカー群れにされています(サービス)。

やる、1つのドッカースウォームグループでは、ドッキングウィンドウができ、各サーバーの役割がマネージャで、すべてではない労働者、それはないリーダーなし、と言うことで、すべてのクラスタホスト名に参加し、なお競合していません。

ドッカーは、ケーススタディを通じて、クラスタの構成を示すために、ここに群れ。

まず、環境を準備

ドッカースウォームクラスタ構成の戦闘

ホストでは、ホストdocker01は、管理者の役割のために労働者のための他のホストの役割を指定します。

第二に、ホストdocker01を設定

以下の操作は、スウォームクラスタを初期化し、管理者のための役割のdocker01を割り当てます。

#由于需要在三台主机间复制一些配置文件,所以在docker01上配置免密登录
[root@docker01 ~]# ssh-keygen     #生成密钥对,一路按回车即可生成
[root@docker01 ~]# tail -3 /etc/hosts   #配置/etc/hosts文件
#三台主机之间要互相解析(Swarm群集也需要此配置)
192.168.20.6 docker01
192.168.20.7 docker02
192.168.20.8 docker03
[root@docker01 ~]# ssh-copy-id docker02   #将生成的秘钥发送到docker02
root@docker02 s password:        #要输入docker02的root密码
[root@docker01 ~]# ssh-copy-id docker03   #将秘钥发送到docker03,同样需要输入docker03的root密码
[root@docker01 ~]# scp /etc/hosts docker02:/etc/   #将hosts文件发送到docker02
[root@docker01 ~]# scp /etc/hosts docker03:/etc/   #将hosts文件发送到docker03
[root@docker01 ~]# docker swarm init --advertise-addr 192.168.20.6   #初始化一个集群,并指定自己为manager

これを行うと、コマンドのように正常に実行されるだろう、グループを初期化する管理者としての地位を与えられた指定されたそのメッセージが他のノードがこのノードを追加する必要がある場合に実行されるということである一連のプロンプトを返します。コマンドは、それらを直接コピーし、クラスタホストに参加する必要性に実行され、あなたが正常にクラスタに参加することができます。

次のようにリターンメッセージは次のとおりです。

ドッカースウォームクラスタ構成の戦闘

それは、対応するコマンドを与えることから、上記では、その後、今ドッキングウィンドウのサーバークラスタを追加する必要がある設定を開始。

第三に、コンフィギュレーション・docker02とdocker03はスウォームのクラスタに参加します

#docker02执行以下命令:
[root@docker02 ~]# docker swarm join --token SWMTKN-1-5ofgk6fh1vey2k7qwsk4gb9yohkxja6hy8les7plecgih1xiw1-3vpemis38suwyxg3efryv5nyu 192.168.20.6:2377
#docker03也执行以下命令
[root@docker03 ~]# docker swarm join --token SWMTKN-1-5ofgk6fh1vey2k7qwsk4gb9yohkxja6hy8les7plecgih1xiw1-3vpemis38suwyxg3efryv5nyu 192.168.20.6:2377
[root@docker01 ~]# docker node promote docker02    #将docker02从worker升级为manager。

これまでのところ、docker02および03は、それらのクラスタに追加労働者の役割になります。

docker02またはdocker03がクラスタから離れて滞在する場合は、次のような構成を(ここでは例えばdocker03する)必要があります。

#将docker03脱离这个群集
[root@docker03 ~]# docker swarm leave        #在docker03上执行此命令
[root@docker01 ~]# docker node rm docker03         #然后在manager角色的服务器上移除docker03
[root@docker01 ~]# docker swarm leave -f  #若是最后一个manager上进行删除群集,则需要加“-f”选项
#最后一个删除后,这个群集也就不存在了

第四に、民間倉庫のレジストリを構築

ドッキングウィンドウの群れのクラスタでは、民間の倉庫は、クラスタの通常の動作には影響しませんが、会社の生産環境は、それらのほとんどは何をシミュレートするので、ここでは、民間の倉庫を所有しています。

[root@docker01 ~]# docker run -d --name registry --restart always -p 5000:5000 registry  #运行一个registry仓库容器
[root@docker01 ~]# vim /usr/lib/systemd/system/docker.service    #修改docker配置文件,以便指定私有仓库
ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.20.6:5000    #定位到改行,指定私有仓库IP及端口
#编辑完成后,保存退出即可
[root@docker01 ~]# systemctl daemon-reload       #重新加载配置文件
[root@docker01 ~]# systemctl restart docker         #重启docker服务
#docker02及docker03也需要指定私有仓库的位置,所以执行下面的命令将更改后的docker配置文件复制过去
[root@docker01 ~]# scp /usr/lib/systemd/system/docker.service docker02:/usr/lib/systemd/system/         
[root@docker01 ~]# scp /usr/lib/systemd/system/docker.service docker03:/usr/lib/systemd/system/
#将docker的配置文件复制过去以后,需要重启docker02及03的docker服务
#下面的命令需要在docker02及03的服务器上分别运行一次:
[root@docker02 ~]# systemctl daemon-reload
[root@docker02 ~]# systemctl restart docker

民間の倉庫が完了した後、通常の使用かどうかを最高のテスト、次のように:

#docker01将httpd镜像上传到私有仓库
[root@docker01 ~]# docker tag httpd:latest 192.168.20.6:5000/lvjianzhao:latest
[root@docker01 ~]# docker push 192.168.20.6:5000/lvjianzhao:latest 
#在dokcer02上进行下载,测试是否可以正常下载
[root@docker02 ~]# docker pull 192.168.20.6:5000/lvjianzhao:latest
#可以正常下载,说明私有仓库可用

民間倉庫を構築するために上記のプロセスでは、民間の倉庫を構築するために、データの永続性に基づいて、必要であれば、あなたはボーエンを参照することができ、永続的なデータを達成しませんでした:ドッカーのレジストリ民間倉庫+ハーバー民間倉庫の建物を

五、docker01展開ドッキングウィンドウスウォームクラスタのWeb UIインターフェース

[root@docker01 ~]# docker run -d -p 8000:8080 -e HOST=172.16.20.6 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock  --name visualizer  dockersamples/visualizer
#执行上述命令后,即可客户端访问其8000访问,可以看到群集内的节点信息
#若节点发生故障,则会立即检测到

8000ポートdocker01アクセス、あなたは次のインターフェイスを見ることができます(インターフェースのみ任意の構成を作ることができない、見ることができます):

ドッカースウォームクラスタ構成の戦闘

この時点で、基本的に音ドッキングウィンドウの群れクラスター、および次の設定、クラスタを示し始めた、正確に何を行うことができますか?それは、そのサービスのサービスの段階を設定することです。

六、ドッキングウィンドウスウォームクラスタサービスのサービス構成

1、タスクのリリースにdocker01(ホストマネージャの役割であることが必要)、わずか6つのコンテナは、次のコマンドを実行し、テストのhttpdミラーをアップロードを使用中:

[root@docker01 ~]# docker service create --replicas 6 --name lvjianzhao -p 80 192.168.20.6:5000/lvjianzhao:latest 
#上述命令中,“--replicas”选项就是用来指定要运行的容器数量

6つのコンテナのコピーを実行しているときは、次に示すクラスタのWeb UIインターフェイスを表示することができます:

ドッカースウォームクラスタ構成の戦闘

注意:ドッキングウィンドウのホストはミラーを指定しない場合、それは自動的に適切なイメージをダウンロードするために行く:docker03は、あなたが結論を引き出すことができ、画像をダウンロードしませんでしたが、また、httpdサービスを実行します。

上記構成を行った後、3台のサーバのクラスタは二つの容器httpdのミラー上で実行されていることがわかります。6の合計:

[root@docker01 ~]# docker service ls   #查看service的状态
ID                  NAME                MODE                REPLICAS            IMAGE                                 PORTS
13zjbf5s02f8        lvjianzhao          replicated          6/6                 192.168.20.6:5000/lvjianzhao:latest   *:30000->80/tcp

拡張ドッキングウィンドウコンテナとボリュームの低減を達成するために七、

拡張とは何ですか?体積の減少は何ですか?場合は、コンテナに、いくつかの異なる容器の容積の減少の増幅を、現在の負荷圧力を買う余裕ができない以外の何ものでもありませんか?それは、同じ容器の数を減少させるアイドル容器資源の多数の場合に、あります。

図1に示すように、以下は、体積減少、およびhttpdサービスの上記6つのコンテナの拡張のために作成されます。

容器の1)展開:

[root@docker01 ~]# docker service scale lvjianzhao=9    #将运行的httpd容器扩容到9个

次のように拡張、ウェブUI画面の後に:

ドッカースウォームクラスタ構成の戦闘

2)容器の容積の減少

[root@docker01 ~]# docker service scale lvjianzhao=3
将9个httpd服务的容器缩减到3个

減容した後、そのUIインターフェイスは、次のように表示されます
ドッカースウォームクラスタ構成の戦闘

2は、ドッキングウィンドウのサーバーコンテナを実行していない設定しました

上記の構成では、実行するためのコンテナの指定された数ならば、それはクラスタを使用すると、管理者の役割、それdocker01コンテナを実行したくない場合は、その後、全てのドッキングウィンドウの実行をポーリングし、指定のコンテナの十分な数まで実行するホストの方法だろうか?(会社のリーダーは、レンガのラインの事を移動するつもりはありません)、次の項目を設定できます。

[root@docker01 ~]# docker node update --availability drain docker01
#设置主机docker01以后不运行容器,但已经运行的容器并不会停止
# “--availability”选项后面共有三个选项可配置,如下:
# “active”:工作;“pause”:暂时不工作;“drain”:永久性的不工作

一般的に使用されるコマンドの8つの追加--dockerスウォームクラスタ

[root@docker01 ~]# docker node ls    #查看群集的信息(只可以在manager角色的主机上查看)
[root@docker01 ~]# docker swarm join-token worker      #如果后期需要加入worker端,可以执行此命令查看令牌(也就是加入时需要执行的命令)
[root@docker01 ~]# docker swarm join-token manager         #同上,若要加入manager端,则可以执行这条命令查看令牌。
[root@docker01 ~]# docker service scale web05=6    #容器的动态扩容及缩容
[root@docker01 ~]# docker service ps web01       #查看创建的容器运行在哪些节点
[root@docker01 ~]# docker service ls        #查看创建的服务
#将docker03脱离这个群集
[root@docker03 ~]# docker swarm leave        #docker03脱离这个群集
[root@docker01 ~]# docker node rm docker03         #然后在manager角色的服务器上移除docker03
[root@docker01 ~]# docker node promote docker02    #将docker02从worker升级为manager。
#升级后docker02状态会为Reachable
[root@docker01 ~]# docker node update --availability drain docker01
#设置主机docker01以后不运行容器,但已经运行的容器并不会停止

九、ドッキングウィンドウスウォームの概要

私はスウォームクラスタをドッキングウィンドウ理解し、特定した後、我々は以下の結論に達しました:

  • 互いに競合してはならないクラスタホスト名に参加し、他のパーティのホスト名を解決することができます。
  • クラスタ内のすべてのノードは、管理者の役割ではなく、すべての労働者の役割の両方ことができます。
  • ときに指定された操作のミラーは、ミラーの局所濃度のないクラスタ・ノードが存在しない場合、それは自動的に対応する画像をダウンロードします。
  • 実行中のコンテナのドッキングウィンドウのサーバがダウンした場合、クラスタは、正常に機能するようにすると、それはサーバーのダウンタイムは、通常の動作を再開するために発生しても、すべてのコンテナは、通常の操作上の他のノードに転送され実行され、 、それは前に容器のランニングを引き継ぐません。

--------この記事の最後に、これまで、読んでくれてありがとう--------

おすすめ

転載: blog.51cto.com/14154700/2446361