为什么我们要开源自己研发的高性能容器编排系统 Eru2

简介: 本文讲的是为什么我们要开源自己研发的高性能容器编排系统 Eru2【编者的话】原则上来说 Eru 只是将 Docker 作为容器最小单元引擎,并不做过强的耦合和依赖。通过架构层面上的设计和优化,使得 Eru 可以支持上千甚至上万台物理机器集群,满足小型到大型公司平台层面的调度编排需求。
本文讲的是为什么我们要开源自己研发的高性能容器编排系统 Eru2【编者的话】原则上来说 Eru 只是将 Docker 作为容器最小单元引擎,并不做过强的耦合和依赖。通过架构层面上的设计和优化,使得 Eru 可以支持上千甚至上万台物理机器集群,满足小型到大型公司平台层面的调度编排需求。

【烧脑式Kubernetes实战训练营】本次培训理论结合实践,主要包括:Kubernetes架构和资源调度原理、Kubernetes DNS与服务发现、基于Kubernetes和Jenkins的持续部署方案 、Kubernetes网络部署实践、监控、日志、Kubernetes与云原生应用、在CentOS中部署Kubernetes集群、Kubernetes中的容器设计模式、开发Kubernetes原生应用步骤介绍等。

作为自己 30 岁之前的一个「小目标」,白天我提交完最后一个大特质修正后, Eru2  的开源计划就走入了倒计时阶段。2007-2017 眨眼 10 年。启蒙于  hongqn  的豆瓣后端体系介绍而步入了系统工程师的深坑,受教于金山快盘的工程化实践,又有幸与启蒙自己的豆瓣平台组共事两年一起做 Douban App Engine,在 (*)aaS 的道路上越走越远。14年洲际旅行回国,从芒果TV 到 ENJOY ,从最初的 DAE Copy on  Docker  到理论上国内首批大规模使用  Redis Cluster  并提供了  Cerberus  和 容器化解决方案 ,这后面驱动的都是我一直想做的大一统平台。

幸运的是,有 Docker,DAE 当年隔离的问题再也不是问题 。不幸的是,有 Docker,容器的不稳定在大集群下面对管理提出了更高的要求。Docker 就像一把双刃剑,关键是你怎么去用它。 Borg  提供了一个视角,而它的亲儿子  Kubernetes  以压倒性的优势成为了平台层面的事实标准。在它的身后,角落里 Docker 的亲儿子  Swarm 还在负隅顽抗,而它的身边,是一个叫  Mesos  的尸体。

那么问题来了,为什么我们要做这个东西呢?

让我们把眼光放回 2014 年,就以当时的业界视角来看,其实你是没多少选择的。当年的 Kubernetes 江湖传闻就一个人全职开发,除了 Google 爹的光环以外复杂的概念和尚不稳定的特性,没有全知全能的视野当时的你会知道终有一天它终将为王?甚至 Mesos 上的  Marathon  在先发优势上都能把 Kubernetes 按在地上摩擦,但一想到以 Apache 之名下 Mesos 那「笨重」的结构你会轻易去尝试?至于 Docker 的亲儿子,它的爹还在忙于 1.0 的 stable,它的妈还不知道是在世界的哪个角落,所以造轮子并非一个不可理解的选择。我们再把时间拨到2015年,半个前豆瓣平台组还能有机会在宜信大数据给我们带来基于特定工程的最优解  Lain 。即便到了 2017 年,从我的个人角度来看,虽然 Kubernetes 几乎一统江湖,但自建平台也还是有一定土壤的。

如 Kubernetes 吧,Google 二儿子,Borg 血统最为纯净的继承者,万千资源于一身的编排调度平台集大成者,早期用户也不得不面对其架构复杂部署困难的问题。对于小公司而言,上 Kubernetes 带来的成本远高于其带来 DevOps 效率提升而降低的成本。对于中大型公司而言,Kubernetes 本身相对而言的排他性对于已有基础设施重建以及业务适配又是一个需要额外成本的地方。至于超大公司以他们的人力物力财力,就我某几位不愿意透露姓名的P8/P9基友所言,早就脱离社区自己玩自己的去了,毕竟业务才是来钱的大爷。你不能说它不行,乐观锁的分配能力完全能满足一家豆瓣类似规模的中大型公司,Pod Service 的概念抽象使得所谓的微服务化变得前所未有的简单直观。但一个东西不能说它好就要去上对吧,自己的业务模式 Workflow 要不要改造,如何改造,对于 Kubernetes 本身的运维经验有没有积累,现有的基础设施怎么办,这都是需要考虑的问题。况且线上用了 Kubernetes 了,离线任务要不要用,怎么用,如何和 Apache 全家桶搅一起,都要摸索。

