张晓龙:网易云背后的基础设施架构实践

 

云基础服务的演进趋势是要能真正促进业务研发的变革,而 IaaS的优化核心也是要满足这样的需求。...





2016年,网易杭州研究院成立十周年之际,我们推出“十年·杭研大咖说”系列访谈文章,针对亲历杭研核心技术体系变迁的数位技术大牛发问,揭秘网易云背后的技术脉络、研发思想和技术人成长的故事。本文转载的是对网易云基础设施技术总监张晓龙的访谈纪要。

作为网易云基础设施技术总监,张晓龙主导了网易私有云和网易云基础设施服务的研发工作,在云计算基础设施、分布式系统、服务端方面有多年的研发实践经验。

在本次访谈中,张晓龙分享了网易云基础设施的构建思路、技术选型和技术优化的经验。他认为,云基础服务(含 IaaS、PaaS、CaaS)是云计算的核心服务,更是云上业务发展的基石。云基础服务的演进趋势是要能真正促进业务研发的变革,而 IaaS的优化核心也是要满足这样的需求。

网易云基础设施技术总监 张晓龙
容器编排服务最艰难
Q:杭研十年来从支持网易的业务发展到开放公有云服务,背后有技术团队的很多工作,请问您是在什么样的情况下加入杭研的?参与过哪些系统的研发,目前主要负责哪些技术、产品线?

张晓龙:我是在浙江大学博士毕业之后直接加入杭研的。先后参加了网易私有云云主机、云网络、云硬盘、网易云基础服务(蜂巢)容器及容器编排的设计与开发。目前我主要负责网易云基础设施服务技术研发和团队管理,除了 IaaS、容器及其编排,还包括负载均衡、缓存、应用性能监控(APM)以及一些基础服务的横向业务系统如计费、权限等。

我刚加入时,杭研已经研发了成熟的分布式存储、分布式数据库系统,但这些公共技术还是烟囱式的,即各个业务都需要独立部署一套服务并独立运维,没有形成一个标准化的平台服务。杭研希望将公共支撑服务整合成为一个私有云平台,以云的方式提供标准化服务,更高效地服务于产品研发,IaaS平台就是私有云首先要解决的问题,我刚好赶上了这个时候。之后,我们又在 IaaS、PaaS的基础上引入容器技术,就演进到了网易云基础服务(蜂巢)平台。

Q:在您参与的研发工作中,您认为最值得兴奋的进展,以及最艰难的突破分别是哪一方面?

张晓龙:在我的印象中,最值得兴奋的进展是研发私有云平台的上线。2012年上半年,我们开始研发私有云 IaaS平台,经过紧张密集的研发,到下半年 11月份我们上线了私有云第一个版本。之后,我们不断引入新技术完善功能,提升平台稳定性,最终实现网易公司 95%以上的互联网产品运行在网易私有云基础设施上,大大提升了公司产品的研发和运维效率,使产品研发更聚焦在其业务上。
最艰难的突破是在研发蜂巢容器编排服务上,我们基于开源的 Kubernetes研发,Kubernetes源自于 Google内部的 Borg系统,其架构虽好,发展也较快,但由于其开源时间比较短,性能和稳定性还达不到生产环境的要求。此外,Kubernetes版本更新发布变化比较密集,对我们跟进新版本和维护也带来了很大的挑战。

在蜂巢容器云中,容器的编排服务是核心的模块。今年,我们研发团队投入了大量的人力和精力以增强 kubernetes编排系统的功能、优化其性能、可扩展性以及稳定性,使它能很好地支撑蜂巢服务编排的业务。在可扩展性方面,Kubernetes最早的官方版本可以单集群管理 1000个 Node节点,后来的版本可以实现支持 3000个 Node节点的规模。经过优化,我们已经做到了单集群管理万级 Node节点的能力。未来,我们还会继续更多的优化工作。
Q:从个人角度来看,在杭研的成长,哪些因素对您的帮助最为关键?

张晓龙:在杭研的成长经历,对我帮助较大的因素有两点:

一、自 2006年成立以来,杭研公共技术部门就深耕于互联网产品后端服务的系统研发,积累了分布式存储、分布式数据库、中间件等技术,为私有云研发奠定了深厚的技术积累。我在成长中也吸收了大量的研发经验,并应用到 IaaS技术架构的设计和 PaaS服务的研发上。

二、杭研技术管理者比如研究院执行院长汪源、网易云基础服务总经理陈谔等对新技术,特别是开源技术的开放、拥抱态度,让一线技术人员可以更加积极主动地去探索和利用开源技术。目前,网易基础设施体系采用了大量开源软件,比如 OpenStack、Ceph、Docker、Kubernetes、KVM、OpenVSwitch、MySQL、Redis、RabbitMQ、Kafka、Haproxy等。基于这些优秀的开源软件,我们可以站在巨人的肩膀上来构建和优化我们的系统,而不需要重复造轮子。
容器技术的真正价值
Q:网易云基础服务(蜂巢)的研发,您认为和最初的网易私有云相比有哪些不同?多了哪些挑战?

