Case Study:SkyForm CMP助力业务应用实现自动伸缩

■ 马俊  天云软件产品总监


云计算的优势中包括两点:按需使用和弹性调度。

用虚拟机举例,按需使用一个简单的例子就是按照需求使用不同配置的虚拟机——当不需要使用了,可以销毁虚拟机;当虚拟机配置不能满足应用性能要求了,可以通过增加CPU、内存、磁盘等方式来提高虚拟机性能。

弹性调度一个简单的例子就是给用户创建虚拟机时,通过云计算调度功能选择一台物理机,然后在这台物理机上创建虚拟机;如果这台物理机坏了,还是通过云计算调度功能,将上面虚拟机自动迁移到其他正常运行的物理机上,以此来保证虚拟机的正常使用而不影响业务应用。

下面介绍一个业务应用上云的案例,来具体看看SkyForm CMP(天云软件云管理平台产品)是如何帮助业务应用利用云计算优势的。

这个案例是一个企业内部投票类业务应用,部署在企业内部私有云上面。这个业务的作用在于方便企业对员工进行意见征求,比如企业要进行春游活动,会做几个选项,员工在一定时间内进行投票,最后公布投票结果,企业选择得票数最多的活动组织春游。这个案例中,企业内部使用了vSphere构建虚拟化资源池,所有业务都部署在vSphere的ESXi虚拟化服务器上面,所有虚拟机都是通过vCenter进行管理。这个投票类业务应用使用web服务器+数据库服务器的两层架构进行开发,其中web服务器使用虚拟机,开始的时候部署了两台web服务器(如下图所示)。

cmp1

这个业务应用的特点是平时很少有人访问,但是在投票活动的时候访问量就突然增加,有的时候会出现页面无法打开、投票无法提交的情况。系统管理员分析发现,两台web服务器无法满足投票期间高并发访问处理要求,所以在投票期间会部署十台web服务器,并配置负载均衡器,以处理高并发访问(如下图所示)。

cmp2

既然通过部署十台web服务器解决了高并发访问的问题,那么系统管理员可以一直使用十台web服务器,尽管平时这个业务应用访问量很低。但是这个企业对系统管理员的KPI考核中包括业务应用资源使用率——十台web服务器长时间占用资源显然会导致业务应用资源使用率非常低。所以系统管理员在投票活动结束后会剔除八台web服务器,并配置负载均衡器,只保留两台web服务器用来给员工查询历史投票活动和历史投票结果使用。

由于投票活动经常进行,所以系统管理员不得不频繁地扩容和缩容web服务器,这造成了大量时间成本的浪费。系统管理员希望通过一套云管理平台把vSphere虚拟机管理起来,并能够让业务系统利用到云的优势,实现按需使用和弹性调度。在这种需求驱动下,SkyForm CMP被引入了。

部署完SkyForm CMP后,并没有重新建立虚拟化资源池,而是将既有的vSphere虚拟机纳管到了SkyForm CMP中。现在可以通过SkyForm CMP操作既有的vSphere虚拟机并创建虚拟机,也可以在vCenter中操作和创建虚拟机,SkyForm CMP会自动同步vSphere虚拟机及其状态,从而保持了SkyForm CMP中虚拟机与vCenter中虚拟机的一致性。由于客户数据中心环境中有些x86服务器并没有安装虚拟化软件,而是直接安装的Linux操作系统,像数据库这样的软件都是直接部署在x86服务器物理机上面的,并没有使用虚拟机,所以在SkyForm CMP中建立了物理机资源池,将数据中心里面没有安装虚拟化软件的x86物理机纳管到SkyForm CMP物理机资源池中,在SkyForm CMP中可以对这些x86物理机进行远程开关机和重启操作,还可以监控这些x86物理机资源使用率(如下图所示)。

cmp3

