基础架构即服务(Infrastructure as a Service)的基础是服务器虚拟化。当越来越多的负载运行在虚拟化环境中,运维也变得越来越重要。当我们提供给应用的不再是一个个物理机,而是在资源池中逻辑划分出来的一个个虚拟机,其运维方式也不同于传统的运维。
VMware在虚拟化运维领域有一个大拿叫Iwan Rahabok,由于工作关系,笔者最近听了他的讲座,颇有感触。本文结合运维的一个方面——性能管理,和大家分享一下自己的体会。
性能和容量是两件事情
运维领域一个很重要的目标,就是尽早发现性能问题。
但是事实上,很多虚拟化管理员都面临这样的困境。一方面,应用部门在抱怨性能(performance)太差,要求更多的资源;另一方面,CIO总是希望控制预算,认为当前的资源利用率(resource utilization)不高,还可以增加更多的虚拟机。
为什么两者的看法相差那么大?作为IaaS系统架构师的你,是否有足够的信服度告诉大家,到底现在应该买更多的硬件,还是增加更多的虚拟机?
我们先不着急回答这两个问题。我们先来看一下,到底如何定义VM的性能?有人可能说,VM的性能就是vCPU有几个,内存配置了多少GB,存储的延时是多少。在物理服务器的世界里,也许基本可以这么认为;但是在虚拟机的世界里,很多的VM共享一个资源池,VM之间存在资源的竞争。
举例来说,某一个VM虽然分配了2颗vCPU,但这并不意味着,有两个物理的CPU或者Core就完全被这个VM独占。所以,在虚拟化的世界里面,真正定义VM性能的是这四个指标:CPU的争用,内存的争用,网络的丢包数,存储的延时。至于vCPU配置了几颗、内存配置了多少GB、存储配置了多少GB/TB,这些都是VM的容量指标。
定义SLA非常重要!
但是,其实我们发现,当应用部门给基础设施部门提需求的时候,通常情况都只包含VM的容量指标。很奇怪,是不是?其实背后的逻辑是,应用部门认为基础设施部门应该保证VM的性能。基础设施部门问:“保证什么样的性能?”;应用部门答:“应用需要什么样的性能,就给到什么样的性能”。
那基础设施部门怎么知道应用需要什么样的性能呢?难道为每一个VM提供最高的性能?现实吗?如果应用的性能不好,基础设施部门是不是就要背锅呢?
根本的问题在于基础设施部门提供的服务没有Service Level Agreement(SLA)。
这就如同开一个餐馆,虽然大家都是点的红烧肉,但是不同级别的餐馆差别很大,菜品的质量、上菜的速度、餐馆的环境、服务生的响应度等等。基础设施部门需要事先定义清楚SLA。一个例子,如下图所示,我们定义了三个级别的服务。
服务的级别越高,资源池的复用率越低,甚至需要单独预留(reserve),从而导致整体的资源池使用率(Utilization)越低。
当应用部门申请VM的时候,请选择需要的Service Tier。我们的建议是,通过压力测试和最终用户体验监控(End User Experience Monitoring)来决定到底需要什么级别的SLA。
如果发现应用的性能下降,基础设施部门很容易就可以说明到底基础设施层面有没有问题;如果有问题,是哪个方面出了问题,问题有多严重。对于应用部门来说,如果基础设施没有问题,就可以把精力集中在应用的性能诊断上。如果是由于访问量增加导致的性能下降,也可以通过提升Service Tier来提升性能。
当然,应用部门可以所有的VM都选择Tier 1的服务。但这其实是一种浪费,通常可以通过两种方式来解决。
事前审批:通过人的经验来判断需求是否合理
计量计费:通过财务手段进行约束
我们回到文章开始时提出的两个问题:
为什么应用部门和CIO的看法相差那么大?
答:因为应用部门看的是性能(Performance),而CIO看的是资源使用效率(Utilization)。Performance和Utilization是完全不同的指标。
作为IaaS系统架构师的你,是否有足够的信服度告诉大家,到底现在应该买更多的硬件,还是增加更多的虚拟机?
答:当Performance不达标时,首要任务是解决Performance问题,这个时候增加新的VM提升Utilization,只会导致Performance问题更加严重;我们需要接受一个理念,performance的提升通常需要牺牲整体的utilization。
如果你没有SLA,只关注utilization,那你只是在做虚拟化整合,而不是提供基础设施服务。
知易行难,重在企业文化
以上的理念并不新鲜,ITIL已经倡导了那么多年,根本的就是IT服务管理。IT部门从一个支持部门转变成为一个服务部门,制定服务目录和对应的SLA。
基础设施部门通常情况下被认为是支持应用的,是一个成本中心。应用是来支撑业务的,是利润中心,当然是要多少资源,就要给多少资源,作为成本中心的基础设施部门很难去讨价还价。这其实是一个误区,IT需要让所有的业务部门清楚,基础设施也是一种服务,也是要付费的,不同级别的服务,不同的价格。
这样的转变,考验的是企业文化和IT部门领导的认知。
在笔者的日常工作中,笔者已经看到很多用户已经制定IaaS服务目录,提供基本的VM服务。但是这只是第一步,下一步需要制定对应的SLA,这才能成为真正的Service。
---end---
领取专属 10元无门槛券
私享最新 技术干货