当前位置: 首页 > news >正文

Docker Swarm 介绍 or 工作原理

Docker Swarm 介绍


Swarm 简介

Swarm是Docker公司自研发的容器集群管理系统,Swarm在早期是作为一个独立服务存在,在Docker Engine v1.12中集成了Swarm的集群管理和编排功能。可以通过初始化Swarm或加入现有Swarm来启用Docker引擎的Swarm模式。

  • Docker Engine CLI和API包括了管理Swarm节点命令,比如添加、删除节点,以及在Swarm中部署和编排服务。
  • 也增加了服务栈(Stack)、服务(Service)、任务(Task)概念。

Swarm 两种角色

Manager:接收客户端服务定义,将任务发送到worker节点;维护集群期望状态和集群管理功能及Leader选举。默认情况下manager节点也会运行任务,也可以配置只做管理任务。

Worker:接收并执行从管理节点分配的任务,并报告任务当前状态,以便管理节点维护每个服务期望状态。


Swarm特点

1. Docker Engine集成集群管理

使用Docker Engine CLI 创建一个Docker Engine的Swarm模式,在集群中部署应用程序服务。

2. 去中心化设计

Swarm角色分为Manager和Worker节点,Manager节点故障不影响应用使用。

3. 扩容缩容

可以声明每个服务运行的容器数量,通过添加或删除容器数自动调整期望的状态。

4. 期望状态协调

Swarm Manager节点不断监视集群状态,并调整当前状态与期望状态之间的差异。例如,设置一个服务运行10个副本容器,如果两个副本的服务器节点崩溃,Manager将创建两个新的副本替代崩溃的副本。并将新的副本分配到可用的worker节点。

5. 多主机网络

可以为服务指定overlay网络。当初始化或更新应用程序时,Swarm manager会自动为overlay网络上的容器分配IP地址。

6. 服务发现

Swarm manager节点为集群中的每个服务分配唯一的DNS记录和负载均衡VIP。可以通过Swarm内置的DNS服务器查询集群中每个运行的容器。

7. 负载均衡

实现服务副本负载均衡,提供入口访问。也可以将服务入口暴露给外部负载均衡器再次负载均衡。

8. 安全传输

Swarm中的每个节点使用TLS相互验证和加密,确保安全的其他节点通信。

9. 滚动更新

升级时,逐步将应用服务更新到节点,如果出现问题,可以将任务回滚到先前版本


Docker Swarm 工作原理

Docker Engine client:
          -- 1、docker service create:我们通过docker service create这个命令去创建一个服务。
swarm manager: -- 1、API:这个请求直接由Swarm manager的API进行接收,接收命令并创建服务对象。 -- 2、orchestrator:为服务创建一个任务。 -- 3、allocater:为这个任务分配IP地址。 -- 4、dispatcher:将任务分配到指定的节点。 -- 5、scheduler:再该节点中下发指定命令。
worker node:接收manager任务后去运行这个任务。 -- 1、container:创建相应的容器。 -- 2、worker:连接到调度程序以检查分配的任务 -- 3、executor:执行分配给工作节点的任务
Service:为一个副本,可以理解为是一个任务,一个任务是一个容器。
swarm manager:它将这个副本下发到三个可用的work节点。
container:实际的docker容器去运行应用。
task:work任务的名称为service名称后面跟.1根据个数以此类推。

转载于:https://www.cnblogs.com/xiangsikai/p/9935253.html

相关文章:

  • go学习笔记-错误处理
  • python中各种数据类型
  • Going Deeper with Convolutions阅读摘要
  • layui的table的使用 三
  • js this
  • $NOIp2018$劝退记
  • 汇编语言实验一
  • 深入理解java虚拟机(六)字节码指令简介
  • 蛇形矩阵
  • oracle查看执行最慢与查询次数最多的sql语句
  • js轮播
  • 指针函数与函数指针的区别
  • IntelliJ IDEA 配置JDK
  • Jmeter (八) 脚本增强_事物
  • 为django项目配置celery的后台启动
  • 《Java编程思想》读书笔记-对象导论
  • 0x05 Python数据分析,Anaconda八斩刀
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Cumulo 的 ClojureScript 模块已经成型
  • GraphQL学习过程应该是这样的
  • Java多态
  • magento2项目上线注意事项
  • PHP那些事儿
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 从PHP迁移至Golang - 基础篇
  • 搞机器学习要哪些技能
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 计算机在识别图像时“看到”了什么?
  • 如何选择开源的机器学习框架?
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 详解NodeJs流之一
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​卜东波研究员:高观点下的少儿计算思维
  • # 数论-逆元
  • ###STL(标准模板库)
  • #{} 和 ${}区别
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (1)STL算法之遍历容器
  • (9)STL算法之逆转旋转
  • (AngularJS)Angular 控制器之间通信初探
  • (C#)一个最简单的链表类
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (二)PySpark3:SparkSQL编程
  • (分布式缓存)Redis哨兵
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (三)终结任务
  • (一)基于IDEA的JAVA基础1
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • 、写入Shellcode到注册表上线
  • .NET CLR基本术语
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别