• Docker Swarm集群搭建


        Docker Swarm提供Docker容器集群服务,可以将多个Docker主机封装为单个单行的虚拟Docker主机,快速打造一套容器云平台。

        DockerSwarm提供很多新特性,如 具有容错能力的去中心化设计、内置服务发现、负载均衡、路由网络、动态伸缩、滚动更新、安全传输等。

     

    必须弄清楚的几个基本概念

    节点:

        运行Docker的主机可以主动初始化一个Swarm集群或者加入一个已经存在的Swarm集群,这样这个运行Docker的主机就成为一个Swarm集群的节点(node)

    节点分为管理(manager)节点和工作(worker)节点。

    管理节点用于Swarm集群的管理,docker swarm命令基本只能在管理节点上执行(节点退出集群命令docker swarm leave 可以在工作节点执行)。一个swarm集群可以有多个管理节点,但只有一个管理节点可以成为leader,leader通过raft协议实现。

    工作节点是任务执行节点,管理节点将服务(service)下发至工作节点执行。管理节点默认也作为工作节点。也可以通过配置让服务只运行在管理节点。

    工作节点与管理节点的关系

     

     

    服务和任务

    任务(Task)是Swarm中最小的调度单位,目前来说就是一个单一的容器。

    服务(Services)是指一组任务的集合,服务定义了任务的属性。服务有两种模式:

    replicated services 按照一定规则在各个工作节点上运行指定个数的任务。

        global services 每个工作节点上运行一个任务

    两种模式通过 docker service create 的 --mode 参数指定。

     

    容器、任务、服务的关系

     

    创建Swarm集群(WIn10+Docker Desktop)

    下面创建一个小集群,一个管理节点,两个工作节点。

    创建三个主机,并把她们加到集群中去

     

    第一个主机(也是管理节点manager)

    docker-machine create --driver hyperv --hyperv-virtual-switch=public-all-web manager

    docker-machine ssh manager

    docker swarm init --advertise-addr 192.168.0.106

     

    docker swarm join --token SWMTKN-1-1u51qcpqcjpr3swnuevd6z4k7jvayfnty2bqqrnboy00taaj4f-eg58by0j4qpfezsfmyf72002q 192.168.0.106:2377

     

    第二个主机(工作节点work1)

    docker-machine create --driver hyperv --hyperv-virtual-switch=public-all-web work1

    docker-machine ssh work1

     

    docker swarm join --token SWMTKN-1-1u51qcpqcjpr3swnuevd6z4k7jvayfnty2bqqrnboy00taaj4f-eg58by0j4qpfezsfmyf72002q 192.168.0.106:2377

     

    第三个主机(工作节点work2)

    docker-machine create --driver hyperv --hyperv-virtual-switch=public-all-web work2

    docker-machine ssh work2

     

    docker swarm join --token SWMTKN-1-1u51qcpqcjpr3swnuevd6z4k7jvayfnty2bqqrnboy00taaj4f-eg58by0j4qpfezsfmyf72002q 192.168.0.106:2377

     

    Ok 这样就创建好了一个最小的集群,然后登陆到管理节点上。看下情况

    docker node ls

     

    部署服务

    使用Docker service命令来管理Swarm集群中的服务,该命令只能在管理节点运行。

     

    在上面创建的一个Swarm集群中运行一个nginx的服务。

    docker service create --replicas 3 -p 80:80 --name nginx nginx:1.13.7-alpine

    如果没有问题的话,集群里这三台访问任何一个IP都应该可以看到服务

     

    在管理者节点上通过docker service ls 来看Swarm集群运行的服务详情

    用docker node ls 来看个节点详情

     

     

    使用 docker service ps 来查看某个服务的详情。

    docker service ps nginx

     

    docker service logs 看服务日志

    docker service logs nginx

     

    服务伸缩

    可以使用 docker service scale 对一个服务运行的容器数量进行伸缩

    当业务处于高峰期时,我们需要扩展服务运行的容器数量

    docker service scale nginx=5

    当业务平稳时,我们需要减少服务运行的容器数量

    docker service scale nginx=2

    删除服务

    使用 docker service rm 来从 Swarm 集群移除某个服务。

    docker service rm nginx

     

     

  • 相关阅读:
    IntelliJIDEA永久注册使用
    并行设计模式(二)-- Master-Worker模式
    Guava之CaseFormat
    solr6.3.0升级与IK动态词库自动加载
    算法思维
    并发库应用之一 & ThreadLocal实现线程范围的共享变量
    filecoin里程碑事件
    博客园 增加打赏功能
    session-token-cookie讲解
    golang原生的RPC实现
  • 原文地址:https://www.cnblogs.com/csnd/p/12061829.html
Copyright © 2020-2023  润新知