ROS 助你轻松实现应用的弹性伸缩-阿里云开发者社区

开发者社区> 开发与运维> 正文

ROS 助你轻松实现应用的弹性伸缩

简介: 利用ROS的Udate功能实现应用的弹性伸缩

是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。

当应用上线以后,我们就万事大吉了吗?非也非也,可能日常情况下,你的应用利用现有的资源能很容易的处理用户的请求,但是如果是节日,热点事件,双十一或者促销活动导致的流量暴涨呢,我们应该怎么去处理,相信大家肯定会说加资源啊,伸缩应用集群啊。是,这是一个好方法,但是说起来容易,做起来难,怎么能很快速的扩资源呢?当流量逐渐回归平稳的时候,怎么能一点一点的收缩资源,减少资源浪费呢。本文将基于阿里云的资源编排服务(ROS)来尝试给出一点建议。

背景

本文通过下面的高可用应用部署的例子来说明,如何通过通过ROS做到资源的弹性伸缩,轻松应对流量波峰。下图是一个高可用应用部署的最简单架构:

ha_arch

所有弹性计算资源 ECS,RDS创建在同一个VPC网络下, 外部用户通过SLB访问应用。同时RDS是主备存储放在不同的可用区,并且创建了数据库为其添加用户。SLB监听了80和443端口。所以基本上,只需要用户把自己的应用部署到这个环境里,就可轻松上线了。通过下面的【一键部署】就可以搭建出一个高可用架构。

一键部署>>>

应用上线了,可以松口气了,别急。公司要做促销,要迎接双十一,流量暴涨,当前的计算能力不能处理怎么办?别急,下面就说如何通过 ROS, 在已有的应用部署环境下,并且不影响用户使用的情况下,神不知鬼不觉的应用的弹性伸缩呢?

初步扩容

流量暴涨扩容只需要下面两步:

  1. 给原有APP部署机做镜像
    应用部署在系统盘里,需要给上面的架构中的一台ECS做镜像,这样就可以通过包含有APP的镜像,克隆出一个全新ECS。做镜像的步骤参考这里
  1. 点击下面的一键扩容:

一键扩容>>

点击完一键扩容后,你会在浏览器看到下图输入参数:
scale_out

参数SourceInstanceId指定以哪个ECS为基准克隆扩容的ECS,NewImageId 指定第一步所创建的镜像,这样当扩容以后新的ECS上就已经包含有部署好的应用,MaxAmount 指定将要扩容的 ECS 数量,本例中是扩容了5台 ECS,LoadBalancerIdToAttach 指定扩容的ECS将要挂载到已存在哪个SLB上。参数输入完成后,点击创建,稍等几分钟新的扩容的 ECS 就自动上线了。其实这里还有优化的空间,应用是否可以做到自动启动呢,答案是可以的。通过ROS的UserData,指定应用的启动脚本,就可以非常方便地实现ECS上线的时候,应用同时上线。关于UserData的例子可以看这里

动态调节计算节点

如果扩容后,仍然不能处理继续增长的流量呢,这个也很简单,可以继续点击一键扩容,增加计算量。但是最好的方法是使用如下所示的方法来调节自己应用的部署规模。这样不仅很方便的实现扩容,也可以很方便的做到缩容。这里动态调节的本质是,利用ROS的Update功能,通过修改资源栈模板的参数,来更新资源栈中的资源配置以及数量。简单说,通过调节上面的资源栈的 MaxAmount 参数就可以达到动态调节 ECS 计算资源目的。

当需要增加资源时, 修改MaxAmount为10,那么就是在原有扩容的基础上,再增加5台相同配置的ECS;当流量开始降低,修改MaxAmount为3,就是在原有扩容的基础上,删除2台机器。

  1. ROS控制台,找到一键扩容所创建的stack,然后点击下面更多会出现更新堆栈按钮,如下图所示:

scale_out_mall

  1. 点击【更新堆栈】,会出现如点击一键扩容时参数输入框,如下图所示,假如需要缩容,那面调整MaxAmount参数为3,点击更新就会把多余的 ECS 释放掉。

scale_out_small_params

这样不论流量规模如何变化,我们都可以以不变应万变,轻轻松松实现 ECS 计算的任意调节。当流量彻底回归正常水平,只需删除一键扩容时所创建的资源栈即可。

总结

本文主要讲述了如何通过ROS实现应用的弹性伸缩。上面的步骤都是在ROS的控制台手动操实现的。当弹性伸缩的变动不频繁,运维人员还能hold住,但是当要实现快速响应,实时调整应用的处理能力,那么最好的方法是利用ROS的API去实现上面步骤。关于ROS API的使用,可以参考这里。关于API的详细介绍请参考这里。所有在控制台的操作,都提供了相应的API。

从此以后后任何弹性伸缩的应用场景,再也不用怕了。

是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章