10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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:0012842
用户头像

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

关注

评论

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

并发编程-ReentrantLook底层设计

Java你猿哥

Java ssm 重入锁 lock锁 底层实现原理

新技术越来越多,作为程序员,我们应该怎么规划职业生涯? | 社区征文

wljslmz

三周年征文

盘古云课堂加入 PolarDB 开源数据库社区

阿里云数据库开源

polarDB PolarDB-X PolarDB-PG PolarDB for PostgreSQL 阿里云瑶池数据库

理解并实现自动导入(Auto Import)功能的原理

Lee Chen

JavaScript

体验MMGPT本地部署(上)

IT蜗壳-Tango

三周年连更

AI都会写脚本了,传统的运维工程师会失业吗? | 社区征文

wljslmz

AI 运维工程师 三周年征文

总有AI想害'朕' 失业,我们该何去何从| 社区征文

穿过生命散发芬芳

ChatGPT 三周年征文

用户分享 | Dockquery,一个国产数据库客户端的初体验

BinTools图尔兹

用户体验 国产数据库工具

浅谈如何做好知乎内容营销:需要注意哪些细节

石头IT视角

2023-05-10:给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表 如果在二叉树中,存在一条一直向下的路径 且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,

福大大架构师每日一题

Go 算法 rust 福大大

挑战与机遇,全面预算管理的执行计划

智达方通

在SDN技术盛行的时代,网络工程师需要不断学习新技术跟上时代的步伐 | 社区征文

wljslmz

sdn 三周年征文

IT知识百科:什么是下一代防火墙和IPS?

wljslmz

防火墙 三周年连更 入侵防御系统

硬核Prompt赏析:HuggingGPT告诉你Prompt可以有多“工程”

无人之路

ChatGPT Prompt

专访惠众科技|元宇宙应用如何借助3DCAT实时云渲染实现流畅大并发呈现?

3DCAT实时渲染

元宇宙 实时渲染云

Flink中的时间及窗口类型

阿泽🧸

flink 三周年连更

Java反射详解

timerring

Java

DxO PureRAW轻松获取纯净无瑕疵raw照片~

真大的脸盆

Mac 图像处理 Mac 软件 Raw图像处理软件 图像编辑工具

Python自动化办公神器!1行代码实现文件转PDF,支持Word、Excel、PPT、TXT格式

程序员晚枫

Python PDF

C++模板和泛型编程详解

小万哥

c++ 程序员 面试 后端 开发

sysMaster: 全新1号进程实现方案,秒级自愈,保障系统全天在线

openEuler

Linux rust 操作系统 openEuler init

腾讯云和ScaleFlux联合推出可计算存储与大容量QLC NAND解决方案

ScaleFlux

腾讯云 数据中心 降本增效 企业级SSD SSD寿命

HTTPS 的加密过程及其工作原理

wljslmz

https 三周年连更

云原生应用交付流程安全规范

穿过生命散发芬芳

安全规范 三周年连更

中国网约车领域月度观察2023年04月

易观分析

网约车 出行服务

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