阿里云高庆瑞:如何快速搭建低成本高弹性的云上应用

本文涉及的产品
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
轻量应用服务器 2vCPU 4GiB,适用于搭建容器环境
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
简介: 通过弹性伸缩,保证业务稳定性,同时降低成本

摘要:2022年8月16日,高效能,才经济 | 云上自动化运维CloudOps系列沙龙_第三弹正式开启,阿里云弹性计算技术专家高庆瑞作为第三弹中首位分享的讲师,为我们带来了题为“如何快速搭建低成本高弹性的云上应用”的主题分享,以下是他的演讲内容整理,本篇主要分为四个部分:

1.   云上应用资源选择

2.   云上应用搭建考虑因素

3.   弹性、稳定、低成本的云解决方案

4.   用户问答

图片1.jpg


01 云上应用资源选择


云上应用搭建需要考虑的因素主要有三个,即稳定性成本和弹性。其中,稳定性包括基础设施稳定性,应用稳定性,应用可观测性。

图片2.png


用户需要选择基础设施稳定的云平台,实例运营稳定,能够快速恢复。在应用可观测方面,用户可以借助云平台的监控数据和监控应用,保持应用的稳定性。


在成本方面,主要涉及实例规格、付费类型、资源管理。其中,付费类型决定了应用成本。即使是相同的实例,使用不同的付费类型,其成本也会有很大的差距。


由于稳定性和成本之间存在矛盾,用户为了提高服务的稳定性,需要增加更多的资源和机器,这就会导致成本上升。当应用面临负载突增的场景,稳定性会有所下降。弹性能够有效解决稳定性和成本之间的冲突。


02 云上应用搭建考虑因素

 

1.   实例选型

图片3.png


阿里云主要提供三类实例,即通用计算异构计算裸金属和高性能计算。用户需要根据应用特性,选择不同的实例。


如果应用是内存型数据库,用户可以选择内存型实例,避免资源不匹配,导致的资源浪费。裸金属和异构计算适用于对资源要求较高的应用场景,比如机器学习。


2.   付费方式

图片4.png


阿里云的付费方式有两种,分别是后付费预付费


后付费是指用户先使用实例,然后再进行计费。它又分为两类,即按量付费和抢占实例。其中,抢占实例能够有效减少应用的成本。

预付费是先计费,然后进行实际使用。


如上图所示,预付费包年包月的实例,不可以主动释放实例。按量实例和抢占式实例,用户可以主动释放实例。预留实例,通过按量实例抵扣的方式,提供优惠实例。


3.   Spot实例

图片5.png


Spot实例的价格是动态变化,用户根据Spot实例的变化出价。


如果用户的出价高于Spot实例的价格波动,实例就可以一直被使用。当Spot实例的价格高于用户出价,系统会释放释放实例。虽然Spot的实例价格比按量更便宜,但Spot存在系统回收、自动回收的风险,稳定性相对较差。


4.   低成本资源管理方案

图片6.png


应用的负载主要分为三个阶段。


第一阶段应用基本负载,使用包年包月、预留实例,主要支撑稳定的业务负载。


第二阶段应用日常高峰负载,使用按量实例,主要支撑有状态且动态变化的业务负载,保证服务稳定性,节约成本。当应用的负载高峰来临,通过动态扩容,按量实例,保证高峰期的弹性扩容,低峰期的弹性缩容。


第三个阶段突增负载,使用抢占式实例,支撑无状态且可容错的业务负载。用户可以通过抢占式实例,保证服务的稳定性,花更少的钱,体验更好的效果。


03 弹性、稳定、低成本的云解决方案


1.   弹性伸缩功能简介

图片7.png


如上图所示,右图展示了弹性伸缩的基本功能。左图展示了传统业务资源的运维场景。黑色线表示业务负载,它是动态变化的;绿的曲线表示资源的部署量。通过传统人为介入的方式进行资源部署。用户长期持有固定的资源。


当流量到达第一个点时,业务负载增长到高峰期,资源量覆盖了高峰期的流量,服务负载没有明显变化。在业务低峰期时,没有进行缩容。服务资源仍按照最大流量进行部署。当现业务负载出现突增,原本的资源部署量无法满足业务的负载需求,业务稳定性受到了影响。


传统人工介入模式,有三点弊端,即资源浪费、影响服务的稳定性、较高的人工运维成本


在上图的弹性伸缩模式中,黑色曲线表示业务负载,绿色曲线表示资源量。当业务负载突增,资源量增加,弹性扩容保证了服务的稳定性。当业务负载降低,通过弹性缩容,保证服务的稳定性,从而节约成本


相比传统方式,弹性伸缩的资源成本更低,没有明显的资源浪费场景。弹性伸缩服务的稳定性更强,即使在流量陡增的场景,也能保证服务的稳定性。除此之外,系统自动化管理,不需要人为介入,降低人工成本。


2.   伸缩必要条件

图片8.png


弹性伸缩必要的条件如上图所示,不是所有的应用都可以立刻接入弹性伸缩能力。弹性伸缩主要包括三个方面,即监控能力部署更新能力自服务能力


