写点什么

Docker Swarm 已死!Docker Swarm 万岁!

  • 2016-07-10
  • 本文字数:1788 字

    阅读完需:约 6 分钟

Docker 在上周的 DockerCon 技术大会上发布了 1.12 版核心产品 Docker Engine,最大的新特性是 Docker Swarm 已经被整合到了 Docker Engine 里面而不再是一个单独的工具了,这样就可以更容易的把多个 Docker 主机组合成一整个规模更大可靠性更高的逻辑单元。Docker 的掌舵者 Adrian Mouat 相信这种新的集群模式可以大大增强Docker 在相关领域的竞争力。

把Docker Swarm 整合进Docker Engine 是一个重大改进,但它也只是一个附加功能,你可以只在需要的时候才使用它。你可以用和以前一样的方式来安装、运行和升级Docker 1.12,而且它也对已有的容器镜像和工具向后兼容。

在一台主机上运行Docker 和在使用Docker Compose 来部署应用程序方法都是和以前一样的。你甚至可以在已有的Docker Swarm 上使用1.12 版Docker Engine。除非你是显式地使用新引擎来创建一个集群,否则运行时行为仍然和以前版本一样。

旧的Docker Swarm 产品是以套件形式提供的,本身没有什么核心功能。Docker Swarm 进程在各个节点上做为容器运行,而且还需要许多其他技术来辅助它,比如用Consul 或etcd 来做服务发现,用Nginx 做负载均衡等。集群实际上要先运行一堆基础设施容器,然后才能运行你自己的应用程序容器。

搭建起一个旧的集群也并非易事,因为在你创建集群之前服务发现组件就要就位,可是之后你又想让它作为集群的一个部分来运行,所以你什么事情都没开始干就要先解决一个“先有鸡还是先有蛋”的问题。Jacob Blain Christen 在他的文章“ Toward a Production-Ready Docker Swarm Cluster with Consul ”里面很好的解释了这个问题。

在新的集群模式下用一个’init’命令即可创建集群,用’join’命令可以把工作者加入集群。创建和加入集群的命令一般一两秒钟就可以执行完毕。Mouat 说“与把 Kubernetes 或 Mesos 集群启动起来相比,启动 Docker 集群就是一闪的事”。

节点之间的通信安全由传输层安全协议(TLS)来保证。为了安装简便,Docker 1.12 会在创建集群时生成自签名证书,当然也可以换成你从自己的证书颁发机构获得的证书。这些证书在节点内部通信时会被用到,但所有对外的服务仍然是和以前一样使用你原来的证书。

Nigel Poulton 在 DockerCon 大会上分享了旧版和 1.12 版启动集群的对比图:

Docker 建议在一个 L3 子网内运行所有集群节点,但根据你自己的实际情况,也可以把节点划分到不同的子网里,把运行对外服务容器的节点和内部节点隔离开来。

这种隔离方法也许你已经在独立的生产集群上使用过了。我在贴子“在Azure 上部署Docker 生产集群”中已经结合微软的云服务写了文档。

集群的自我认知能力是最重大的改变。集群中的每个节点都可以连接其他任何一个节点,并且可以把请求路由到它需要去的地方。你再也不必自己运行负载均衡器并把它与动态服务发现代理结合起来了,对这点以前的方式通常是Nginx 加Interlock。

如果一个节点收到了一条处理不了的请求,它就会找到运行了可以处理这条请求的容器的节点,并把这条请求路由过去。这个过程对用户是透明的,他们最终只能收到一条响应消息,完全不知道在集群内部是否发生过消息转发。

这个Docker 叫作“路由网”的功能支持外部负载均衡。你可以在集群前面放一个对外的负载均衡器,并把它配置成所有服务的唯一入口,它就会把流入的消息在集群内部随意分发,然后收到了消息的节点就会智能的把它处理不了的消息转发到合适的地方去。Docker 核心工程组解释路由网用到了Linux 的核心功能,即一个已经在Linux 内核中存在了至少15 年的负载均衡功能。

