摘要:2022 年 8 月 16 日,高效能,才经济 | 云上自动化运维 CloudOps 系列沙龙_第三弹正式开启,阿里云弹性计算技术专家高庆瑞作为第三弹中首位分享的讲师,为我们带来了题为“如何快速搭建低成本高弹性的云上应用”的主题分享,以下是他的演讲内容整理,本篇主要分为四个部分:
1. 云上应用资源选择
2. 云上应用搭建考虑因素
3. 弹性、稳定、低成本的云解决方案
4. 用户问答
01 云上应用资源选择
云上应用搭建需要考虑的因素主要有三个,即稳定性、成本和弹性。其中,稳定性包括基础设施稳定性,应用稳定性,应用可观测性。
用户需要选择基础设施稳定的云平台,实例运营稳定,能够快速恢复。在应用可观测方面,用户可以借助云平台的监控数据和监控应用,保持应用的稳定性。
在成本方面,主要涉及实例规格、付费类型、资源管理。其中,付费类型决定了应用成本。即使是相同的实例,使用不同的付费类型,其成本也会有很大的差距。
由于稳定性和成本之间存在矛盾,用户为了提高服务的稳定性,需要增加更多的资源和机器,这就会导致成本上升。当应用面临负载突增的场景,稳定性会有所下降。弹性能够有效解决稳定性和成本之间的冲突。
02 云上应用搭建考虑因素
1. 实例选型
阿里云主要提供三类实例,即通用计算、异构计算、裸金属和高性能计算。用户需要根据应用特性,选择不同的实例。
如果应用是内存型数据库,用户可以选择内存型实例,避免资源不匹配,导致的资源浪费。裸金属和异构计算适用于对资源要求较高的应用场景,比如机器学习。
2. 付费方式
阿里云的付费方式有两种,分别是后付费和预付费。
◾ 后付费是指用户先使用实例,然后再进行计费。它又分为两类,即按量付费和抢占实例。其中,抢占实例能够有效减少应用的成本。
◾ 预付费是先计费,然后进行实际使用。
如上图所示,预付费包年包月的实例,不可以主动释放实例。按量实例和抢占式实例,用户可以主动释放实例。预留实例,通过按量实例抵扣的方式,提供优惠实例。
3. Spot 实例
Spot 实例的价格是动态变化,用户根据 Spot 实例的变化出价。
如果用户的出价高于 Spot 实例的价格波动,实例就可以一直被使用。当 Spot 实例的价格高于用户出价,系统会释放释放实例。虽然 Spot 的实例价格比按量更便宜,但 Spot 存在系统回收、自动回收的风险,稳定性相对较差。
4. 低成本资源管理方案
应用的负载主要分为三个阶段。
◾ 第一阶段应用基本负载,使用包年包月、预留实例,主要支撑稳定的业务负载。
◾ 第二阶段应用日常高峰负载,使用按量实例,主要支撑有状态且动态变化的业务负载,保证服务稳定性,节约成本。当应用的负载高峰来临,通过动态扩容,按量实例,保证高峰期的弹性扩容,低峰期的弹性缩容。
◾ 第三个阶段突增负载,使用抢占式实例,支撑无状态且可容错的业务负载。用户可以通过抢占式实例,保证服务的稳定性,花更少的钱,体验更好的效果。
03 弹性、稳定、低成本的云解决方案
1. 弹性伸缩功能简介
如上图所示,右图展示了弹性伸缩的基本功能。左图展示了传统业务资源的运维场景。黑色线表示业务负载,它是动态变化的;绿的曲线表示资源的部署量。通过传统人为介入的方式进行资源部署。用户长期持有固定的资源。
当流量到达第一个点时,业务负载增长到高峰期,资源量覆盖了高峰期的流量,服务负载没有明显变化。在业务低峰期时,没有进行缩容。服务资源仍按照最大流量进行部署。当现业务负载出现突增,原本的资源部署量无法满足业务的负载需求,业务稳定性受到了影响。
传统人工介入模式,有三点弊端,即资源浪费、影响服务的稳定性、较高的人工运维成本。
在上图的弹性伸缩模式中,黑色曲线表示业务负载,绿色曲线表示资源量。当业务负载突增,资源量增加,弹性扩容保证了服务的稳定性。当业务负载降低,通过弹性缩容,保证服务的稳定性,从而节约成本。
相比传统方式,弹性伸缩的资源成本更低,没有明显的资源浪费场景。弹性伸缩服务的稳定性更强,即使在流量陡增的场景,也能保证服务的稳定性。除此之外,系统自动化管理,不需要人为介入,降低人工成本。
2. 伸缩必要条件
弹性伸缩必要的条件如上图所示,不是所有的应用都可以立刻接入弹性伸缩能力。弹性伸缩主要包括三个方面,即监控能力、部署更新能力、自服务能力。
监控能力主要有三点,监控采集能力、指标聚合能力、监控告警能力。监控能力需要了解业务负载,CPU 指标或 QPS 指标度量。监控告警能力是指,当 CPU 使用大于 50%,触发事件,进行弹性扩缩容。
指标聚合能力需要按照应用进行聚合。如果私有云有 100 台机器,应用只使用了 20 台。在聚合指标时,只需要聚合应用的 20 台机器即可。除此之外,还可以把 20 台机器的 CPU 指标进行平均,从而实现具体的指标聚合。
当应用进行弹性伸缩,需要具备的部署更新能力,涉及三个核心指标。
第一, 了解应用的软件部署介质。比如镜像发布方式。
第二,了解自动化部署方式。在弹性扩容时,需要扩容实例,部署应用。
第三,应用自动化升级。当一个应用有十台机器,弹性扩容了两台。在应用部署时,除了部署的十台机器,还需要部署额外的两台。所以,用户需要额外考虑的应用部署升级能力。
在自服务能力方面,当弹性扩容之后,用户需要判断应用实例能不能正常对外提供服务。
当弹性扩容的一台实例,启动了一个 web 服务。但 web 服务没有挂载到对应的负载均衡上。此时,用户需要评估自己的服务,能否具备自服务的能力。服务外部是否依赖注册、应用实例是否具备自动注册和注销能力。
3. 弹性伸缩核心概念
通过阿里云弹性伸缩,圈定一批机器,通过伸缩组的实例,进行指标采集、实例部署。
伸缩配置主要有两点。在实例规格方面,实例配置,扩容实例需要额外的参数配置。如果需要进行管理,可以进行相关标记。
在实例镜像方面,如果使用容器提供服务,可以指定应用镜像。从而保证弹性扩容实例,满足用户需求的同时,提供服务。
在伸缩规则和通知方面,当触发弹性伸缩之后,阿里云可以通知伸缩活动成功、失败,用户也可以拒绝实时通知。弹性伸缩对接了云监控系统事件和 MNS 主题队列。
在伸缩任务方面,主要有三种类型的伸缩任务,即定时任务、报警任务、自动或手动触发。
定时任务是指,在负载高峰期和低峰期有明显的时间规律。用户可以在高峰期来临之前,定时扩容;高峰期过后,定时缩容。
报警任务可以通过 CPU 或者 QPS 监控指标,进行动态扩缩。自动或手动触发扩缩容,进行动态扩容。
4. 伸缩模式
如上图所示,伸缩健康模式会释放或移出不健康的 ECS 实例,伸缩组对所有模式默认提供该能力。
伸缩固定模式会通过指定 MinSize,保证固定数量的 ECS 实例。适合业务波动不大但有高可用要求的场景,一般与监控模式一起使用。
伸缩手工模式,会根据人工观察监控数据或者用户自有的监控系统,通过 API 手工伸缩 ECS 实例,手工执行伸缩规则。手工调整 MinSize 或 MaxSize 后,自动创建或释放 ECS 实例,将实例数量维持在 Min 到 Max 之间。
伸缩定时模式,根据配置定时,增加或减少 ECS 实例,如周五 13:00:00。适合业务波动具有一定规律的场景。
伸缩动态模式,基于监控指标的负载情况,根据配置自动创建或释放 ECS 实例。适合业务波动没有明显规律的场景。当单机 CPU>50%时,可以补偿一些实例,保证服务稳定性,降低单机负载。
5. 伸缩规则
当一个事件触发扩容或缩容时,如何扩缩?
如上图所示,普通伸缩规则是指,假设当 CPU 大于 20%时,扩容四台。由于没有达到满足业务负载事务需求,机器负载持续升高,扩容不断升高。
步进伸缩规则通过定义扩容的触发阈值,不同阈值会触发不同的扩容动作。
目标追踪伸缩规则是把 CPU 维持在 50%。假如业务负载突增,系统计算出下个点需要扩容,二十多台机器。根据目标追踪伸缩规则会一次性扩容二十多台,从而快速应对突发流量场景。
6. 伸缩模式最佳实践
接下来,介绍一下针对于不同应用场景,选择不同的伸缩模式。
当出现高低峰比较固定的应用场景,用户可以使用定时模式,根据配置定时地增加或减少 ECS 实例,如周五 13:00:00。
对于高稳定性,应对突发流量的应用场景,用户可以使用保护和动态模式,手动添加包年包月实例,确保业务基座。当业务负载突增时,通过动态伸缩的方式,补偿齐一些资源,保证服务的稳定性。当服务有突发流量时,充分保证服务资源。
如果用户对成本要求较高,可以通过使用按量实例,动态伸缩的方式,配置自己的策略。基于云监控指标负载情况,比如 CPU 使用率,根据配置自动伸缩。
对于负载高低峰相对稳定的突发场景,用户可以在定时配置进行扩缩容的基础上,根据监控指标动态进一步调整 ECS 实例数。
7. 成本优化最佳实践
当实例资源有了动态生存的能力,如何扩容实例?如上图所示,最理想的方式是,底座是包年包月的实例,保证服务稳定性。当服务高峰期来临,按量使用的相对于 Spot 实例更稳定。它的成本相对较低,稳定性较高。
8. 客户案例
作为全球性技术平台,汇量科技 Mobvista 致力于推动数字时代的全球商业增长。着力打造为企业增长赋能的“SaaS 工具生态”,助力企业在全球范围内的增长。
由于汇量科技的广告业务量较大,资源需求较大,对稳定性的要求较高。为了满足客户在资源需求量足够大的场景下,保证资源低成本的需求。
阿里云通过使用弹性伸缩,按量付费、Spot 组合的方式满足了客户需求。通过自动补偿方案,保证了服务稳定性,降低了资源成本 30%到 40%。自动补偿是指,当 Spot 实例被回收时,弹性伸缩感知到 Spot 被回收,自动补偿一个按量实例替代 Spot,进一步保证服务的稳定性。
04 Q&A 环节,用户问答
Q1 K8s 三个节点如何降低成本?
答:如果只用了三个节点搭建 K8s 集群,需要进一步节省成本,可以在选择节点时,选择低配节点、低配规格。付费方式尽可能选择 Spot 实例。
Q2 如何在高可用和低成本之间,找到一个最契合的点?
答:大家需要结合应用特性,在应用的稳定性和成本之间,进行取舍;结合自身的业务,进行评估。
Q3 如何应对业务变化,导致资源的弹性需求?
答:配置一些简单的告警规则,建议使用阿里云的弹性产品。如果自己搭建弹性伸缩应用,成本是很高的。
点击这里,查看云上自动化运维 CloudOps 系列沙龙精彩回放合集 &讲师资料下载。