张晓龙:最初的网易私有云,可以理解为传统的云计算 IaaS平台,为网易公司所有产品提供 IT基础设施资源如云主机、云网络、云硬盘,以及对象存储、数据库、缓存、消息队列、搜索等通用的 PaaS服务。

网易云基础服务(蜂巢)则是深度整合了 IaaS、PaaS及容器技术,提供弹性计算、DevOps工具链及微服务基础设施等服务。帮助企业解决 IT、架构及运维等问题,使企业更聚焦于业务,是新一代的云计算平台。网易云基础服务(蜂巢)基于多年承载网易公司业务的私有云 IaaS平台,依托流行的 Docker容器及编排技术来构建,交付的不是基础设施,而是容器。容器是蜂巢的核心。
网易私有云面向的用户是网易公司的内部业务。在公司内部,互联网产品的应用系统架构、使用场景和模式都比较一致,比如都会做应用高可用的方案,同时,有专门的应用运维团队来负责所有产品的应用部署和运维,会执行固定且统一的部署和运维模式。另外,公司内部一般每个产品一个租户,租户量会比较少,但每个租户拥有的资源会比较多(比如云主机会多达 1千多台)。在私有云这样固定的场景下,相对于公有云,我们的私有云平台可以不需要提供较为通用和全面的功能,而更多面向有限固定的应用场景提供少而精的功能,同时花更多精力在性能优化上,比如为大租户进行网络性能优化。

网易云基础服务(蜂巢)是一个公有容器云平台,它基于网易自研 IaaS平台提供容器及其编排服务。相对于私有云,在网易云基础服务(蜂巢)的研发上有以下几点挑战:

  • 公有云需要面向广泛的应用场景,提供通用而且全面的功能;
  • 公有云提供给更多的用户使用,需要可扩展性很高的多租户技术;
  • 公有云不能假定用户的使用和运维模式,在产品形态上和用户体验上需要有更多考虑和设计;
  • 蜂巢公有云交付给用户容器,而运行容器的资源(计算、存储、网络)来源于 IaaS。为了保证用户对容器和容器编排良好的使用和性能体验,必须对 IaaS进行定制和优化,使得在 IaaS上运行的容器更安全、更高效。比如在蜂巢中我们会优化容器的启动时间,使得用户创建容器时可以获得容器轻量快速启动的用户体验。
Q:您强调容器为核心的服务模型不同于 VM为核心的服务模型,但目前业界有一些把容器当做 VM使用的方法,让企业能够更快地用上容器技术,您认为这种方式需要改变吗?

张晓龙:以 Docker为代表的容器技术才出现不到4年,在目前业界对容器的接受程度还不够高情况下,对一些企业来说,利用了容器的轻量级虚拟化、运行时高效等优点(去 Hypervisor层开销),把容器当做 VM来使用也是一种合理的使用方式。在这种使用方式下,应用业务几乎不用做任何改动就能享用到容器的性能优势,这个可以让企业快速用上容器技术,解决虚拟化效率不高的问题。但我们认为,容器技术更大的价值,还是在于对 DevOps、微服务架构的支持上,这才符合未来提高软件开发效率的趋势。网易云基础服务(蜂巢)集成容器及其编排技术,不断地优化,目的也就是为了改变互联网软件的生产方式。
网易云基础设施的技术选择与优化
Q:网易云很早就探索容器技术了,作为网易云基础设施技术总监,您如何不断地了解各种新技术,如何判断哪些新技术适合引入到网易技术体系中来?

张晓龙:云计算基础设施技术特别是软件定义网络、软件定义存储技术在近几年得到了快速发展。一方面,我们会紧跟业界领先的互联网公司如谷歌、亚马逊,关注他们发表的论文、技术博客以及发布的新产品功能。另一方面,我们也关注开源技术的新动态,尤其是我们目前所用开源项目比如 OpenStack、Ceph、Docker、Kubernetes等,以及未来可能会使用的技术如 SRIOV、GPU、FPGA等。

从技术的角度,新技术选型时必须从业务需求出发进行评估。需求理清楚后我们再来判断哪些新技术可以满足我们的需求,从我们云计算基础设施服务的角度,我们需要从性能、稳定性、可靠性、可扩展性等方面展开评估。

除了这些必不可缺的评估方面,我觉得开源技术社区的发展趋势也是另外一个非常重要的评估维度。比如在 2012年我们研发 IaaS的时候,我们公司 IT基础设施有两个痛点:1、服务器上线周期长;2、服务器资源较浪费。因此,我们需要一套基础设施云平台来解决我们的这两个痛点。为了解决这两个痛点,我们评估过当时两个开源云平台框架 OpenStack和 CloudStack。CloudStack的技术成熟度更高,而且背靠商业化公司,但我们综合考虑了我们的业务需求、技术架构、社区活跃度、社区生态等因素,认为 OpenStack更加适合我们。

