1.什么是docker swarm
集群管理工具
Docker Swarm是Docker官方提供的一款集群管理工具,它可以将多台Docker主机
抽象为一个整体,并通过一个入口统一管理这些主机上的各种Docker资源。
Swarm将一群Docker宿主机变成一个单一的虚拟主机,使用标准的Docker API接口
作为其前端的访问入口。这意味着各种形式的Docker Client(如compose、docker-py等)
均可以直接与Swarm通信,甚至Docker本身都可以很容易地与Swarm集成,
大大方便了用户将原本基于单节点的系统移植到Swarm上。
Swarm提供了丰富的API,使得部署和管理复杂的微服务应用变得易如反掌。
通过将应用定义在声明式配置文件中,就可以使用原生的Docker命令完成部署。
此外,Swarm还支持执行滚动升级、回滚以及扩缩容操作,同样基于简单的命令即可完成
从集群角度来看,一个Swarm由一个或多个Docker节点组成,
这些节点可以是物理服务器、虚拟机、树莓派或云实例。
所有节点通过可靠的网络相连。节点会被配置为管理节点(Manager)或工作节点(Worker)。
管理节点负责集群控制面,进行诸如监控集群状态、分发任务至工作节点等操作。
工作节点接收来自管理节点的任务并执行。
Swarm的配置和状态信息保存在一套位于所有管理节点上的分布式etcd数据库中。
该数据库运行于内存中,并保持数据的最新状态。
Swarm使用TLS进行通信加密、节点认证和角色授权,确保集群的安全性。
此外,Swarm中的最小调度单元是服务,它是随Swarm引入的,在API中是一个新的对象元素。
当容器被封装在一个服务中时,增加了诸如扩缩容、滚动升级以及简单回滚等特性。
从Docker 1.12.0版本开始,Docker Swarm已经包含在Docker引擎中(docker swarm),
并且已经内置了服务发现工具,无需再配置Etcd或Consul来进行服务发现配置了。
2.swarm 主要功能
Docker Engine CLI 和API 包括了管理Swarm 节点命令,比如添加、删除节点,
以及在Swarm 中部署和编排服务。
也增加了服务栈(Stack)、服务(Service)、任务(Task)概念。
swarm 主要功能分为四大块:
docker swarm:集群管理
docker service:服务创建
docker node:节点管理
docker Task:执行任务
3.Docker Swarm集群部署。
swarm cluster的创建过程包含以下三个步骤:
1)发现Docker 集群中的各个节点,收集节点状态、角色信息,并监视节点状态的变化
2)初始化内部调度(scheduler)模块
3)创建并启动API 监听服务模块