LoginSignup
0
1

More than 5 years have passed since last update.

docker swarmを試す(その2) ノードのdemote/promote

Last updated at Posted at 2017-01-30

3つのmanagerノードと1つのwokerノードで、nodeコマンドのpromote/demoteを試してみたいと思います。

demote(workerへ降格)

manager03がLeader(3ノードのmanagerの中の親玉制御ノード)の状態でmanager03をdemoteしてみます。

[root@manager02 ~]# docker node ls
ID                           HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS
53n8pcstw7sgwgcvklj1m8u84    manager03  Ready   Active        Leader
kgc3dy9qkl60gakh4ixsbhbgs    manager01  Ready   Active        Reachable
t4ri8ng3bagn8jlmpq1fx8vbq *  manager02  Ready   Active        Reachable

demoteを実行すると、他のmanagerの1つ(manager02)がLeaderになって、manager03はMANAGER STATUSがなくなりました。
manager03はworkerに降格したということだと思います。

[root@manager01 ~]# docker node demote manager03
Manager manager03 demoted in the swarm.
[root@manager01 ~]# docker node ls
ID                           HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS
53n8pcstw7sgwgcvklj1m8u84    manager03  Ready   Active        
kgc3dy9qkl60gakh4ixsbhbgs *  manager01  Ready   Active        Reachable
t4ri8ng3bagn8jlmpq1fx8vbq    manager02  Ready   Active        Leader

poromote(managerへ昇格)

manager03はworkerのみの扱いとなったはずなので、再度、managerとする為にmanager03でpromoteしてみます。

manager03は、既にmanagerノードではないので、promoteコマンドを実行出来ません。
結果、workerのままです。

[root@manager03 ~]# docker node promote manager03
Error response from daemon: This node is not a swarm manager. Worker nodes can't be used to view or modify cluster state. Please run this command on a manager node or promote the current node to a manager.

[root@manager02 ~]# docker node ls
ID                           HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS
53n8pcstw7sgwgcvklj1m8u84    manager03  Ready   Active        
kgc3dy9qkl60gakh4ixsbhbgs    manager01  Ready   Active        Reachable
t4ri8ng3bagn8jlmpq1fx8vbq *  manager02  Ready   Active        Leader

気を取り直して、managerノード(manager01)でpromoteしてみます。

[root@manager02 ~]# docker node promote manager03
Node manager03 promoted to a manager in the swarm.
[root@manager02 ~]# docker node ls
ID                           HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS
53n8pcstw7sgwgcvklj1m8u84    manager03  Ready   Active        Reachable
kgc3dy9qkl60gakh4ixsbhbgs    manager01  Ready   Active        Reachable
t4ri8ng3bagn8jlmpq1fx8vbq *  manager02  Ready   Active        Leader

今度は、成功してmanager(Reachable状態)になりました。

promote/demoteに関しては、managerノードでの、docker node update --role [ worker | manager ] ノードIDコマンドでも実行可能です。

[root@manager03 ~]# docker node ls
ID                           HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS
53n8pcstw7sgwgcvklj1m8u84 *  manager03  Ready   Active        Reachable
ef4vs2ca9ujyzzrxaoflmewex    worker01   Ready   Active        
kgc3dy9qkl60gakh4ixsbhbgs    manager01  Ready   Active        Reachable
t4ri8ng3bagn8jlmpq1fx8vbq    manager02  Ready   Active        Leader
[root@manager03 ~]#  docker node update --role manager worker01
worker01
[root@manager03 ~]# docker node ls
ID                           HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS
53n8pcstw7sgwgcvklj1m8u84 *  manager03  Ready   Active        Reachable
ef4vs2ca9ujyzzrxaoflmewex    worker01   Ready   Active        Reachable
kgc3dy9qkl60gakh4ixsbhbgs    manager01  Ready   Active        Reachable
t4ri8ng3bagn8jlmpq1fx8vbq    manager02  Ready   Active        Leader
[root@manager03 ~]#  docker node update --role worker  worker01
worker01
[root@manager03 ~]# docker node ls
ID                           HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS
53n8pcstw7sgwgcvklj1m8u84 *  manager03  Ready   Active        Reachable
ef4vs2ca9ujyzzrxaoflmewex    worker01   Ready   Active        
kgc3dy9qkl60gakh4ixsbhbgs    manager01  Ready   Active        Reachable
t4ri8ng3bagn8jlmpq1fx8vbq    manager02  Ready   Active        Leader

全てdemote

swarm機能が停止してしまうので、全managerをdemoteは出来ないようで、1台はmanagerとして生き続けるようです。

[root@manager01 ~]# docker node demote manager01 manager02 manager03
Manager manager01 demoted in the swarm.
Manager manager02 demoted in the swarm.
Error response from daemon: rpc error: code = 9 desc = attempting to demote the last manager of the swarm

[root@manager03 ~]# docker node ls
ID                           HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS
53n8pcstw7sgwgcvklj1m8u84 *  manager03  Ready   Active        Leader
kgc3dy9qkl60gakh4ixsbhbgs    manager01  Ready   Active        
t4ri8ng3bagn8jlmpq1fx8vbq    manager02  Ready   Active        

ベストプラクティスは、どうなのか知りませんが・・・
swarmではworkerがmanagerにいつでもpromoteして昇格(候補として)可能な状態になれる為、managerでクラスタ構成中に障害でmanagerが減しても、代役を立てることは簡単なようです。

workerをpromote

念の為、workerで追加したノードが、promoteで昇格できるのか確認してみます。

[root@worker01 ~]# docker swarm join \
>     --token SWMTKN-1-0dl2572g16uadcs332rvywgxiakuhj8qjy1h73wy3xbdy7sl6k-bs79rdoougdc7ry1lk8k5yuv0 \
>     192.168.28.180:2377
This node joined a swarm as a worker.

[root@manager01 ~]# docker node ls
ID                           HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS
53n8pcstw7sgwgcvklj1m8u84    manager03  Ready   Active        Reachable
kgc3dy9qkl60gakh4ixsbhbgs *  manager01  Ready   Active        Leader
kldemzr3rc2jlrneq61jhg1di    worker01   Ready   Active        
t4ri8ng3bagn8jlmpq1fx8vbq    manager02  Ready   Active        Reachable

workerノードではnodeコマンドは実行出来ません

[root@worker01 ~]# docker node ls
Error response from daemon: This node is not a swarm manager. Worker nodes can't be used to view or modify cluster state. Please run this command on a manager node or promote the current node to a manager.

prmoteでmanagerに昇格すると...wokerノードでもnodeコマンドが実行出来るようになります。

[root@manager01 ~]# docker node promote worker01
Node worker01 promoted to a manager in the swarm.

[root@worker01 ~]# docker node ls
ID                           HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS
53n8pcstw7sgwgcvklj1m8u84    manager03  Ready   Active        Reachable
kgc3dy9qkl60gakh4ixsbhbgs    manager01  Ready   Active        Leader
kldemzr3rc2jlrneq61jhg1di *  worker01   Ready   Active        Reachable
t4ri8ng3bagn8jlmpq1fx8vbq    manager02  Ready   Active        Reachable

ということで、workerでswarmに参加したノードでも、promote出来ました。

続く・・・

参考リンク

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1