[云原生专题-17]:容器 - docker自带的集群管理工具swarm - 简介原理架构

Posted 文火冰糖的硅基工坊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[云原生专题-17]:容器 - docker自带的集群管理工具swarm - 简介原理架构相关的知识,希望对你有一定的参考价值。

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122739329


目录

前言:

第1章 swarm概述

1.1 菜鸟教程

1.2 简介

1.3 辅助协作工具

1.4 Docker Swarm与Docker关系

1.4 Docker Swarm主机的来源

1.6 Docker Swarm与K8S

第2章 swarm业务场景特点和系统架构

2.1 业务场景的特点

2.2 总体架构

2.3 详细架构

第3章 swarm搭建集群服务的主要过程

3.1 节点的创建与管理

3.2 服务的创建、分配、与管理



前言:

微服务docker应用的推广,在一个系统中出现大量的docker实例的运行,不同的docker镜像,其功能不同,相同的docker镜像,不同的docker实例,用于分担不同的负载。为了对这些docker进行统一的管理,就需要对这些docker的角色进行划分,对外提供少数的统一接口,对内进行业务调度。而作为独立个体的docker是无法做到这一点的,这就需要新的工具来注册、管理、协同一个个独立的docker,这就是swarm。

第1章 swarm概述

1.1 菜鸟教程

Swarm 集群管理 | 菜鸟教程

1.2 简介

Docker Swarm 是 Docker 的集群管理工具。

它将内部运行中的Docker主机池,转变为对外呈现的单个虚拟 Docker 主机(对外看到的是一个docker主机,而不是一个docker主机集群)

Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。

Docker Swarm主要任务是:在现有的多个docker主机的基础之上,把所有的现有的docker主机以及他们的docker应用看成一个整体,构建出一个虚拟的、处理能力弹性变化的虚拟的docker主机。

有了Docker Swarm,对外看到的是一个docker主机,是一个整体,而对是一个无数个主机组成的Docker主机集群, 他们在Docker Swarm的调度和管辖下,统一提供对外服务。

打一个不缺当的比喻,如果把docker集群,比喻成一个集团公司的,Docker Swarm就是集团公司的最高管理层。

1.3 辅助协作工具

  • Docker Machine  =>  创建虚拟机环境
  • Dokku                  =>  轻量级的PaaS环境
  • Docker Compose => 构建docker镜像
  • Jenkins                =>  流水线管理 

1.4 Docker Swarm与Docker关系

Docker Swarm是docker内生的功能,因此不需要独立安装相关的软件。

我们只使用Docker Swarm提供的新的命令,把多个不同的docker主机,进行集群化组网,进行各自角色的分工。

1.4 Docker Swarm主机的来源

Docker Swarm所管辖的是docker主机以及docker上的docker应用。其主机的主要来源有

  • 通过docker machine创建的docker主机
  • 通过手工在云平台创建的docker主机

备注:必须先在docker主机上安装docker引擎,因为Docker Swarm的功能是内嵌在docker中的。

1.6 Docker Swarm与K8S

docker swarm 与kubernetes都是集群管理工具,docker swarm 是docker 原生自带,kubernetes是谷歌项目下的容器编排工具。

swarm:轻量级的集群管理工具

Swarm是Docker公司在2014年12月初发布的一套用来管理Docker集群的较为简单的工具,由于Swarm使用标准的Docker API接口作为其前端访问入口,所以各种形式的Docker Client(dockerclient in go, docker_py, docker等)都可以直接与Swarm通信。随着Swarm0.2发布,swarm增加了新的策略来调度集群中的容器方式,使得在可用的节点上传播它们,以及支持更多的Docker命令以及集群驱动。

kubernetes:重量级的集群管理工具

kubernetes,是Google多年大规模容器管理技术的开源版本,是众多厂商推崇的docker管理优秀之作,随着越来越多的厂商不停地贡献代码,kubernetes功能也愈发完善。

第2章 swarm业务场景特点和系统架构

好的软件架构是为业务服务的,不同的业务场景,需要有适合的系统架构与之配合。

2.1 业务场景的特点

(1)高可用性:

“高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。互联网业务要求提供7*24小时不间断服务。

(2)高并非性:

