[关闭]
@huanmu 2016-06-17T15:33:09.000000Z 字数 2372 阅读 327

京东618:应用全面Docker化,弹性云的新型实践


京东对Docker技术研究应用已有时日,去年InfoQ曾采访并撰文《京东618:Docker扛大旗,弹性伸缩成重点》。今年京东继续优化其弹性计算云,所有应用都通过Docker容器技术来完成资源调配,截止目前本次618峰值时云上有二十万实例容器。这种Docker应用程度和规模堪称行业首例。对于京东而言,大促是对容器应用、资源调度、运维和系统优化等方面的巨大考验。InfoQ记者再次探秘京东的Docker应用,采访京东弹性计算项目负责人鲍永成,分享京东容器技术经验。

受访嘉宾介绍

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

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

鲍永成: 从数量上来讲,去年618线上容器应对峰值为9853个实例,今年截止6月17日线上容器突破208220实例;在整体布局上来看,对比去年618,弹性云在规模上和业务全容器化实现战略落地。
在应用层面,京东所有应用100%通过容器技术来发布和管理应用集群。值得指出一点:今年618有9879个容器实例支撑DB集群,对京东云数据库提供非常便利的支持。
弹性云核心架构没有很大变化,依然简洁定义:弹性云=软件定义数据中心+业务容器集群调度。在此基础上,有两点增强:
第一单个容器的稳定性和性能方面做了很大提升,有效满足核心系统对计算和网络的巨大需求;
第二统一管理物理机、虚拟机和容器,加入统一集群进行调度,以适应不同业务对计算资源的不同需求;

picture here 1
picture here 2

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

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

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

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

picture here 3

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

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

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

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

鲍永成:
- 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和网卡中断。这带来近乎物理机网卡的网络性能。

picture here 4

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

鲍永成:
收益:
- 京东弹性计算云通过软件定义数据中心与大规模容器集群调度,实现海量计算资源的统一管理,并满足性能与效率方面的需求。
- 提升业务自助上线效率。
- 应用部署密度大幅提升,资源使用率提升,节约大量的硬件资源。
面临一些规模性挑战: 内核因为bug升级;全部容器化后,底层依赖系统的版本高度一致,很容易带来因为底层bug需要规模性升级,幸运的是我们在内核团队建设这块一直非常重视,已经有内核发布版本、内核热patch等方式,有效解决此类问题。

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

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

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

感谢郭蕾对本文的审校。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注