开发者社区> 问樵> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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。

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

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

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

相关文章
应用实战精解系列(七):RVB2601以太网通讯测试
芯片开放社区(OCC)面向广大开发者推出应用实战系列内容,通过分享开发者实战开发案例,总结应用开发经验,梳理开发中的常见问题及解决方案,为后续参与的开发者提供更多参考与借鉴。
306 0
毫秒级弹性伸缩,阿里的函数计算平台让开发者进入计算时代
4月26日,在云栖大会·南京峰会上,阿里云宣布函数计算(Function Compute)启动邀测。这是一个事件驱动的无服务器计算平台。用户按需调用、按需付费,无需管理服务器等基础设施,特别适用于应用场景中有明显波峰波谷的企业。
1808 0
log4j的正确使用姿势
最近清明节,朋友公司的日志爆了,说控制台打得太满了,出了问题,早上4点多被喊去公司修改代码,他们把所有的日志全部在控制台打印了,结果就。。。我说日志这么做不可取啊,你们打印出来的内容太多啦,控制台没必要打印这么多,log4j配置一下每天生成即可,这样也方便查看查错   其实我们也是简单应用一下而已,大致配置如下 log4j.
694 0
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(16)-权限管理系统-漂亮的验证码
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(16)-权限管理系统-漂亮的验证码   我们上一节建了数据库的表,但我发现很多东西还未完善起来,比如验证码,我们先做好验证码吧,验证码我们再熟悉不过了,为了防止恶意的登录,我们必须在登录页面加入验证码,...
881 0
一起谈.NET技术,【译】ASP.NET MVC并不仅仅只是Linq to SQL
  很多ASP.NET的教程中的示例代码使用的数据访问方法是Linq to Sql或是Entity Framework。我在www.asp.net的论坛上看到很多关于讨论是否有其他替代的数据库访问方式,回答是:当然有。
1050 0
+关注
12
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载