虚拟机(Visual Machine)的云平台的自动伸缩扩容(auto-scaling)技术

    云计算平台中允许客户依据应用的负载进行云计算资源的弹性动态伸缩(理想的情况是实现一个用多少付费多少的模型,最大限度地降低用户的运营成本)

    在进行讨论之前,先对几个名词进行定义

       1)客户:使用云服务的人,在云上部署他的应用

       2)用户: 使用部署在云上的应用的人

   

Auto-scaling的关键

    云计算的一个关键特点是弹性伸缩,但它是一把双刃剑,因为它允许应用依据负载动态地申请和释放资源,但是确定一个合适的资源量并不容器,那么需要一个系统自动地依据负载来调整资源量(尽可能得减少人工的干预)。

    资源的伸缩主要有两种:

1)垂直伸缩:简单的说就是伸缩的时候以虚拟机为单位,直接增加或减少虚拟机的数量

2)水平伸缩:对虚拟机的内部的资源(如CPU、存储等)进行伸缩

    但大多数操作系统在水平扩容时都需要重新启动虚拟机,因此很多云服务商都只提供垂直伸缩。

    那怎么样来判断一个一个auto-scaling系统是否合格呢:

1)在客户(应用的部署者)和终端用户之间的Service Level Agreement (SLA),比如说满足一定的响应时间

2)在云服务提供商和客户之间的SLA,比如说满足云平台的一定的资源利用率

    Auto-scaling的实现主要面临几个问题:

1)Under-provisioning:即应用没有获得足够的资源来应对用户的请求,不能满足SLA,需要增加更多的资源

2)Over-provisioning:即应用在满足SLA后还有过多的资源,客户付出了不必要的成本

3)Oscillation:当伸缩的动作执行的过快时,可能会出现资源波动的现象(刚刚扩容又缩容)。可以伸缩后添加一个懒惰时间(此时不进行任何伸缩扩容)来避免波动

     Auto-scalin系统一般包含四个部分:

               1)Monitoring:监控系统主要是获得系统和应用的状态信息

                         硬件信息: CPU利用率,存储利用率,网络接口

                         操作系统进程:缺页,CPU调度

                         负载均衡: 请求访问队伍的长度,当前对话的进程数量,拒绝请求的数量

               2)Analysis: 分析监控系统的信息估计未来的资源使用情况和需求

               3)Planning: 制定一个合适的资源伸缩计划

               4)Execution:执行

    虚拟机的云平台中,常见的auto-scaling技术主要有五种:

        1)static threshold-based rules

        2)control theory

        3) reinforcement  learning

        4)queuing theory

        5)  timeseries analysis

猜你喜欢

转载自www.cnblogs.com/yuxiaoba/p/9274717.html