Swarm容器集群管理(介绍)

Posted skyflask

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swarm容器集群管理(介绍)相关的知识,希望对你有一定的参考价值。

一、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。

 

 

 

 

以上是关于Swarm容器集群管理(介绍)的主要内容,如果未能解决你的问题,请参考以下文章

Docker集群管理工具-Swarm部署记录

Docker Swarm集群的管理和编排

docker + swarm 集群

docker swarm

DockerDocker swarm集群管理(部署集群创建服务监控服务负载均衡滚动更新Portainer可视化)

[云原生专题-18]:容器 - docker自带的集群管理工具swarm - 手工搭建集群服务全过程详细解读