美文网首页程序员
docker swarm 1.12 集群

docker swarm 1.12 集群

作者: _一叶_ | 来源:发表于2016-08-16 13:57 被阅读0次

    准备

    1.至少两台虚拟机(ip能够互相ping通)

    2.docker版本至少1.12

    3.打开必要端口

    • 2377(集群管理通信)
    • 7946(节点间通信)
    • 4789(overlay网络端口)

    创建集群

    在其中一台机器上执行docker swarm init --advertise-addr <MANAGER-IP>创建集群

    $ docker swarm init --advertise-addr 192.168.190.136
    Swarm initialized: current node (dxn1zf6l61qsb1josjja83ngz) is now a manager.
    
    To add a worker to this swarm, run the following command:
        docker swarm join \
        --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
        192.168.99.100:2377
    
    To add a manager to this swarm, run the following command:
        docker swarm join \
        --token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6 \
        192.168.99.100:2377
    

    只有有了token就很容易加入集群,token至少每6个月要更换一次,执行命令 swarm join-token --rotate来更换token。

    Docker使用Raft一致性算法管理集群节点,关于Raft可参考:http://www.open-open.com/lib/view/open1436599774864.html

    加入集群

    在其它机器上运行加入集群的命令,该命令在创建集群时会显示

    $ docker swarm join \
      --token  SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
      192.168.99.100:2377
    
    This node joined a swarm as a worker.
    

    如果你忘记了加入命令,可以在manager节点上执行以下命令获取:

    $ docker swarm join-token worker
    
    To add a worker to this swarm, run the following command:
        docker swarm join \
        --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
        192.168.99.100:2377
    

    注意:并不是管理节点越多可伸缩性和规模就越大,有时候却恰恰相反,建议集群最多7个管理节点。当有3个管理节点时,最多容许失效1个管理节点;当有5个时,最多容许同时失效2个;当有n个时,最多容许失效(N-1)/2个。建议基数个管理节点。

    离开集群

    在要离开的节点执行(如果是manager需要加--force,否则返回错误警告):

    $ docker swarm leave
    
    Node left the swarm.
    

    然后再在管理节点上执行命令docker node rm <NODE>,将该节点从node-list中删除。

    查看节点

    1. 查看集群所有节点

    $ docker node ls
    
    ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
    46aqrk4e473hjbt745z53cr3t    node-5    Ready   Active        Reachable
    61pi3d91s0w3b90ijw3deeb2q    node-4    Ready   Active        Reachable
    a5b2m3oghd48m8eu391pefq5u    node-3    Ready   Active
    e7p8btxeu3ioshyuj6lxiv6g0    node-2    Ready   Active
    ehkv3bcimagdese79dn78otj5 *  node-1    Ready   Active        Leader
    

    AVAILABILITY可用状态:

    • Active 活动的节点,可以被调度器分配任务
    • Pause 不能分配新任务,已存在的任务继续运行
    • Drain 不能分配新任务,已存在的任务会被停止,并将这些任务调度到在可用节点上

    MANAGER STATUS管理者状态:

    • 无值 表示该节点是worker
    • Leader集群的第一个管理者,管理整个集群,编排决策
    • Reachable属于管理节点,当Leader节点不可用后,该节点有权利竞选Leader
    • Unreachable 管理节点不可用,无法与其它管理节点连接(节点退出集群)

    2. 查看指定节点详情

    //不加--pretty返回json格式
    $ docker node inspect self --pretty
    
    ID:         ehkv3bcimagdese79dn78otj5
    Hostname:       node-1
    Status:
     State:         Ready
     Availability:      Active
    Manager Status:
     Address:       172.17.0.2:2377
     Raft Status:       Reachable
     Leader:        Yes
    Platform:
     Operating System:  linux
     Architecture:      x86_64
    Resources:
     CPUs:          2
     Memory:        1.954 GiB
    Plugins:
      Network:      overlay, host, bridge, overlay, null
      Volume:       local
    Engine Version:     1.12.0-dev
    

    更新节点

    1. 更新节点状态

    // drain, pause, active
    $ docker node update --availability drain node-1
    
    node-1
    

    2. 添加和删除节点标签

    节点标签:方便节点组织,约束服务,限制服务调度

    //--label-add 参数支持<key>和<key>=<value>
    $ docker node update --label-add foo --label-add bar=baz node-1
    
    node-1
    

    3. 提升和降级节点

    必须保持基数管理节点

    $ docker node promote node-3 node-2
    Node node-3 promoted to a manager in the swarm.
    Node node-2 promoted to a manager in the swarm.
    
    $ docker node demote node-3 node-2
    Manager node-3 demoted in the swarm.
    Manager node-2 demoted in the swarm.
    

    和以下命令功能相同,但更方便

    docker node update --role manager node-3 node-2
    docker node update --role worker node-3 node-2
    

    相关文章

      网友评论

        本文标题:docker swarm 1.12 集群

        本文链接:https://www.haomeiwen.com/subject/msepsttx.html