把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

京东 618:15 万个 Docker 实例,所有业务全部容器化

  • 2016-06-17
  • 本文字数:2323 字

    阅读完需:约 8 分钟

在 2015 年的 618 大促中,京东大胆启用了基于Docker 的容器技术来承载大促的关键业务(图片展现、单品页、团购页),当时基于Docker 容器的弹性云项目已经有近万个Docker 容器在线上环境运行,并且经受住了大流量的考验。而今年618,弹性云项目更是担当重任,全部应用系统和大部分的DB 服务都跑在Docker 上。像618 大促这样的流量高峰期,弹性云可以自动管理资源,做到弹性扩展,而在流量低谷期,又可以进行资源回收,在提升资源利用率的同时确保了运维系统的稳定性。据官方估计,本次大促活动中,京东线上将会启动近15 万个Docker 容器,从数量上来看,京东是全球范围内Docker 的应用大户之一。

为了了解相关的详情,InfoQ 记者采访了弹性云项目负责人鲍永成。此外,鲍永成将会在InfoQ 主办的 CNUTCon 全球容器技术大会上分享本次 618 大促的具体技术细节,欢迎关注。

受访嘉宾介绍

鲍永成,京东弹性计算组项目负责人,带领弹性计算团队,深耕 IaaS 领域,致力于打造京东强大的虚拟化平台。2013 年初加入京东,重点在京东弹性云平台系统研发,运营多个中大规模 IaaS 集群,包括(京东弹性云、公有云、混合云等产品),在 OpenStack 研发 & 性能优化、自动化部署、KVM、Docker、分布式系统等方面有一定的实践经验。

InfoQ:去年 618 的时候,我们就有聊过京东 Docker 的应用情况。您能对比去年 618,介绍下今年的规模、应用以及调整吗?

鲍永成:从数量上来讲,去年 618 线上容器应对峰值为 9 千个实例,今年截止 6 月 17 日线上容器突破 15 万实例;在整体布局上来看,对比去年 618,弹性云在规模上和业务全容器化实现战略落地。
在应用层面,京东所有应用 100% 通过容器技术来发布和管理应用集群。值得指出一点:今年 618 有 5600 个容器实例支撑 DB 集群,对京东云数据库提供非常便利的支持。
弹性云核心架构没有很大变化,依然简洁定义:弹性云 = 软件定义数据中心 + 业务容器集群调度。在此基础上,有两点增强:

  • 单个容器的稳定性和性能方面做了很大提升,有效满足核心系统对计算和网络的巨大需求;
  • 统一管理物理机、虚拟机和容器,加入统一集群进行调度,以适应不同业务对计算资源的不同需求;

InfoQ:您能介绍下有哪些业务全量跑在 Docker 上吗?为了迎接这样的挑战,架构做了哪些调整?

鲍永成网站、交易、无线、微信手 Q 等全部应用系统和 DB 服务的大部分都跑在 Docker 上。
因为京东业务在多年前就开始微服务化治理,所以应用层架构调整很小。现如今微服务化比例已经很大,所以容器技术的融入比较顺利。弹性云平台,算是站在多年对各个业务系统微服务化治理的巨人肩膀上。

InfoQ:这么多容器,如何做到海量监控?采用了什么开源方案吗?有哪些注意的事项?

鲍永成监控采取自主研发系统,该系统负责海量数据采集和存储工作,其构架如图。

对于 15W+ 容器监控,需要注意:指标采集传输一定要设计得非常高效,并且要做到采集过程对资源的消耗控制,建议使用加速告警和监控图表跟踪缓存状况。

InfoQ:在洪峰来临之时,弹性计算云平台是如何进行扩容的?可以从系统角度分享下其中的流程吗?

鲍永成弹性云有两种模式:

  • 自动模式会根据每个业务方自己的预设弹性扩展条件,自动触发扩容。扩容工作包括使用业务镜像 spawn 实例、自动 DB 授权、微服务框架注册、添加实例到 LB 负载。
  • 手动模式的前提是有弹性事件被触发,垂直运维收到扩展确认消息,人工参与的只是这个消息的点击确认扩容环节,其后续流程与自动模式一致。

InfoQ:可以谈谈目前应用了哪些关键开源项目吗?各自在系统的哪些 level?对应的版本分别是什么?

鲍永成主要是 OpenStack 和 Docker,具体如下:

  • OpenStack-IceHouse 用于管理数据中心计算、网络、存储等资源,位于 JD Data Center Operating System 层。
  • Docker-1.3 用于 spawn 容器实例,加入很多自主研发的内容和功能。

InfoQ:这么多的容器,您觉得最大的挑战是什么?

