zoukankan      html  css  js  c++  java
  • Docker集群管理(三)—— docker swarm mode基础教程

    docker从1.12版(及后续版本)集成了swarmkit。可以方便的实现docker集群。它有哪些特点呢:

    • 集成了集群功能
    • 分散设计:manager和worker两种节点。
    • 声明式服务模式
    • 可伸缩
    • 达到期望值——当某些有节点崩溃的时候,会在其他节点创建相应容器。
    • 跨主机网络——采用overlay网络,docker可在不同的主机间通讯。
    • 服务发现——内置服务发现功能,不需要额外使用etcd、consul、zookeeper.
    • 负载均衡
    • 安全通信
    • 安全回滚

    docker命令概览
    从命令 docker -h 可以清楚的看到一些新的管理命令,这些管理命令下面还有子命令。
    docker container
    docker image
    docker network
    docker node
    docker plugin
    docker secret
    docker service
    docker stack
    docker swarm
    docker system
    docker volume
    例如:docker swarm init 初始化一个集群,其他命令直接 -h 查看命令就可以了。

    本篇按docker官方教程顺序大致介绍一下,也将一下自己的体验过程中遇到的问题和解决办法分享出来。

    创建集群

    本节的目标:

    *创建一个集群
    *添加节点到集群
    *部署服务到swarm集群中
    *管理集群

    准备工作

    *在vmware中的虚拟机(这里是centos 7.3 )
    192.168.139.128(manager1)
    192.168.139.129(manager2)
    192.168.139.130(manager3)
    192.168.139.131(worker)
    *安装docker1.12或以后的版本(这里是docker 1.13.1)
    *设置虚拟机IP
    虚拟机中的共享主机IP,在docker swarm创建了overaly网络后,可能引起IP变化,可修改 /etc/sysconfig/network-scripts/ifcfg-ens33来固定IP。
    *开启防火墙端口
    2377/tcp 、7946/tcp/udp,4789/udp端口

    创建集群(swarm mode)

    在一台128 manager上执行:

    # docker swarm init --advertise-addr=192.168.139.128:2377
    
     Swarm initialized: current node (htqmmiiiw8z4cww3c4n1mkbkz) is now a manager.
     To add a worker to this swarm, run the following command:
         docker swarm join 
        --token SWMTKN-1-1xl2p1wd6r2ak0ekqtzmw0lf2fc78glrsgqm02wdqmxqap9yjv-8tezcdr89dgsv3byjxm90yvhv 
        192.168.139.128:2377
     To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
    

    此时128就是集群的manager节点(同时也是集群的worker节点),根据返回的信息,我们可以方便的添加一些worker节点,作为集群要考虑单点问题,故我们需要多添加几台作为manager节点。添加之前可以查看一下当前集群中的节点情况:

    # docker node ls
    
    ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
    m7vv962jgkvjn5padsem5cbmz *  swarm.node1_m1  Ready   Active        Leader
    
    

    然后执行:

    docker swarm join-token manager
    

    返回信息:

    To add a manager to this swarm, run the following command:
    docker swarm join
    --token SWMTKN-1-6191qy3f6xkj39cg51gka40mgpq9c7o5tvyu19h3b1o0thh0e4-2kvhkye3194i7mxg3okjdqlog
    192.168.139.128:2377
    顺便说一下docker swarm join-token 就是查看如何添加manager或worker节点的token

    这里打算再添加1个manager节点,在129上执行

    docker swarm join 
        --token SWMTKN-1-1xl2p1wd6r2ak0ekqtzmw0lf2fc78glrsgqm02wdqmxqap9yjv-ai5q09y6ogmfct4v5xhgsfmga 
        192.168.139.128:2377
    

    将130,131作为worker节点,执行

    docker swarm join 
        --token SWMTKN-1-6191qy3f6xkj39cg51gka40mgpq9c7o5tvyu19h3b1o0thh0e4-e1urle7qhwwvyufdqri4fre4s 
        192.168.139.128:2377
    

    现在可以在每一个manager节点上查看一下所有的节点(docker node ls):

    9bwmkfxz0fgflp4zu6luequaa swarm.node3-m3 Ready Active
    hntv80xrlm22x17i792cdr2j3 swarm.node2_m2 Ready Active Reachable
    m7vv962jgkvjn5padsem5cbmz * swarm.node1_m1 Ready Active Leader
    yiyz9v3huqd7m0kgjvdu5vppt swarm.node4 Ready Active

    可以看到多了一个reachable的管理节点,如果leader挂了,那么reachable节点就会提升为leader。这里面有一些具体的关于raft算法的不在累述。

    到此,我们的简易集群已经创建好了,看起来是不是太easy了?

    可能会遇到的坑:

    • 没开防火墙的2377/tcp 、7946/tcp/udp,4789/udp端口。
    • 虚拟机中的共享主机IP,在docker swarm创建了overaly网络后,可能引起IP变化,可修改 /etc/sysconfig/network-scripts/ifcfg-ens33来固定IP。
  • 相关阅读:
    【codecombat】 试玩全攻略 第九关 循环又循环
    【codecombat】 试玩全攻略 第十三关 已知敌人
    【codecombat】 试玩全攻略 第十一关 再次迷宫经历
    【codecombat】 试玩全攻略 第六关 cell commentary
    【codecombat】 试玩全攻略 第八关 火舞
    【codecombat】 试玩全攻略 第十二关 恐惧之门
    【codecombat】 试玩全攻略 第十四关 已知敌人
    苹果apns推送总结
    Xcode 提升速度小技巧
    UITextField 限制输入字数
  • 原文地址:https://www.cnblogs.com/ikodota/p/use_docker_with_swarm_mode.html
Copyright © 2011-2022 走看看