• Docker


    总结

    需要至少有三台主机,是两台不行

    一、Swarm 命令

    docker swarm init - 初始化swarm

    docker swarm init --advertise-addr [ip地址]

    初始化swarm的广告地址,可以让别的node发现他。这里的ip用的是私网地址,更省钱。

    初始化swarm的同时,该docker-1 节点同时也会成为manager节点。

    今后只要有node想加入该swarm (不是docker-1 节点):

    • 想成为worker的:   docker swarm join --token ...
    • 想成为manager的:docker swarm join-token manager

    如果中途忘记添加worker和manager的命令,怎么办?

    通过以下的命令,在swarm的manager节点上执行即可再次获得上图的黄色highlight命令

    docker swarm join 加入节点

    docker-2 加入docker-1成为worker节点: 

    在docker-1 manager节点中,查看node信息

     

    docker-4加入docker-1成为manager节点:

     在docker-1 manager节点中,再次查看node信息

    docker service 从容器到服务

    docker service的本质思想,是容器(单容器)-->服务(多容器多副本)的思想转变。

    • docker run...     是运行一个容器,不具有扩缩容功能
    • docker service...是运行一个服务(多容器),具有扩缩容,滚动更新功能

    通过启动多个“容器”,这多个副本封装起来就成为了一个服务service。可以实现高可用,扩缩容,滚动更新(灰度发布),负载均衡等。

    对于一个服务,swarm集群中任意的节点都可以访问到(哪怕该节点的机器上并没有运行该服务容器)。

    创建服务

    查看服务

     

    动态扩缩容服务

    方法1:update命令

    将nginx服务副本,扩展为3个:

    将nginx服务副本,缩减为1个:

    方法2:scale命令

    二、Raft一致性协议

    总结

    类似ZooKeeper的leader选举:在swarm集群中,只有超过一半的manager节点可用时,swarm才会保持可用;否则就会不可用。

    因此swarm集群的manager节点至少得有三个。若只有两个,两个人各自投自己票是选不出leader的。

    实验过程

    承接上面的配置:

    docker-1和docker-4做manager节点(其中docker-1是leader, docker-4是备份reachable)

    docker-2和docker-3做worker节点

     2.再把docker-1启动,docker-4成为leader

     

    3. docker-3离开swarm

    4. docker-3重新加入swarm,并成为manager节点

  • 相关阅读:
    SpringBoot整合Elasticsearch
    Elasticsearch环境搭建和介绍(Windows)
    Java并发AtomicBoolean类的使用
    RequestMapping详细用法
    RSA公钥加密 私钥解密
    java随机生成RSA密钥对
    java通过实体类生成数据库表 并生成注释
    设计模式-策略模式
    设计模式-模板方法模式使用
    设计模式-模板方法模式
  • 原文地址:https://www.cnblogs.com/frankcui/p/14881638.html
Copyright © 2020-2023  润新知