鲍永成**:1. 集群规模介于高效运维,弹性云集群走的是大集群架构的思路。单个 OpenStack 集群会建设得非常大,目前单集群规模控制在 6 千台计算节点左右。
管理 6K 台计算节点集群,仅仅使用原生 OpenStack 是很困难的,因此我们对 OpenStack 依赖的数据库、MQ 等全部重新设计实现,设计经过测试可以支撑 1W 台计算节点。
2. 单实例性能调优
:** 很多核心的业务对单个请求的响应时间有极其严格要求,这势必要求弹性云提供的每一个容器实例均要具有极好的性能,我们从 CPU 和网络两方面入手。
针对 CPU,我们采取 Scale-up 算法灵活调配 CPU 分配,使繁忙业务可以及时获得足够多 CPU 资源。
在网络这块,主攻方向为如何把万兆卡的性能发挥出来。我们对 OVS(Open vSwitch)做了一些改进:减少了一些锁,优化 peer port 和网卡中断。这带来近乎物理机网卡的网络性能。

InfoQ:这么大规模的 Docker 应用,在国内外都是屈指可数的。在整个容器化的进程,你们得到了什么,失去了什么?

鲍永成京东弹性计算云通过软件定义数据中心与大规模容器集群调度,实现海量计算资源的统一管理,并满足性能与效率方面的需求。
提升业务自助上线效率。应用部署密度大幅提升,资源使用率提升,节约大量的硬件资源。

而面临的调整也很多,比如内核因为 bug 升级。全部容器化后,底层依赖系统的版本高度一致,很容易带来因为底层 bug 需要规模性升级,幸运的是我们在内核团队建设这块一直非常重视,已经有内核发布版本、内核热 patch 等方式,有效解决此类问题。

InfoQ:在 CNUTCon 2016 全球容器技术大会上,你会重点分享哪些内容?

鲍永成重点分享软件定义数据中心、大规模容器集群调度以及 Docker 容器性能调优。

InfoQ:感谢鲍永成老师接受我们的采访。期待您在 CNUTCon 2016 全球容器技术大会上的分享。

感谢郭蕾对本文的审校。

2016-06-17 19:0024066

评论

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

学计算机你后悔了吗?

陈辰

学习 技术 大前端

实用贴丨正确的「递归」打开方式:让计算机像计算机一样去计算

博文视点Broadview

Python 递归

Elasticsearch 实战

代码诗人

Zabbix实战指南

橙子冰

技术 运维 监控 运维自动化 zabbix

工厂模式 (一)简单的工厂模式概念以及示例代码

LSJ

Flutter的staggered GridView详细使用

潘珉

flutter

翻译敏捷行业专业外文,不只是谷歌翻译

Uncle Leo

翻译 Scrum 敏捷开发 Agile

游戏夜读 | 如何避免乏味?两则

game1night

python实现·十大排序算法之希尔排序(Shell Sort)

南风以南

Python 排序算法 希尔排序

内容比形式更重要

Winann

内容 生活 工作 形式主义

Kubectl exec 的工作原理解读

硅基新手村

Kubernetes kubelet

[GitHub] 跟我一起白嫖 GitHub Pages 做个人站点 ?

猴哥一一 cium

git GitHub GitHub Pages

软件开发生产率改进之我见(一)

清水

团队管理 软件工程 技术管理

孩子,我们在睡前一起来阅读 15 分钟的好书,让彼此都带着好的故事入眠。

叶小鍵

正确阅读 托马斯·奥本 Doug Antin 蒂·泰德罗克

一文带你彻底厘清 Kubernetes 中的证书工作机制

首富手记

Kubernetes

有点干货 | Jdk1.8新特性实战篇(41个案例)

小傅哥

函数式接口 Lambda 小傅哥 jdk8 编码

数仓系列 | Flink 窗口的应用与实现

Apache Flink

大数据 flink 流计算 实时计算

给学妹的 Java 学习路线

武培轩

Java 学习 程序员 程序媛

2020年2月北京BGP机房网络质量评测报告

博睿数据

APM 机房 评测 世纪互联

五个“为什么” —— 读《精益创业》

YoungZY

读书笔记

Lean UX 教你设计如何驱动产品

Yanel 说敏捷产品

产品 敏捷 设计

[Git] Git 可以这么学

猴哥一一 cium

git

关于问题的问题 —— 读《你的灯亮着吗?》

YoungZY

读书笔记 读书

基于mysqldump聊一聊MySQL的备份和恢复

麦洛

MySQL

面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他

苹果看辽宁体育

mybatis

ARTS - Week One

shepherd

js algorithm

「开放」对协作效率的影响

Tony Wu

产品 产品设计

Golang热更新原理

我心依然

nginx Linux 信号 Go 语言

李想解读《高效能人士的七个习惯》

我心依然

习惯 高效能人士的七个习惯 李想 汽车之家

有价值的产品=设计思维+精益创业+敏捷方法

Uncle Leo

Scrum 敏捷开发 Agile 设计思维 精益创业

2020年2月北京BGP机房网络质量评测报告

博睿数据

京东618:15万个Docker实例,所有业务全部容器化_DevOps & 平台工程_穆寰_InfoQ精选文章