有没有办法根据为自动扩展组的多个实例中的单个实例收集的指标来决定自动扩展组的扩展活动?
我尝试根据实例的警报集进行扩展,该实例是自动缩放组的多个实例之一,但是当我尝试在实例的 cloudwatch 警报下配置自动缩放时,自动缩放组不显示。
如下图所示,自动缩放组未列出。
有没有办法根据为自动扩展组的多个实例中的单个实例收集的指标来决定自动扩展组的扩展活动?
我尝试根据实例的警报集进行扩展,该实例是自动缩放组的多个实例之一,但是当我尝试在实例的 cloudwatch 警报下配置自动缩放时,自动缩放组不显示。
如下图所示,自动缩放组未列出。
Auto Scaling 提供了一种添加和删除(横向扩展和缩减)Amazon EC2 实例的方法。它通过启动新实例和终止实例来工作。
可以通过执行Scaling Policy来扩展 Auto Scaling 组,该策略告诉 Auto Scaling 是添加还是删除实例,以及实例数量——例如 +1、-1、+50%。
扩展策略可以由Amazon CloudWatch 警报、计划或通过 API/CLI 调用手动触发。
从 Amazon CloudWatch 触发扩展策略时,指标将基于 Auto Scaling 组的聚合——例如,平均 CPU 利用率或最大网络输出。这些指标是根据整个 Auto Scaling 组计算的,而不是单个实例。这是有道理的——想象一个 Auto Scaling 组有两个实例,其中一个是 100% CPU,另一个是 0% CPU。平均而言,它们的 CPU 使用率为 50%,因此无需扩展。将扩展操作基于单个实例的指标是没有意义的。
因此,为了回答您的问题,您如何根据为自动扩展组的多个实例中的单个实例收集的指标来决定自动扩展组的扩展活动?您创建一个触发单个实例指标的Amazon CloudWatch 警报。警报可以触发Amazon SNS 主题,您可以编写订阅该主题的AWS Lambda 函数。然后,您的 Lambda 函数可以触发更改 Auto Scaling 组的所需容量的扩展策略。
但是,我建议反对这个想法。例如,Auto Scaling 可以决定缩减并可能删除您专门监控的实例。您的 Auto Scaling 组将不再扩展。此外,一个实例不太可能代表整个 Auto Scaling 组的工作级别。最好根据考虑到 Auto Scaling 组中所有实例的指标进行扩展,或者对正在完成或等待工作的“工作”量的某种度量,例如包含工作的 Amazon SQS 队列的大小被处理。
约翰的回答是正确的,针对您的问题提出了建议和可能的解决方案。
由于声誉限制,我无法对 John 的回答发表评论以添加详细信息。
有没有办法根据为自动扩展组的多个实例中的单个实例收集的指标来决定自动扩展组的扩展活动?
您将在多个实例中扩展/扩展单个实例的场景可能表明您需要将该实例中运行的服务分离到单独的集群中,并且您可以为该实例创建不同的扩展策略新集群的自动缩放组。
但是,您想要在该特定实例中扩展/扩展的原因是为在该实例上运行的特定服务提供更多资源吗?如果是,您可以自动扩展/缩减服务,然后让服务所属集群的自动扩展组的扩展策略决定是否需要扩展/扩展集群。否则,约翰是对的。