swarm集群搭建 及集群维护操作

准备3台均安装了docker的服务器 manager  worker1 worker2

1.登录manager 初始化集群

[root@manager ~]# docker swarm  init  --advertise-addr 10.23.215.87

2.node节点加入集群 worker1 worker2登录后执行

[root@worker2 ~]# docker swarm join --token SWMTKN-1-4sazd33tdwk3b3mgzvijc8k7stpbofkkw0053zdtdgde0ls4q0-3li70azumzsmddhhtmtea1ow3 10.23.215.87:2377
This node joined a swarm as a worker.

3..登录manager查看集群信息,集群搭建完毕。

[root@manager ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
4tlp5w6pbuhbw1vdm5eyfgvht *   manager             Ready               Active              Leader              19.03.8
l01337gajltyxxcj4u877zzfm     worker1             Ready               Active                                  19.03.8
sfecygd6gj6vlw6luivury2bp     worker2             Ready               Active                                  19.03.8  

常见操作

1.生产中需要使用多manger高可用,可以使用命令 docker node promote 将node 升级为manager.  下面可以看到worker1 worker2 随时准备接替 manger当leader(一般manger需要3个)

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

2.如果需要将manager降级为node 可以使用命令docker node demote 

[root@manager ~]# docker node demote worker1
Manager worker1 demoted in the swarm.
[root@manager ~]# docker node demote worker2
Manager worker2 demoted in the swarm.

3.如果worker节点异常了,可以将节点调整为不可调度,使用命令node update --availability drain  worker1 集群会将所有service里的在worker1副本进行驱离到其他的节点

     1>.我先创建一个service  

docker service create  --name web  --replicas=3  nginx

 

    2>.查看service ,可以看到worker1上已经有一个nginx

 

    3>.使用命令将worker1设置为不可调度,可以看到 原来在worker1上的副本已经漂移到其他节点上了,且是drain 状态

[root@manager ~]# docker node update --availability drain worker1
worker1

 

 

  

 

 4.恢复worker1节点,可以使用命令docker node update --availability active worker1 但是service不会自动漂移过来。

[root@manager ~]# docker node update --availability active  worker1
worker1

 

 5.删除节点流程.首先要将节点设置为drain 状态 等待集群重新将service的副本分配到其他节点。然后使用命令删除

docker node rm worker1

 如报错

Error response from daemon: rpc error: code = FailedPrecondition desc = node 91eqkew8rbf6kfkqmm5twlmq5 is not down and can't be removed
可以登录worker1
systemctl stop docker 
后即可删除

6.删除的节点重新加入集群

  1>.登录manager服务器查看加入集群命令docker swarm  join-token manager

  

 

 2>.在worker节点上先执行docker swarm leave --force (主要是这个机器已经加入过集群,需要退出来,新的节点不需要执行)

docker swarm leave  --force

 再接着执行刚查看加入集群的命令

docker swarm join --token SWMTKN-1-...........bw 10.23.215.87:2377

  

新节点需要加入,查看加入命令

docker swarm join-token manager

 

 

    

 

 

  

  

  

 

posted @ 2020-05-13 13:27  caonw  阅读(582)  评论(0编辑  收藏  举报