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

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
云服务器(按量付费),48vCPU 186GiB
简介: 利用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
目录
相关文章
|
17天前
|
机器人 Python Windows
ROS机器人编程技术应用与实践
ROS机器人编程技术应用与实践
17 1
|
17天前
|
机器人 Unix C++
ROS机器人编程技术架构命令应用
ROS机器人编程技术架构命令应用
7 1
|
17天前
|
网络协议 机器人 中间件
单片机和FreeRTOS上跑机器人ROS的应用
单片机和FreeRTOS上跑机器人ROS的应用
113 0
|
9月前
|
弹性计算 Serverless 网络安全
Serverless应用引擎弹性伸缩实践
本场景将介绍如何使用SAE的定时弹性能力应对周期性流量洪峰。
361 0
Serverless应用引擎弹性伸缩实践
|
10月前
|
算法 C语言 C++
【ROS】服务通信、话题通信的应用
现在可以直接使用键盘来控制乌龟运动了
76 0
|
弹性计算 Kubernetes Cloud Native
云原生之容器编排实践-SpringBoot应用以Deployment方式部署到minikube以及弹性伸缩
云原生之容器编排实践-SpringBoot应用以Deployment方式部署到minikube以及弹性伸缩
220 0
|
监控 开发者
ROS-使用样例模板部署应用|学习笔记
快速学习 ROS-使用样例模板部署应用
79 0
ROS-使用样例模板部署应用|学习笔记
|
传感器 安全 Ubuntu
ROS中阶笔记(十):ROS机器人综合应用
ROS中阶笔记(十):ROS机器人综合应用
363 0
|
弹性计算 Kubernetes 监控
在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩
上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用,并且已经成功地将一个包含了这个UI5应用的docker镜像上传到Docker hub上。 这篇文章作为这个主题的下半部分,将会介绍如何在Kubernetes里运行这个docker镜像。
110 0
在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩
|
Prometheus Kubernetes 监控
KubeVela + KEDA:为应用带来“与生俱来”的弹性伸缩能力
在这篇博文中,我们将简要解释需要考虑的领域,KEDA 如何使应用自动伸缩变得简单,以及为什么阿里云企业分布式应用服务(EDAS)在 KEDA 上完全标准化。
KubeVela + KEDA:为应用带来“与生俱来”的弹性伸缩能力

推荐镜像

更多