当前位置:   article > 正文

Docker实验(十二)Swarm管理Docker集群与Docker Stack的简单搭建_docker swarm与docker stack

docker swarm与docker stack

一.概念(Swarm管理Docker集群)

  • Swarm 是 Docker 公司在 2014 年 12 月初发布的一套较为简单的工具,用来管理 Docker 集群,它将一群 Docker 宿主机变成一个单一的,虚拟的主机。

  • Swarm 使用标准的 Docker API接口作为其前端访问入口,换言之,各种形式的 Docker Client(docker client in go,docker_py,docker 等)均可以直接与 Swarm 通信。Swarm 几乎全部用 Go 语言来完成开发。 Swarm deamon 只是一个调度器(Scheduler)加路由器(router),Swarm 自己不运行容器,它只是接受 docker 客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm 由于某些原因挂掉了,集群中的节点也会照常运行,当 Swarm 重新恢复运行之后,它会收集重建集群信息。

  • 1.docker API 用于管理镜像的生命周期。
    2.swarm CLI 用于集群管理。
    3.LeaderShip 提供集群的 HA(high avaliable),防止单点故障,具体实施请参见官网(Highavilability for docker swarm)
    4.discovery service 是 warm 的发现服务,它会在每个 node 中注册一个gangent 将各个节点的 IP端口上报,manager 会从发现服务读取各节点信息。
    5.schedule 调度模块,用于容器调度时选择最优节点,主要分如下两步(filter 和 strategy)。
    6.filter(过滤),当创建或运行容器时,它会告诉调度器哪些节点是可用的(符合要求的)。filter 可以分为两类,节点过滤和基于容器配置的过滤。节点过滤:
    Constraints,约束过滤器,可以根据当前操作系统类型、内核版本、存储类型等条件进行过滤,当然也可以自定义约束,在启动 Daemon 的时候,通过 Label 来指定当前主机所具有的特点。
    7.Affnity,亲和性过滤器,支持容器亲和性和镜像亲和性,比如一个 web 应用,我想将 DB 容器和 Web 容器放在一起,就可以通过这个过滤器来实现。
    8.Dependency,依赖过滤器。如果在创建容器的时候使用了–volume-from/–link/–net 某个容器,则创建的容器会和依赖的容器在同一个节点上。
    9.Ports filter,会根据端口的使用情况过滤。
    10.strategy 根据策略选择最优节点
    11.Binpack,在同等条件下,选择资源使用最多的节点,通过这一个策略,可以将容器聚集起来。
    12.Spread,在同等条件下,选择资源使用最少的节点,通过这一个策略,可以将容器均匀分布在每一个节点上。
    13.Random,随机选择一个节点。
    14.swarm create:Swarm 中 swarm create 命令用于创建一个集群标志,用于 Swarm 管理 Docker 集群时,
    15.Docker Node 的节点发现功能。发起该命令之后,Swarm 会前往 Docker Hub 上内建的发现服务中获取一个全球唯一的token,用以唯一的标识 Swarm 管理的 Docker 集群。

    注:Swarm 的运行需要使用服务发现,目前该服务内建与 Docker Hub,该服务发现机制目前还在 alpha 版本,站点为:http://discovery-stage.hub/docker.com

  • swarm manage
    Swarm 中 swarm manage 是最为重要的管理命令。一旦 swarm manage 命令在 Swarm 节点上被触发,则说明用户需要 swarm 开始管理 Docker 集群,从运行流程的角度来讲,swarm 经历的阶段主要有两点:启动 swarm、接收并处理 Docker 集群管理请求。

  • Swarm 启动的过程包含三个步骤:
    发现 Docker 集群中的各个节点,收集节点状态、角色信息,并监视节点状态的变化;

二.Swarm管理Docker集群

前提(开启docker服务并清除环境):
在server1和server3上安装docker(server1和server2之前已经安装过,所以这里只快速演示server3的安装)

1.在server3中安装docker并开启docker

[root@server3 docker]# systemctl start docker
[root@server3 ~]# ls
[root@server3 ~]# cd docker/
[root@server3 docker]# ls
[root@server3 docker]# yum install -y *
[root@server3 docker]# systemctl start docker
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述
在这里插入图片描述
2.在server1和server2中开启docker

[root@server1 ~]# systemctl start docker
[root@server2 ~]# systemctl start docker
  • 1
  • 2

在这里插入图片描述
在这里插入图片描述
3.在server1中删除所有容器

[root@server1 ~]# docker ps -a
[root@server1 ~]# docker rm -f compose_web2_1
[root@server1 ~]# docker rm -f compose_web1_1
[root@server1 ~]# docker rm -f compose_haproxy_1
[root@server1 ~]# docker ps -a
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
4.在server2中删除所有容器

[root@server2 ~]# docker ps -a
[root@server2 ~]# docker rm -f vm1
[root@server2 ~]# docker rm -f vm3
[root@server2 ~]# docker ps -a
  • 1
  • 2
  • 3
  • 4

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/728196
推荐阅读
相关标签
  

闽ICP备14008679号