高并发是现在互联网分布式框架设计必须要考虑的因素之一,它是可以保证系统能被同时并行处理很多请求,对于高并发来说,它的指标有:

响应时间:系统对进来的请求反应的时间,比如你打开一个页面需要1秒,那么这1秒就是响应时间。

吞吐量:吞吐量是指每秒能处理多少请求数量,好比你吃饭,每秒能吃下多少颗米饭。

秒查询率:秒查询率是指每秒响应请求数,和吞吐量差不多。

并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。

(3)高扩展性:

        网站通过集群的方式将多台服务器组成一个整体,共同提供服务。所谓伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。
 

2.2 总体架构

swarm把运行docker的主机集群,按照角色分为管理节点(manager)和工作节点(work node)。

  • swarm mananger角色:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。一个集群中,可以有多个swarm mananger实例。
  • work node角色:即图中的 available node,主要负责运行相应的服务来执行任务(task)。一个集群中,可以有大量的work node实例。

如下图所示:

2.3 详细架构

(1)swarm mananger

  • 一个集群中可以有多个swarm mananger实例、每个实例是一个虚拟机
  • swarm mananger是swarm架构的核心。
  • swarm mananger不仅仅管理swarm work node,每个swarm mananger负责在不同的node上均衡创建容器服务,实现静态和动态负载平衡。

(2)swarm work node

  • 可以有多个实例、每个实例是一个虚拟机
  • 每个swarm work node都是一个docker环境,以docker daemon为核心,dockker daemon管理本地的多个容器实例。

(3)节点之间的通信

  • work节点之间只有业务上的往来和依存关系,没有管理上的汇报关系。
  • 在管理上,所有的work节点都汇报给swarm mananger,一个work node只汇报给一个mananger 节点,以避免多头管理。一个swarm mananger可以管理多个worker。
  • 节点之间都是通过远程API进行通信,如restful API。
  • 所有主机节点之间必须能够进行TCP/IP的通信。

(4)service服务:

  • 就是一个一个提供服务的容器
  • service在不同work node上的部署,是由其汇报的swarm mananger来进行调度的。

第3章 swarm搭建集群服务的主要过程

注意:跟集群管理有关的任何操作,都是在管理节点上操作的。

3.1 节点的创建与管理

步骤1:创建 swarm 集群管理节点(manager)

先创建管理节点,创建管理节点的方式有:

  • 通过docker machine创建本地virtualbox虚拟机
  • 通过docker machine创建远程virtualbox虚拟机
  • 手工在云厂商的云平台上申请

然后通过进入swarm主机,加入到集群中,执行相关命令

$ docker-machine ssh swarm-manager

$ docker swarm init 

步骤2:创建 swarm 集群工作节点(worker)

先创建管理节点,创建管理节点的方式有:

  • 通过docker machine创建本地virtualbox虚拟机
  • 通过docker machine创建远程virtualbox虚拟机
  • 手工在云厂商的云平台上申请

然后通过进入swarm主机,加入到集群中,执行相关命令

$ docker swarm join

步骤3:在管理节点查看集群信息:docker info 

步骤4:把docker服务部署到集群中

docker service create 

3.2 服务的创建、分配、与管理

步骤5:查看服务部署情况

~$ docker service ps

步骤6:扩展服务实例

docker service scale helloworld=2

步骤7:删除服务

$ docker service rm helloworld

步骤8:滚动升级服务

$ docker service create --replicas 1

步骤9:停止某个节点接收新的任务

$ docker node update --availability drain swarm-worker1 

$ docker node update --availability active swarm-worker1

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122739329


以上是关于[云原生专题-17]:容器 - docker自带的集群管理工具swarm - 简介原理架构的主要内容,如果未能解决你的问题,请参考以下文章

[云原生专题-20]:容器 - docker的常见命令

[云原生专题-15]:容器 - docker主机管理工具-docker machine

[云原生专题-6]:容器 - Docker概述以及虚拟机的比较

[云原生专题-9]:容器 - Docker的启动与关闭:runstop

[云原生专题-10]:容器 - Docker的修改保存共享:commitsaveload-v

[云原生专题-11]:容器 - 如何构建自己的docker镜像:Docker Dockerfile