路由网和调度器的组合可以保证即使有节点发生故障也不会造成服务中断。负载均衡器不会把任何请求发送到出故障的节点上。如果因为故障导致服务所需要的最小副本数达不到要求,调度器就会自动在别的节点上运行起新的副本来。

Docker Swarm 仍然是原生的 Docker 集群的名字,但在 1.12 版的集群模式下它也是 Docker Egnine 的一个组成部分,不再是一个单独的产品了。你可以获得服务发现服务,可以给集群配置多个管理者来增强可靠性,以及配置满足你需要的足够数量的工作者。

在这个版本里,Docker Engine 脱离了其他 Docker 产品跑到前面了。现在还不能用 Docker Machine 来部署一个新式的集群,也不能用 Docker Compose 来部署服务。但 Docker 社区总是动作很快,所以期待它们也很快被整合进来吧。

查看英文原文 Docker Swarm Is Dead. Long Live Docker Swarm.

2016-07-10 19:0012519
用户头像

发布了 152 篇内容, 共 72.7 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

文心一言 VS 讯飞星火 VS chatgpt (163)-- 算法导论13.1 3题

福大大架构师每日一题

福大大架构师每日一题

Seaborn 数据可视化全攻略:从基础到高级实战

申公豹

Python

移动UI交互设计与动效制作

坚果

设计 UI 坚果派

WorkPlus Meet实现企业局域网视频会议的领先解决方案

BeeWorks

WorkPlus十年铸剑,成就千万级用户信赖与认可

BeeWorks

利用开源框架BMF实现高效视频处理

Geek-yan

鸿蒙 API 9工程转换为API 10工程

坚果

HarmonyOS OpenHarmony

掌握进阶:高级功能、图表定制与地理数据绘制

申公豹

Python

cmake | AI工程化部署

AIWeker

c AI AI工程化部署

WorkPlus一站式协同解决方案,助力企业降本增效

BeeWorks

深入学习Python与Vscode环境的安装与配置

申公豹

Python

Python从基础到进阶字符串验证

申公豹

Python

Python文件操作指南:读写、异常处理与上下文管理器详解

申公豹

Python

Python图像处理:批量添加水印的优雅实现与进阶技巧

申公豹

Python

手把手教你Python圣诞主题绘图

申公豹

Python

项目分享:AIGC技术在智能教学生成中的应用

YoLo

AI

简洁灵活:Python中基于字段的不使用元类的ORM实现

申公豹

Python

多表格文件单元格平均值计算实例解析

申公豹

Python

基于Vue.js和Spring Boot的口罩自助售卖系统:设计、实现与技术深度解析

申公豹

开发

E3PO: 探索360°视频流传输的未来

不会算法。

WorkPlus企业即时通讯系统的领先者,提升沟通效率的利器

BeeWorks

WorkPlus打造企业即时通讯平台,助力高效沟通与协作

BeeWorks

记一次本地环境启动不了Mysql的故障

DoHornBurg

Java MySQL hyper-v

WorkPlus超级APP助力企业节省IT人力成本,实现快速移动化

BeeWorks

HarmonyOS的功能及场景应用

芯动大师

个人技术成长方面的心得体会:边缘计算之旅

农夫三拳

在Python中实现条形图动态追赶动画效果

申公豹

Python

构建高效、安全的在线考试系统:基于Spring Boot和Vue的前后端分离之道

申公豹

嵌入式系统中的低功耗定时器应用与优化实战

申公豹

嵌入式

用纯 Python 打造的轻量级 Excel 到 Markdown 转换工具

申公豹

Python

基于STM32的物联网节点设计与实现-传感器数据采集与无线通信

申公豹

嵌入式

Docker Swarm已死!Docker Swarm万岁!_DevOps & 平台工程_Elton Stoneman_InfoQ精选文章