其他的几种选择来说,Lain 对于特定工程来说是最优解,没有比一个能自举的平台更加迷人了。然而就我对他们的了解,如果你的团队没有豆瓣那种我要打10个的素质,学习成本还是蛮高的,需要严格的遵从 Workflow 和开发范式,需要有相当高的 DevOps 能力。已经死掉的 Mesos 系而言,光是 Apache 之名就足以吓跑很多人,已经到 2017 的今天,Hadoop 的部署使用还能出书出课程收费教人,让人不得不对其同门 Mesos 的易用性打上一个问号。况且就以资源分配来说,悲观锁资源邀约的设计在大集群下的性能还是比较堪忧的,就不说这也是一套强侵入式的架构。至于 Docker 亲儿子,在 Engine 尚未表现出足以服众的稳定性前提下,把编排直接结合进其中作为一个 Mode,作为一个平台特性的东西来讲,这是大忌。同样的,Swarm 除了原生这一个「吸引人」的地方以外,无论是资源分配,Workflow 的集成和服务抽象均不如 Kubernetes。

还有一个就是,就以上几个平台而言,离线服务均都没考虑在内。当然 Mesos 会好些,但需要额外的框架支持,这种二元结构是它的优势也是它的劣势。如 Yarn 的离线计算如何结合容器平台,如怎样结合各类不同的 Fault tolerant job scheduler,这都需要使用者自行摸索。

那么我们又做了什么?

Eru2 本质上不是一揽子解决方案,结合在芒果TV 时期的经验,我们并不想做成特定工程类的最优解,而是一个尽可能减少对现有基础设施侵入的基础组件,因为这不是一个技术问题,这是政治问题。它的设计目标有:
  • 高效而精确并且多维度的资源分配和实时再分配
  • 尽可能的复用现有基础设施,尽可能减少对现有基础设施的排他性和侵入性
  • 不提供全家桶
  • 满足离线需求,提供接口满足离线计算,做大一统平台
  • 无论多大规模,尽可能的易维护
  • 对业务而言改动小,易接入
  • 使用者心智负担低

在芒果 TV 的时候,我们全自动化无人管理过上千容器的单一 Redis 集群,而这种集群还有另外几个。在 ENJOY 的时候整个公司的看得到的看不到的甚至开发机都由我们驱动。不能说我们做得多好吧,毕竟这几年在互联网荒漠的长沙全职在做的除我和不愿意透露姓名的 tonicbupt 以外只有在 ENJOY 期间的 timfeirg,dante 和 wrfly 了。再能1个打10个,多少资源干多少活,我们只是想给这个浮躁的技术圈增加那么一点新的可能性。

原文链接:https://zhuanlan.zhihu.com/p/28961390

原文发布时间为:2017-09-08

本文作者:尼古拉斯

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:为什么我们要开源自己研发的高性能容器编排系统 Eru2

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
10月前
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
937 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
10月前
|
NoSQL Redis Docker
使用Docker Compose工具进行容器编排的教程
以上就是使用Docker Compose进行容器编排的基础操作。这能帮你更有效地在本地或者在服务器上部署和管理多容器应用。
763 11
|
监控 关系型数据库 MySQL
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
1030 30
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
730 78
|
存储 运维 Kubernetes
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
飞轮科技推出了 Doris 的 Kubernetes Operator 开源项目(简称:Doris Operator),并捐赠给 Apache 基金会。该工具集成了原生 Kubernetes 资源的复杂管理能力,并融合了 Doris 组件间的分布式协同、用户集群形态的按需定制等经验,为用户提供了一个更简洁、高效、易用的容器化部署方案。
891 16
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
901 24
|
消息中间件 人工智能 Kubernetes
解密开源Serverless容器框架:事件驱动篇
Knative是一款基于Kubernetes的开源Serverless框架,提供了云原生、跨平台的Serverless编排标准。作为Serverless中必不可少的事件驱动能力,Knative Eventing提供了云原生的事件驱动能力。
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
849 6
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
2252 10
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
534 4

相关产品

  • 容器服务Kubernetes版