在对开源新技术的使用上,我们会敢于尝试新技术。以网络虚拟化为例,我们在 2013年的时候就已经使用 OpenStack Neutron、VxLAN、开源虚拟机交换机 OVS等比较前沿的技术。当时 OpenStack社区还不太推荐 Neutron组件,而是推荐 nova-network组件,后者是一个基于 VLAN技术的扁平网络,但受限于交换机最多支持 4096个 VLAN的限制,云平台最多可以支持 4000多个租户。在私有云的场景而言,一个公司按照部门或者产品来划分,4000多个租户是足够了。然而,本着为后续做公有云进行技术储备的想法,我们尝试了基于 VxLAN的大二层技术,并最终上线私有云。现在,我们的基础设施能快速上线网易云基础服务(蜂巢),也是我们敢于尝试新技术的回报。
Q:容器开源项目迭代很快,最新发布的 OpenStack版本,也对容器技术做了更多的集成,我们如何决定是否选择呢?

张晓龙:确实,OpenStack的 Kolla、Nova、Heat等多个组件都有支持容器化的努力,社区还专门孵化了一个 Magnum项目,整合多种编排框架如 Swarm、Kubernetes、Mesos,用来提供 Container as a Service(CaaS),这证明了容器化是大势所趋。但网易在容器方面的探索比较早,我们的初衷是以容器及其编排技术为载体,提供完善的业务研发 DevOps工具链,从而改变现有软件的研发模式。

在网易云基础服务(蜂巢)的技术方案中,一方面,我们使用经过定制和优化过的 OpenStack管理基础设施,为运行容器提供优质的计算、网络、存储资源。另一方面,我们基于 Kubernetes这样一个开放流行的编排工具实现容器编排管理。目前网易云基础服务(蜂巢)对内外部客户的支持效果,说明我们的方案是成功的。目前,支持 OpenStack社区的大公司深度拥抱 Kubernetes,也证明了我们的选择是很有前瞻性的。所以,我们的主要精力还是在于 Kubernetes的性能优化和稳定性增强上面。目前 Docker和 Kubernetes的新版本不断修复各种 bug,并提供很多吸引我们的新特性,我们会积极考虑快速升级。

Q:您刚才说存储和网络技术发展很快,存储方面我们用了 Ceph,您有哪些优化经验?

张晓龙:在 Ceph之前,我们自己也研发了一套分布式块存储系统,用来支持数据库等高性能 I/O的特定场景需求。但开源 Ceph系统的通用性更好,具备完善的存储系统功能,同时支持对象、文件、块三类存储。此外,Ceph社区发展也非常快,社区开发者越来越多,版本发布也越来越快。目前国内也已经有很多在生产系统使用 Ceph存储的案例。Ceph目前在 I/O性能上还需要很多的优化才能满足高性能 I/O的需求。

网易云基础服务(蜂巢)块存储使用全 SSD硬件,而 Ceph项目在 SSD流行之前诞生,主要面向慢速设备,现在虽然也在支持 SAS/PCIe SSD的方向上发展,但还是没有满足我们的需要。我们有一个专门的团队做 Ceph的优化,也做了不少工作。例如,Ceph运维需要重启 OSD进程时,社区采用的是全量数据恢复方式,导致 Ceph集群的 I/O性能在较长时间(10多分钟)内持续受到很大的影响,虚拟机读写 Ceph盘的 I/O性能骤降到原来的 10%-20%。后来在数据恢复时我们优化成了增量恢复的方式,重启 OSD进程时,I/O性能只降低了10%-20%,时间也从原来的 5-10分钟缩短到 1分钟左右;另外,在 Ceph的参数调优方面,我们也做了一些调整,让 Ceph集群的整体 I/O吞吐能力比原来得到了1倍以上的提升。当前针对 Ceph不能跑比较高性能的 I/O应用,如数据库的缺陷,我们投入比较大的人力和精力去解决这个问题,从而扩大 Ceph的应用场景。
网易技术人的业余生活


Q:作为一个老网易人,除了基础架构的本职工作,您是否还会关注杭研内部的一些有趣的活动呢?

张晓龙:我会时常和同事一起运动,如打篮球、爬山。技术方面,除了基础设施的本职工作,我还比较关注网易产品业务部门的研发,会经常去了解他们研发过程中碰到的问题,然后带着这些问题回来看我们在技术和架构层面能帮助业务部门做些什么样的优化和研发,从而提升他们的研发效率,满足他们产品快速迭代的需求。另外,我也会经常关注内部的新技术的分享、实践与交流。
-END-
精彩文章回顾
点击图片轻松阅读
尧飘海:构建容器云平台的关键技术
Docker容器的自动化监控实现



    关注 网易蜂巢


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册