写点什么

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

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

关注

评论

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

解读GaussDB(for MySQL)表级恢复,看线程数及分块分行策略如何提升恢复性能?

华为云开发者联盟

企业号 8 月 PK 榜 企业号2024年8月PK榜

云监控的发展历程与未来展望

天翼云开发者社区

云计算 云服务 云监控

推荐一款Python开源移动应用安全测试分析工具!!!

不在线第一只蜗牛

Python 开源

【KDD2024】大数据基础工程技术集群异常检测论文入选

阿里云大数据AI技术

数据挖掘 大数据 阿里云 异常检测算法

重磅奖项:时序数据库 IoTDB 荣获中国创新创业大赛北京赛区新一代信息技术决赛三等奖

Apache IoTDB

如何处理 MySQL 主从延迟?

江南一点雨

Java MySQL

首次搭载于量产车型,蔚来汽车 × KubeEdge 创新构建车云协同平台

华为云原生团队

云计算 容器 云原生 KubeCON

配置计算节点之间的SSH

天翼云开发者社区

SSH

时尚行业增长利器 智能追单系统助力品牌利润飙升30%!

第七在线

基于空域时空图卷积的步态情绪识别方法

天翼云开发者社区

云计算 云服务 卷积

解锁跨境购物新体验:淘宝代购集运系统——跨越语言与物流的桥梁

代码忍者

代购系统

金融涉诈账户压降行动的实施成效与挑战

芯盾时代

金融 反欺诈 账户安全

天谋科技项目时序数据库 IoTDB 荣获 HICOOL 2024 全球创业大赛决赛二等奖!

Apache IoTDB

破解IPv4困境 迎接IPv6新纪元 国家为何力推IPv6?

郑州埃文科技

ipv6 IP地址

谈后端人眼里的nvm、yarn、pnpm……

北桥苏

taro npm YARN NVM pnpm

2024“驿站杯”中国摩托车越野锦标赛(十八驿站)完美收官

极客天地

应用如何快速实现云原生化?华为云DTSE解读关键策略

华为云开发者联盟

企业号 8 月 PK 榜 企业号2024年8月PK榜

华为云低代码AstroZero技巧教学2:轮播组件的魅力 玩转视觉营销

低代码 华为云 网站设计

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