创作不易,来了的客官点点关注,收藏,订阅一键三连❤
运维之基础——Linux。我是一个即将毕业的大学生,超超。如果你也在学习Linux,不妨跟着萌新超超一起学习Linux,拿下Linux,一起加油,共同努力,拿到理想offer!
系列文章
Linux进阶 | docker compose的安装与使用详解,超详细!
Linux进阶 | Docker部署nginx的web服务,VOLUME的使用详解,实现数据持久化!
Linux进阶 | 2万字总结最详细的Docker的安装、底层隔离机制和简单使用!
Linux | 详解系统监控和常用命令(top free dstat)
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。本期内容为Docker第五期,通过本期内容将会掌握集群的概念,以及swarm的安装部署,以及swarm和compose以及volume的结合。
前言
概述
超超Docker学习思维导图
集群(cluster)
集群的优势
swarm(蜂群)的概念
什么是swarm
swarm与compose
swarm与k8s
swarm的优势
swarm的基本结构
swarm的关键点
swarm的使用纲要
swarm的使用
swarm的其他命令
swarm集群部署web服务
思考:swarm manager 是通过什么方式和swarm node进行通信的?
镜像的滚动升级操作
结合compose和swarm进行多服务的编排
compose和swarm结合有什么优势
代码实例部署
Swarm中使用Volume
问题:如何解决web服务的网页保持一致?
多台机器完成某个功能。计算机集群简称集群,是一种计算机系统,它通过一组松散集成的计算机软件(和/或)硬件连接起来高度紧密地协作完成计算工作。
举个生活实例:单点(非集群)模式,就类似银行只开放一个窗口来办理业务,而通过建立集群,就相当于一个银行开通多个窗口办理业务,那么这样不仅能提高办事效率,还能减少风险。
高可伸缩性:服务器集群具有很强的可伸缩性。随着需求和负荷的增长,可以向集群系统添加更多的服务器。在这样的配置中,可以有多台服务器执行相同的应用和数据库操作。
高可用性:高可用性是指,在不需要操作者干预的情况下,防止系统发生故障或从故障中自动恢复的能力。通过把故障服务器上的应用程序转移到备份服务器上运行,集群系统能够把正常运行时间提高到大于99.9%,大大减少服务器和应用程序的停机时间。
高可管理性:系统管理员可以从远程管理一个、甚至一组集群,就好像在单机系统中一样。
对多台安装了Docker的宿主机上的容器进行编排。
Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。
一个 swarm 由多个 Docker 主机组成,它们以swarm 模式运行并充当管理器(管理成员资格和委派)和工作器(运行 swarm 服务)。
一个给定的 Docker 主机可以是管理者、工作者,或同时扮演这两个角色。
Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是在一个单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。
Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些。
与独立容器相比,swarm 服务的主要优势之一是可以修改服务的配置,包括它所连接的网络和卷,而无需手动重新启动服务。Docker 将更新配置,停止使用过期配置的服务任务,并创建与所需配置匹配的新任务。
在以上结构图可以看出Docker Client使用Swarm对集群(Cluster)进行调度使用。
1.Swarm
集群的管理和编排是使用嵌入docker引擎的SwarmKit,可以在docker初始化时启动swarm模式或者加入已存在的swarm
2.Node
一个节点是docker引擎集群的一个实例。您还可以将其视为Docker节点。您可以在单个物理计算机或云服务器上运行一个或多个节点,但生产群集部署通常包括分布在多个物理和云计算机上的Docker节点。
要将应用程序部署到swarm,请将服务定义提交给Manager节点,Manager节点将Task的工作单元分派给worker node。
Manager节点还执行维护所需群集状态所需的编排和集群管理功能。Manager节点选择单个领导者来执行编排任务。
工作节点接收并执行从管理器节点分派的任务。默认情况下,Manager节点还将服务作为工作节点运行,但您可以将它们配置为仅运行管理器任务并且是仅管理器节点。代理程序在每个工作程序节点上运行,并报告分配给它的任务。Worker node向Manager节点通知其分配的任务的当前状态,以便管理器可以维持每个工作者的期望状态。
3.Service
一个服务是Task的定义,Manager或Work node上执行。它是群体系统的中心结构,是用户与群体交互的主要根源。创建服务时,你需要指定要使用的容器镜像。
4.Task
任务是在docekr容器中执行的命令,Manager节点根据指定数量的任务副本分配任务给worker节点
docker swarm:集群管理,子命令有init, join, leave, update。(docker swarm --help查看帮助)
docker service:服务创建,子命令有create, inspect, update, remove, tasks。(docker service--help查看帮助)
docker node:节点管理,子命令有accept, promote, demote, inspect, update, tasks, ls, rm。(docker node --help查看帮助)
node是加入到swarm集群中的一个docker引擎实体,可以在一台物理机上运行多个node,node分为:
manager node --> 也就是管理节点
worker nodes --> 也就是工作节点
①manager node(管理节点):执行集群的管理功能,维护集群的状态,选举一个leader节点去执行调度任务。
②worker node(工作节点):接收和执行任务。参与容器集群负载调度,仅用于承载task。
③service(服务):一个服务是工作节点上执行任务的定义。创建一个服务,指定了容器所使用的镜像和容器运行的命令。service是运行在worker nodes上的task的描述,service的描述包括使用哪个docker 镜像,以及在使用该镜像的容器中执行什么命令。
④task(任务):一个任务包含了一个容器及其运行的命令。task是service的执行实体,task启动docker容器并在容器中执行任务。