另外,之前系统管理员都是维护一张虚拟机资源使用率表格,每周通过vCenter收集每台虚拟机资源使用率,然后汇总到虚拟机资源使用率表格中,接着系统管理员还需要将业务应用同虚拟机资源建立对应关系,然后整理出一张业务应用资源使用率表格。尽管如此,这样也只能统计业务应用在虚拟机上的资源使用率,而对于那些业务应用直接使用的x86服务器则无法统计,所以这种统计并不能完全衡量业务应用资源使用率。也就是说,系统管理员之前的统计表格始终不全面,不被业务部门认可。因此,系统管理员引入SkyForm CMP的另一个需求就是可以完整统计业务应用的资源使用率。

现在,将物理机和虚拟机都纳管到SkyForm CMP中后,系统管理员可以直接通过SkyForm CMP统计业务应用使用了多少台x86物理机和多少台虚拟机,也可以很方便地全面统计x86物理机和虚拟机的资源使用率(如下图所示)。

cmp4

在部署完SkyForm CMP并且纳管了虚拟机和物理机之后,通过SkyForm CMP的自动伸缩组可以满足系统管理员让业务应用利用云的优势实现按需使用和弹性调度的需求。

SkyForm CMP自动伸缩(Auto Scaling)确保拥有适量的虚拟机实例,用于处理应用程序负载。这些虚拟机实例的集合,称为自动伸缩组。SkyForm CMP可以指定每个自动伸缩组中最少的实例数量,即自动伸缩会确保组中的实例永远不低于这个数量;也可以指定每个自动伸缩组中最大的实例数量,即自动伸缩会确保组中的实例永远不高于这个数量。如果在创建组的时候或在创建组之后的任何时候指定了所需容量,自动伸缩会确保组一直具有此数量的实例。如果指定了扩展策略,则自动伸缩可以在业务应用的需求增加或降低时启动或终止实例。

要使用SkyForm CMP自动伸缩组,需要了解下面几个概念:

  • 伸缩策略

伸缩策略决定了如何在伸缩组中添加资源实例或移除资源实例。从行为上分为收缩(scale in)和伸展(scale out)两种类型的策略,分别对应移除资源实例和添加资源实例。

  • 启动配置

启动配置决定了伸缩组在添加新的资源实例时所使用的配置,主要包含资源池、服务方案、磁盘方案、模板、资源所属租户等信息。

  • 资源实例

资源实例是属于某个伸缩组的资源,可能是虚拟机,也可能是物理机。一般情况下,默认资源实例是同等规格的,但也允许通过纳管等方式把不同规格的资源实例放到一个伸缩组中管理起来。

  • 调整步长

调整步长决定执行伸缩策略时,策略一次执行添加或移除的资源实例个数。

  • 冷却时间

冷却时间表示从伸缩策略执行完成(scale in或scale out)之后,到伸缩策略可以再次执行之前的时间间隔。

  • 终止策略

当执行scale in类型的策略时,终止策略决定如何选择伸缩组中的一个虚拟机进行销毁。支持NEWEST、OLDEST、RANDOM三个值,即分别对应销毁最新的、最老的或随机的资源实例。

  • 伸缩组hook

在伸缩组中,执行伸缩策略可能会增加资源实例或者销毁资源实例,从而影响伸缩组上层的应用状态,因此在进行资源实例操作开始前和结束后,伸缩组hook定义了伸缩组应该在这时候执行什么动作。如通知上层应用某个资源实例要销毁了,上层应用就可以先把这个资源实例从服务列表中移除掉。

  • 策略执行方式

策略执行方式决定伸缩策略执行时,需要对资源实例进行的操作。

我们通过SkyForm CMP针对这个投票类业务应用创建了一个自动伸缩组。伸展策略使用的是告警触发,也就是当这个投票类业务应用web服务器内存使用率达到80%的时候触发伸展策略,按照启动配置规则,在web服务器虚拟机所在的vCenter集群上按照调整步长为5创建web服务器虚拟机,也就是一次创建5台web服务器虚拟机,最大可以创建20台;同时按照伸缩组hook规则,将新创建的5台web服务器挂载到上层负载均衡器上。收缩策略也使用的是告警触发,即当这个投票类业务应用web服务器内存使用率下降到30%的时候触发收缩策略,一次性销毁5台web服务器虚拟机,最少保留2台,并按照伸缩组hook规则,在上层负载均衡器上取消这5台web服务器虚拟机。

