目录
一、Docker Swarm简介
1、基本架构图
2、关键概念
(1)、Swarm
(2)、Node节点
(3)、service服务
(4)、task任务
3、工作模式
(1)、Node节点
(2)、Service服务
(3)、任务与调度
(4)、服务副本与全局服务
4、调度策略
5、集群模式特性
二、Docker Swarm集群部署
1、准备工作
(1)、主机规划:
(2)、分别修改manager、worker节点hostname
(3)、分别修改manager、worker节点hosts文件
(4)、关闭防火墙
docker-toc" name="tableOfContents" style="margin-left:40px">2、安装docker
(1)、切换镜像源
docker%E7%89%88%E6%9C%AC-toc" name="tableOfContents" style="margin-left:80px">(2)、查看当前镜像源中支持的docker版本
docker-ce-toc" name="tableOfContents" style="margin-left:80px">(3)、 安装特定版本的docker-ce
(4)、添加一个配置文件
docker-toc" name="tableOfContents" style="margin-left:80px">(5)、启动docker
docker%E7%8A%B6%E6%80%81%E5%92%8C%E7%89%88%E6%9C%AC-toc" name="tableOfContents" style="margin-left:80px">(6)、检查docker状态和版本
(7)、 配置解决镜像拉取慢的问题(每个节点均要执行)
docker%E5%9C%A8%E6%9C%AC%E6%9C%BA%E7%9A%84%E9%85%8D%E7%BD%AE%E7%9B%AE%E5%BD%95%C2%A0%EF%BC%8C%E6%AD%A4%E5%A4%84%E4%B8%BA%2Fetc%2Fdocker-toc" name="tableOfContents" style="margin-left:120px">步骤一、进入docker在本机的配置目录 ,此处为/etc/docker
步骤二、新建配置文件daemon.json,
docker-toc" name="tableOfContents" style="margin-left:120px">步骤三、重启docker
3、Manager节点创建Swarm集群
(1)、创建集群
(2)、查看集群信息
4、Worker节点加入集群
一、Docker Swarm简介
Swarm是Docker公司推出的用来管理docker集群的平台,可以让用户很容易的部署跨主机的容器集群服务。Docker Swarm 和 Docker Compose 都是 Docker 官方容器编排项目,不同的是Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务。对于微服务的部署,显然 Docker Swarm 会更加适合。
从 Docker 1.12.0 版本开始,Docker Swarm 已经包含在 Docker 引擎中,并且已经内置了服务发现工具。
Swarm只是一个调度器(Scheduler)加路由器(router),它本身不运行容器,只接受Docker客户端发来的请求,调度适合的节点来运行容器。即使Swarm由于某些原因挂掉,集群中的节点也会正常运行,等到Swarm重新恢复运行后,它会收集重建集群信息。
1、基本架构图
在结构图可以看出 ,Docker Client使用Swarm对集群(Cluster)进行调度使用。Swarm 集群由管理节点(manager)和工作节点(worker)构成。Swarm是典型的master-slave结构,通过发现服务来选举manager。manager是中心管理节点,各个node上运行agent接受manager的统一管理,集群会自动通过Raft协议分布式选举出manager节点,避免了单点的瓶颈问题,同时也内置了DNS的负载均衡和对外部负载均衡机制的集成支持。
2、关键概念
(1)、Swarm
集群的管理和编排是使用嵌入docker引擎的SwarmKit,可以在docker初始化时启动swarm模式或者加入已存在的swarm。
(2)、Node节点
- Manager节点:负责整个集群的管理,包括集群配置、服务管理等所有跟集群相关的工作。Manager节点选举一个leader节点去执行调度任务。
- Worker节点:接收并执行从管理器节点分派的任务,参与容器集群负载调度,主要负责运行相应的服务(容器)来执行任务(task)。
(3)、service服务
一个服务是工作节点上执行任务的定义。创建一个服务,指定了容器所使用的镜像和容器运行的命令。Service是运行在Worker节点上的task的描述,Service的描述包括使用哪个docker 镜像、服务网络、服务端口、服务副本数等。
(4)、task任务
一个任务包含了一个容器及其运行的命令。task是Service的执行实体,task启动docker容器并在容器中执行任务。
3、工作模式
(1)、Node节点
(2)、Service服务
(3)、任务与调度
(4)、服务副本与全局服务
4、调度策略
Swarm在调度运行容器的时候,会根据指定的策略来计算最适合运行容器的Worker节点。目前支持的策略有:random、spread、binpack。