网易轻舟基于K8s的业务混部署实践
导读: 服务器资源利用率较低,IT基础设施的总拥有成本(TCO)逐年上涨,一直是困扰很多企业的难题。随着云原生技术的发展,Kubernetes逐渐成为数据中心的一项基础设施,将在/离线业务统一使用Kubernetes调度编排日渐成熟。本议题结合网易轻舟在这一领域的工作实践,介绍如何基于Kubernetes通过混合部署,在不影响在线业务的前提下将CPU利用率提高到50%以上,大幅降低企业数据中心成本。
作者:张晓龙、李岚清、陈林亮
前言
数据分析显示,数据中心成本中,服务器采购成本占比超过50% 1, 2 ,而全球服务器平均资源利用率不到20%,并且服务器一般3~5年就会淘汰,需要购置新服务器,造成了巨大的成本浪费。
如果数据中心或者机房规模较小,服务器数量有限,很少有人会去关注资源利用率这个问题。因为在小规模场景下,耗费人力、物力想办法提高服务器资源利用率并不会获得太高的收益。如果数据中心规模比较大,提升数据中心资源利用率则能够显著降低成本、带来巨大收益,所以国内外的大型互联网公司,很早就开始投入大量的人力物力进行较多的探索实践。
近几年,随着网易云音乐、严选、传媒、有道等互联网业务的快速发展,网易内部的服务器数量不断攀升,而实际资源利用率又比较低,IT基础设施成本问题日益严峻。面对日益增长的业务,我们希望用最小的基础设施资源成本来支撑更大的业务需求。提升服务器资源利用率成为一个比较重要的解决手段。
网易轻舟团队提出了一套基于kubernetes的业务混部方案,目前已经在网易内部得到广泛应用,在不影响业务SLO(service-level objective)的前提下,资源利用率得到显著提升。
本文将从以下几个方面逐步展开:
- 资源利用率现状和原因分析
- 如何通过混部提高资源利用率
- 落地成果
- 未来展望
资源利用率现状和原因分析
麦肯锡数据统计显示,整个业界的服务器平均利用率大约为6%,而Gartner的估计要乐观一些,大概在12%。国内一些银行的数据中心的利用率大概在5%左右 3 。
而造成利用率比较低的原因主要有以下三个方面:
- 不同类型的业务划分了独立的服务器资源池
绝大多数企业在构建数据中心或者机房的时候,对于在线服务(latency-sensitive service)和离线服务(batch job)是单独采购机器并且分开管理部署的,各自采用独立的资源调度管理系统(比如离线业务使用Yarn调度,在线业务Mesos调度),从服务器采购、规划到业务调度层面都是完全隔离的。
图1(b) 是Google 专门运行在线应用的2万台服务器CPU利用率分布图,大部分处于30%左右。图1© 是Google专门运行批处理作业的2万台服务器CPU利用率分布图,大部分在75%左右 3。
在线业务SLO要求较高,为了保证服务的性能和可靠性,通常会申请大量的冗余资源,因此,会导致资源利用率很低、浪费比较严重。而离线业务,通常关注吞吐量,SLO要求不高,容忍一定的失败,资源利用率很高。
假如将离线业务跑在在线业务的机器上,充分利用在线业务的空闲资源,那是不是就能节省下离线业务的服务器成本了呢?
<