监控能力主要有三点,监控采集能力、指标聚合能力、监控告警能力。监控能力需要了解业务负载,CPU指标或QPS指标度量。监控告警能力是指,当CPU使用大于50%,触发事件,进行弹性扩缩容。


指标聚合能力需要按照应用进行聚合。如果私有云有100台机器,应用只使用了20台。在聚合指标时,只需要聚合应用的20台机器即可。除此之外,还可以把20台机器的CPU指标进行平均,从而实现具体的指标聚合。


当应用进行弹性伸缩,需要具备的部署更新能力,涉及三个核心指标。

第一,  了解应用的软件部署介质。比如镜像发布方式。


第二,了解自动化部署方式。在弹性扩容时,需要扩容实例,部署应用。


第三,应用自动化升级。当一个应用有十台机器,弹性扩容了两台。在应用部署时,除了部署的十台机器,还需要部署额外的两台。所以,用户需要额外考虑的应用部署升级能力。


在自服务能力方面,当弹性扩容之后,用户需要判断应用实例能不能正常对外提供服务。


当弹性扩容的一台实例,启动了一个web服务。但web服务没有挂载到对应的负载均衡上。此时,用户需要评估自己的服务,能否具备自服务的能力。服务外部是否依赖注册、应用实例是否具备自动注册和注销能力。


3.   弹性伸缩核心概念

图片9.png


通过阿里云弹性伸缩,圈定一批机器,通过伸缩组的实例,进行指标采集、实例部署。


伸缩配置主要有两点。在实例规格方面,实例配置,扩容实例需要额外的参数配置。如果需要进行管理,可以进行相关标记。


实例镜像方面,如果使用容器提供服务,可以指定应用镜像。从而保证弹性扩容实例,满足用户需求的同时,提供服务。


在伸缩规则和通知方面,当触发弹性伸缩之后,阿里云可以通知伸缩活动成功、失败,用户也可以拒绝实时通知。弹性伸缩对接了云监控系统事件和MNS主题队列。


在伸缩任务方面,主要有三种类型的伸缩任务,即定时任务、报警任务、自动或手动触发。


定时任务是指,在负载高峰期和低峰期有明显的时间规律。用户可以在高峰期来临之前,定时扩容;高峰期过后,定时缩容。


报警任务可以通过CPU或者QPS监控指标,进行动态扩缩。自动或手动触发扩缩容,进行动态扩容。


4.   伸缩模式

图片10.png


如上图所示,伸缩健康模式会释放或移出不健康的ECS实例,伸缩组对所有模式默认提供该能力。


伸缩固定模式会通过指定MinSize,保证固定数量的ECS实例。适合业务波动不大但有高可用要求的场景,一般与监控模式一起使用。


伸缩手工模式,会根据人工观察监控数据或者用户自有的监控系统,通过API手工伸缩ECS实例,手工执行伸缩规则。手工调整MinSize或MaxSize后,自动创建或释放ECS实例,将实例数量维持在Min到Max之间。


伸缩定时模式,根据配置定时,增加或减少ECS实例,如周五13:00:00。适合业务波动具有一定规律的场景。


伸缩动态模式,基于监控指标的负载情况,根据配置自动创建或释放ECS实例。适合业务波动没有明显规律的场景。当单机CPU>50%时,可以补偿一些实例,保证服务稳定性,降低单机负载。


5.   伸缩规则

图片11.png


当一个事件触发扩容或缩容时,如何扩缩?


如上图所示,普通伸缩规则是指,假设当CPU大于20%时,扩容四台。由于没有达到满足业务负载事务需求,机器负载持续升高,扩容不断升高。


步进伸缩规则通过定义扩容的触发阈值,不同阈值会触发不同的扩容动作。


目标追踪伸缩规则是把CPU维持在50%。假如业务负载突增,系统计算出下个点需要扩容,二十多台机器。根据目标追踪伸缩规则会一次性扩容二十多台,从而快速应对突发流量场景。


6.   伸缩模式最佳实践

图片12.png


接下来,介绍一下针对于不同应用场景,选择不同的伸缩模式。


当出现高低峰比较固定的应用场景,用户可以使用定时模式,根据配置定时地增加或减少ECS实例,如周五13:00:00。


对于高稳定性,应对突发流量的应用场景,用户可以使用保护和动态模式,手动添加包年包月实例,确保业务基座。当业务负载突增时,通过动态伸缩的方式,补偿齐一些资源,保证服务的稳定性。当服务有突发流量时,充分保证服务资源。


如果用户对成本要求较高,可以通过使用按量实例,动态伸缩的方式,配置自己的策略。基于云监控指标负载情况,比如CPU使用率,根据配置自动伸缩。


对于负载高低峰相对稳定的突发场景,用户可以在定时配置进行扩缩容的基础上,根据监控指标动态进一步调整ECS实例数。


7.   成本优化最佳实践

图片13.png


当实例资源有了动态生存的能力,如何扩容实例?如上图所示,最理想的方式是,底座是包年包月的实例,保证服务稳定性。当服务高峰期来临,按量使用的相对于Spot实例更稳定。它的成本相对较低,稳定性较高。


