zoukankan      html  css  js  c++  java
  • 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

        

      

      

      

  • 相关阅读:
    python、Java、大数据和Android的薪资如何?
    php最新版本配置mysqli
    使用Python3爬虫抓取网页来下载小说
    pygame事件之——控制物体(飞机)的移动
    用javascript做别踩白块游戏2
    用javascript做别踩白块游戏1
    select、poll、epoll之间的区别总结(IO同、异步、(非)阻塞)----内核态、用户态
    元类
    python大神-javascript知识
    python大神-html知识
  • 原文地址:https://www.cnblogs.com/caonw/p/12881842.html
Copyright © 2011-2022 走看看