QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

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

关注

评论

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

第五周总结

不在调上

架构师训练营第五周学习总结

CATTY

负载均衡 缓存

架构师训练营 - 第 4 周学习总结

红了哟

疫情防控加速数字化,亚洲普惠金融迎来大发展

CECBC

数字化 普惠金融 合作共赢

一致性哈希

独孤魂

架构师是怎样炼成的 05-1 分布式缓存,异步与集群

闷骚程序员

架构师训练营作业-Week5

wyzwlj

极客大学架构师训练营

分布式时序数据库silverDB-低成本存储

Hervor。

林丹从国家队退役,带起一波回忆

mzlogin

生活,随想

mybatis 缓存 源码分析

编号94530

Java 源码分析 mybatis mybatis缓存

接住喽,送你个装逼技能:JDK动态代理

码农神说

Java jdk 设计模式 动态代理

架构师训练营第五周总结

烟雨濛濛

练习 05-1

闷骚程序员

工业4.0|要不要用 IO-Link ?

清水河路人甲

工业4.0 IO-Link 工控

ARTS打卡Week 06

teoking

ios ARTS 打卡计划

架构师第5周-总结

上山砍柴

极客大学架构师训练营

实现一致性 hash 算法

不在调上

游戏夜读 | 数据分析的及时性

game1night

Java 面试题基础(一)HashMap 底层原理

奈何花开

Java 面试

学习总结 - 第 5 周

饶军

JIT的Profile神器JITWatch

程序那些事

Java JVM JIT JITWatch 签约计划第二季

第五周作业

Geek_5d0795

极客大学架构师训练营

【第五周】命题作业——实现一致性 hash 算法

三尾鱼

极客大学架构师训练营

架构第五周 - 学习总结

J.Smile

极客大学架构师训练营

架构师训练营 - 命题作业 第 5 周

水边

极客大学架构师训练营

架构师训练营第五周作业

张明森

一致性算法实现

罗亮

一致性哈希

架构师第5周-作业

上山砍柴

极客大学架构师训练营

提高计算效率的一种方法--分类

高效 计算效率 少做事情 快排 分类

推荐几个硬核 Java 学习网站

苹果看辽宁体育

Java

第五周-作业1

seng man

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