伸缩组是弹性伸缩的核心组件,用于管理一组拥有相同应用场景和实例类型的服务实例。通过伸缩组,您可以快速地横向扩展集群中的实例。此外,伸缩组还可以根据您的业务需求动态调整实例的数量,帮助您有效降低成本。
为什么使用伸缩组
快速横向扩展(高可用)
您可以通过使用伸缩组快速横向扩展您的服务集群,通过增加服务的数量提升您的集群承载能力。
控制成本
服务集群横向扩展意味着需要维持更多的计算资源,从而使成本增加,但是您的业务不是在任何时间都处于满负载状态,您可以根据实际的需求,利用云计算的弹性能力,在计算资源需求下降时减少资源的投入,从而控制成本。
支持的伸缩方案
方案一:保持固定数量且可用的实例
适用场景:在不伸缩时,维持集群的高可用。
实现方式:为伸缩组开启实例健康检查和期望实例数。
在开启伸缩组实例健康检查后,伸缩组会自动移除伸缩组中不健康的实例。如果目前实例数小于期望实例数,会自动触发扩容,保证伸缩组中始终有固定数量且可用的实例。
举例说明
例如您期望集群可用业务服务数量为10,您可以为伸缩组设置期望实例数为10,伸缩组会自动触发伸缩活动来维持可用服务数量为10。
方案二:定时自动伸缩
适用场景:业务规律波动,即业务集群资源占用随时间规律波动。
实现方式:通过为伸缩组设置定时任务实现定时扩缩容。
在业务集群资源占用升高的时间点,通过定时任务触发扩张。相反的,在资源占用降低的时间点,通过定时任务触发收缩。完整步骤,请参见定时自动扩缩容ECS实例。
举例说明
例如您的业务集群在每天傍晚7点时访问量增加,在凌晨1点时降低,为了应对业务访问需求的变化,您可以设置以下两个定时任务。
应对访问量增加:设置傍晚7点的定时扩展任务,在每天傍晚7点,通过增加服务副本数提升集群的承载能力。
应对访问量减少:设置凌晨1点的定时收缩任务,在每天凌晨1点,通过减少服务副本数从而提高资源利用率,减少不必要的成本支出。
方案三:通过资源占用阈值伸缩(CPU占用率、内存占用率等)
适用场景:突发业务波动场景。资源占用达到某个阈值时触发伸缩。
实现方式
集群资源占用率达到阈值时触发扩缩容(报警任务)
您可以为伸缩组设置报警任务,在资源占用达到阈值后触发报警,然后进行扩缩容活动。
期望集群资源占用率维持在目标值(目标追踪规则)
您可以为伸缩组设置目标追踪规则,实现将伸缩组的资源占用维持在目标值附近。
举例说明
为ECS伸缩组创建一个目标追踪规则,设置平均CPU占用率的目标值为80%,伸缩组会自动通过添加或删除实例来将伸缩组平均CPU占用率维持在80%附近。
两种实现方式的区别
报警任务方案更加灵活和自定义。可以控制在触发报警后增加/减少多少台实例,也可以根据资源占用的阶梯变化灵活设置扩缩容的数量。
目标追踪规则配置更加简单,只需关注需要将资源占用率维持在哪个数值。
方案四:自定义伸缩(手动伸缩)
如果前几种方案都不满足您的需求,您可以通过该方案实现自定义的伸缩方案。
伸缩组支持通过手动执行伸缩规则、手动修改实例数的方式触发扩缩容活动。完整操作,请参见手动一键扩缩容ECS实例。
手动伸缩的方式支持API调用,您可以结合实际业务,通过编写程序调用API自定义伸缩方案。
方案五:预测性伸缩
除了前几种方案以外,伸缩组还提供预测未来资源需求自动伸缩的功能。
该方案通过配置预测规则的方式实现,您可以先使用只预测不伸缩的方式判断预测的准确性和适用性,如果预测结果满足您的需求,您可以为该预测规则开启预测并伸缩,开启此选项后,预测规则会根据预测产生的定时计划自动创建预测任务,完成自动扩缩容。具体操作,请参见查看预测规则效果。
注意事项
在使用伸缩组之前,请先确保您实例内部署的业务支持横向扩展。
弹性伸缩是以横向扩展的方式扩展实例,因此,您需要考虑在您的实例横向扩展时是否会对您的集群业务造成影响。
数据一致性问题
如果您的数据库都在实例中部署,横向扩展时可能会遇到数据不一致的问题。为了解决这一问题,建议调整架构设计,例如将数据库独立部署,让所有实例共享同一个数据库,从而实现服务的无状态化。
数据安全
考虑到伸缩组中的实例会自动创建和释放,如果在这些实例中存储了数据,请确保实施适当的数据备份措施以保障数据安全。