一、Swarm介绍
Swarm是Docker公司自研发的容器集群管理系统, Swarm在早期是作为一个独立服务存在, 在Docker Engine v1.12中集成了Swarm的集群管理和编排功能。可以通过初始化Swarm或加入现有Swarm来启用Docker引擎的Swarm模式。
Docker Engine CLI和API包括了管理Swarm节点命令,比如添加、删除节点,以及在Swarm中部署和编排服务。也增加了服务栈(Stack)、服务(Service)、任务(Task)概念。
二、Swarm特点:
参考链接(https://docs.docker.com/engine/swarm/)
1. Docker Engine集成集群管理
使用Docker Engine CLI 创建一个Docker Engine的Swarm模式,在集群中部署应用程序服务。
2. 去中心化设计
Swarm角色分为Manager和Worker节点, Manager节点故障不影响应用使用。
3. 扩容缩容
可以声明每个服务运行的容器数量,通过添加或删除容器数自动调整期望的状态。
4. 期望状态协调
Swarm Manager节点不断监视集群状态,并调整当前状态与期望状态之间的差异。
5. 多主机网络
可以为服务指定overlay网络。当初始化或更新应用程序时, Swarm manager会自动为overlay网络上的容器分配IP地址。
6. 服务发现
Swarm manager节点为集群中的每个服务分配唯一的DNS记录和负载均衡VIP。可以通过Swarm内置的DNS服务器查询集群中每个运行的容器。
7. 负载均衡
实现服务副本负载均衡,提供入口访问。
8. 安全传输
Swarm中的每个节点使用TLS相互验证和加密, 确保安全的其他节点通信。
9. 滚动更新
升级时,逐步将应用服务更新到节点,如果出现问题,可以将任务回滚到先前版本。
三、swarm关键概念
1、什么是swarm?
集群管理和任务编排功能已经集成到了Docker引擎中,通过使用swarmkit。swarmkit是一个独立的,专门用于Docker容器编排的项目,可以直接在Docker上使用。
Swarm集群是由多个运行swarm模式的Docker主机组成,关键的是,Docker默认集成了swarm mode。swarm集群中有manager(管理成员关系和选举)、worker(运行swarm service)。
一个Docker主机可以是manager,也可以是worker角色,当然,也可以既是manager,同时也是worker。
当你创建一个service时,你定义了它的理想状态(副本数、网络、存储资源、对外暴露的端口等)。Docker会维持它的状态,例如,如果一个worker node不可用了,Docker会调度不可用node的task到其他nodes上。
运行在容器中的一个task,是swarm service的一部分,且通过swarm manager进行管理和调度,和独立的容器是截然不同的。
2、nodes
3、services和tasks
4、负载均衡
四、Swarm架构图
Swarm manager:
1、API:接受命令,创建一个service(API输入)
2、orchestrator:service对象创建的task进行编排工作(编排)
3、allocater:为各个task分配IP地址(分配IP)
4、dispatcher:将task分发到nodes(分发任务)
5、scheduler:安排一个worker运行task(运行任务)
worker node
1、连接到分发器接受指定的task
2、将task指派到对应的worker节点
例子:
swarm manager创建一个3个nginx副本集的service,他会将task分配到对应的node。
原文地址:https://www.cnblogs.com/skyflask/p/11212452.html