通过配置上述的自动伸缩组,就可以实现按照web服务器资源负载进行自动伸缩。但是实际使用中我们发现,仅仅使用CPU和内存这些资源信息并不能准确反应web服务器上业务负载情况,原因在于web服务器上的程序为了提高处理速度,在启动的时候就抢占了web服务器上80%的内存资源,这样会导致自动伸缩组认为业务负载上升而触发伸展策略,但是实际上业务负载其实并没有提高。解决的办法是通过SkyForm CMP采集web服务器上业务负载指标,然后重新配置自动伸缩组的伸展策略和收缩策略,将伸展策略配置成业务负载指标上升到200的时候触发,将收缩策略配置成业务负载指标下降到30的时候触发。这样,SkyForm CMP基于实际业务负载指标告警触发的自动伸缩组便实现了投票类业务应用基于业务负载的自动伸缩,也解决了通过web服务器资源指标带来的伸缩不准确问题。

cmp5

但是仅仅配置了这样一个基于告警触发的自动伸缩组只是解决了部分问题,还没有解决全部问题,原因在于投票类业务应用的业务特性。这个投票类业务有着明确的投票时间和结束时间,比如星期三11点开始投票,星期五17点结束投票。如果只配置了一个基于告警触发的自动伸缩组,还是会出现问题。原因在于通过SkyFom CMP定时采集web服务器业务指标数据时,如果是在星期三11点的时候,上一次采集业务数据指标很小,还没有满足伸展策略要求,这时web服务器数量只有两台,而企业员工已经开始进行投票了,还是会出现页面无法打开、投票无法提交的情况;而只有在下一次采集业务数据指标时才会因为指标过高而满足伸展策略要求,弹性扩展web服务器。所以说,如果投票时间正好处于采集业务数据指标的间隔内,会出现短时间页面无法打开、投票无法提交的情况,这就需要通过SkyForm CMP再配置另外一个基于定时触发的自动伸缩组。

比如星期三11点开始投票,星期五17点结束投票,那么通过SkyForm CMP就可以配置一个基于定时触发的自动伸缩组,伸展策略是在星期三10点创建10台web服务器,并将这10台web服务器配置到上层负载均衡器上;收缩策略是在星期五18点销毁5台web服务器,并将这5台web服务器从上层负载均衡器上取消。

我们还可以通过SkyForm CMP来监控自动伸缩组,这样可以方便系统管理员知道自动伸缩组是如何运行的,并根据自动伸缩组监控来调整自动伸缩组策略,更有效地保障业务应用稳定运行并提高资源使用率。

下图是SkyForm CMP自动伸缩组监控界面截图。这个自动伸缩组配置的是10点钟执行伸展策略,11点钟执行收缩策略。

cmp6

cmp7

通过SkyForm CMP上这两个自动伸缩策略,满足了系统管理员的需求,让业务系统利用到云的优势,实现按需使用和弹性调度,实现了业务应用的自动伸缩,同时还实现了纳管既有资源,并且可以按照业务进行资源管理。

上面介绍的是SkyForm CMP在企业私有云中助力业务应用实现自动伸缩的一个案例。大家其实不难发现,在公有云上这种案例更多,但是在私有云中自动伸缩并没有被广泛的应用起来,因为在私有云中仅仅实现了数据中心部分虚拟化这一步,并没有充分利用到云计算提供的各种优势特性,即按需使用和弹性调度。通过SkyForm CMP可以帮助企业更有效的利用云计算的优势,保障业务应用持续提供服务,提高数据中心资源使用率,增加企业投资回报率。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