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

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 利用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。

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

是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。
相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
网络协议 机器人 中间件
单片机和FreeRTOS上跑机器人ROS的应用
单片机和FreeRTOS上跑机器人ROS的应用
51 0
|
11月前
|
弹性计算 Kubernetes Cloud Native
云原生之容器编排实践-SpringBoot应用以Deployment方式部署到minikube以及弹性伸缩
云原生之容器编排实践-SpringBoot应用以Deployment方式部署到minikube以及弹性伸缩
217 0
|
监控 开发者
ROS-使用样例模板部署应用|学习笔记
快速学习 ROS-使用样例模板部署应用
71 0
ROS-使用样例模板部署应用|学习笔记
|
弹性计算 Kubernetes 监控
在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩
上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用,并且已经成功地将一个包含了这个UI5应用的docker镜像上传到Docker hub上。 这篇文章作为这个主题的下半部分,将会介绍如何在Kubernetes里运行这个docker镜像。
106 0
在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩
|
Prometheus Kubernetes 监控
KubeVela + KEDA:为应用带来“与生俱来”的弹性伸缩能力
在这篇博文中,我们将简要解释需要考虑的领域,KEDA 如何使应用自动伸缩变得简单,以及为什么阿里云企业分布式应用服务(EDAS)在 KEDA 上完全标准化。
KubeVela + KEDA:为应用带来“与生俱来”的弹性伸缩能力
|
弹性计算 Kubernetes 容器
混合云K8s容器化应用弹性伸缩实战
混合云K8s容器化应用弹性伸缩实战
混合云K8s容器化应用弹性伸缩实战
|
弹性计算 Kubernetes 监控
SpringCloud 应用在 Kubernetes 上的最佳实践 —— 高可用(弹性伸缩)
关于如何用好弹性伸缩,一直是用户非常关心的问题,本文尝试围绕这个话题,给出一些相关的思考和优化实践。有两种实现弹性伸缩方法,一种是“垂直弹性”,即“Scale Up”,另一种是“水平弹性”,也就是“Scale Out”。
SpringCloud 应用在 Kubernetes 上的最佳实践 —— 高可用(弹性伸缩)
|
弹性计算 资源调度 分布式计算
YARN NodeLabel功能以及在EMR弹性伸缩中的应用
YARN Node Label功能最早是在Hadoop 2.6版本中引入,在后续版本中有更多的功能完善。到了Hadoop 2.8.x版本之后,该功能已经比较完整,可以满足日常使用。在本文中,我们需要将Node Label功能应用在EMR弹性伸缩场景中。 其实Node Label特性更准确的叫法是Node Partition,也就是说通过label把YARN集群中的节点分组,每个节点拥有一个l
2288 0
|
存储 数据采集 大数据
《机器人操作系统ROS原理与应用》——导读
随着2013年大数据元年的开启,各行各业都已经将大数据视为推动企业发展、推进行业进步、加快产业升级、促进民生繁荣、巩固社会安全甚至提升国家竞争力的核心武器。从个性化推荐、关联销售到精准营销,从云平台、云服务、云计算到大数据产业链,从百度迁徙、高考预测到冬季流感预测,从机器学习、图像识别到智能交通,从奥巴马总统竞选到美国中央情报局反恐,从美国的大数据研究和发展计划到中国的促进大数据发展行动纲要等一系列事实说明了大数据正受到来自政治、经济、社会、文化、军事等各个领域的广泛关注,并越来越彰显其巨大价值。
1831 0

推荐镜像

更多