2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

分享一个务实派CEO的理念和实践

boshi

经验分享 七日更 28天写作

第五周作业

z

第5周作业

KYoKO

第四章_第一次作业_用例

Weiyung

产品经理训练营——Week 04

柚子君~

产品经理训练营

第五周作业

正午看星星

从“天地一体”到“移动组网”,中国量子通信产业是如何“炼成”的?

脑极体

小谈 Java 单元测试

xcbeyond

Java 单元测试 28天写作

第四章作业

正午看星星

靠速度说话!你还不够了解的“新基建闪电侠”

白洞计划

产品经理训练营第四章作业(二)

新盛

抽奖助手小程序 发起抽奖流程图

Shine

产品

抽奖助手--抽奖用例流程图

小蜜蜂

首获阿里offer主动分享面经:Java面试清单+程序员复习笔记(2021春招必看)

比伯

Java 编程 程序员 架构 面试

c语言学习笔记

白白

C语言

(28DW-S8-Day11) 小数据与在线教育

mtfelix

28天写作 小数据 因材施教 用户分析

关于数码产品

ES_her0

28天写作 3月日更

关于微服务的一点理解

风翱

微服务 开发

作业

云随心

产品训练营作业

花了一个月,整理了这份2021金三银四Java面试/学习指南,1500+题全面解析

Java 架构 面试

翻译:《实用的Python编程》03_03_Error_checking

codists

Python

产品经理训练营第四章作业(二)

猫。

产品经理训练营——Week 05

柚子君~

产品经理训练营

第四章 _ 第二次作业 _ 流程图

Weiyung

产品经理 - 第四章作业

Geek_971380

时间管理这件事儿「Day 11」

道伟

28天写作

【笔记】第四章-第三讲 业务流程与产品文档

Geek_娴子

闲鱼UI快速变形利器--擎天柱

闲鱼技术

第5次作业

Geek_娴子

极客时间购买课程的流程图

踏凌霄

「产品经理训练营」作业 05

🌟

产品 产品经理 产品经理训练营 产品训练营 产品训练营作业

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