8.   客户案例

图片14.png


作为全球性技术平台,汇量科技Mobvista致力于推动数字时代的全球商业增长。着力打造为企业增长赋能的“SaaS工具生态”,助力企业在全球范围内的增长。


由于汇量科技的广告业务量较大,资源需求较大,对稳定性的要求较高。为了满足客户在资源需求量足够大的场景下,保证资源低成本的需求。


阿里云通过使用弹性伸缩,按量付费、Spot组合的方式满足了客户需求。通过自动补偿方案,保证了服务稳定性,降低了资源成本30%到40%。自动补偿是指,当Spot实例被回收时,弹性伸缩感知到Spot被回收,自动补偿一个按量实例替代Spot,进一步保证服务的稳定性。


04 Q&A环节,用户问答


Q1 K8s三个节点如何降低成本?

答:如果只用了三个节点搭建K8s集群,需要进一步节省成本,可以在选择节点时,选择低配节点、低配规格。付费方式尽可能选择Spot实例。


Q2 如何在高可用和低成本之间,找到一个最契合的点?

答:大家需要结合应用特性,在应用的稳定性和成本之间,进行取舍;结合自身的业务,进行评估。


Q3 如何应对业务变化,导致资源的弹性需求?

答:配置一些简单的告警规则,建议使用阿里云的弹性产品。如果自己搭建弹性伸缩应用,成本是很高的。


点击这里,查看云上自动化运维CloudOps系列沙龙精彩回放合集&讲师资料下载。

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
iOS开发 Swift Perl
[快速学会Swift第三方库] Eureka篇
[快速学会Swift第三方库] Eureka篇 Eureka可以帮你简单优雅的实现动态table-view表单。它由rows,sections和forms组成。如果你的app包含大量表单,Eureka可以真正帮你节省时间。 目录 快速学会Swift第三方库 Eureka篇 目录 编码之前 导入 Eureka 其他操作 创建表单 基础表单 选择类型表
3419 0
|
存储 网络安全 数据安全/隐私保护
Docker harbor私有仓库部署与管理-2
Docker harbor私有仓库部署与管理
300 0
|
机器学习/深度学习 存储 PyTorch
PyTorch自定义学习率调度器实现指南
本文将详细介绍如何通过扩展PyTorch的 ``` LRScheduler ``` 类来实现一个具有预热阶段的余弦衰减调度器。我们将分五个关键步骤来完成这个过程。
639 2
|
11月前
|
运维 Java Serverless
Serverless 微服务治理神器: 阿里云 SAE 全链路灰度揭秘
SAE 会继续致力于为用户提供极简易用、成本低廉、功能强大的 Serverless 应用全托管平台:“我们希望让用户做的更少而收获更多,通过 Serverless 化,深度用云就像用水电煤一样简单”。
1667 54
|
11月前
|
人工智能 自动驾驶
预告 | 阿里云邀您参加2024中国生成式AI大会上海站,马上报名
2024年12月5-6日,中国生成式AI大会(上海站)将在上海中星铂尔曼大酒店举行。大会以“智能跃进 创造无限”为主题,设置主会场峰会、分会场研讨会及展览区,聚焦大模型、AI Infra等热点议题。阿里云智算集群产品解决方案负责人丛培岩将出席并发表《高性能智算集群设计思考与实践》主题演讲。观众报名现已开放。
|
SQL 人工智能 机器人
AskYourDatabase - 和你的数据库对话
在日益增长的需求下,AI与SQL数据库的有效集成成为关键技术。本文聚焦三大核心点:一是明确应用场景,例如采用AskYourDatabase快速部署SQL聊天机器人;二是选用GPT-4级模型以保障高质量体验;三是高效检索数据库模式,确保在有限上下文中提供精准信息。此外,利用函数调用与代码解释功能生成及执行SQL查询,并实施严格的数据访问控制以保障安全性。通过这些方法,可顺利实现AI与SQL数据库的成功集成。
AskYourDatabase - 和你的数据库对话
|
运维 监控 JavaScript
【阿里云云原生专栏】Serverless架构下的应用部署与运维:阿里云Function Compute深度探索
【5月更文挑战第21天】阿里云Function Compute是事件驱动的无服务器计算服务,让用户无需关注基础设施,专注业务逻辑。本文详述了在FC上部署应用的步骤,包括创建函数、编写代码和部署,并介绍了运维功能:监控告警、日志管理、版本管理和授权管理,提供高效低成本的计算服务。
506 6
|
Web App开发 人工智能 Java
Python Selenium实现自动化测试及Chrome驱动使用
Python Selenium实现自动化测试及Chrome驱动使用
442 2
|
开发框架 Linux 开发者
深入了解Python游戏开发模块:pyglet
深入了解Python游戏开发模块:pyglet
328 0
|
开发者 异构计算 容器
NRI - 在容器的生命周期焊接“芯片”
个人调研containerd 1.7版本新特性NRI,欢迎指正
722 1

热门文章

最新文章