如何使用aws autoscaling基于自动缩放组的单个实例进行缩放?
How to use aws autoscaling to scale based on a single instance of a autoscaling group?
有没有办法根据为自动缩放组的多个实例中的单个实例收集的指标来决定自动缩放组的缩放activity?
我尝试根据实例的警报设置进行扩展,该实例是自动缩放组的多个实例之一,但是当我尝试在实例的 cloudwatch 警报下配置自动缩放时,自动缩放组没有不要出现。
如下图所示,未列出自动缩放组。
Auto Scaling 提供了一种添加和删除(向外扩展和向内扩展)Amazon EC2 实例的方法。它通过启动新实例和终止实例。
来工作
Auto Scaling 组可以通过执行 扩展策略 来扩展,该策略告诉 Auto Scaling 是否添加或删除实例,以及数量——例如 +1、-1、 +50%.
扩展策略可以通过 Amazon CloudWatch 警报、计划 或手动 通过 API/CLI 电话。
从 Amazon CloudWatch 触发扩展策略时,指标将基于 Auto Scaling 组的聚合——例如,平均值CPU 利用率 或 最大网络输出。这些指标 从整个 Auto Scaling 组 计算得出,而不是单个实例。这是有道理的——想象一个 Auto Scaling 组有两个实例,其中一个为 100% CPU,另一个为 0% CPU。平均而言,它们是 50% CPU,因此无需缩放。将缩放操作基于单个实例的指标是没有意义的。
因此,为了回答您的问题,您如何根据为自动缩放组的多个实例中的单个实例收集的指标来决定自动缩放组的缩放 activity? 您创建了一个 Amazon CloudWatch 警报 触发单个实例的指标。警报可以触发 Amazon SNS 主题,您可以编写一个 AWS Lambda 函数 来订阅该主题。然后,您的 Lambda 函数可以触发更改 Auto Scaling 组的 Desired Capacity 的扩展策略。
但是,我反对这个想法。例如,Auto Scaling 可以决定缩减并可能删除您专门监控的实例。您的 Auto Scaling 组将不再扩展。此外,一个实例不太可能代表整个 Auto Scaling 组的工作水平。最好根据考虑到 Auto Scaling 组中所有实例的指标进行扩展,或者根据 'work' 正在完成或正在等待工作的量的某种度量,例如 的大小包含要处理的工作的 Amazon SQS 队列。
John 的回答是正确的,并为您的问题提供了建议和可能的解决方案。
由于声誉限制,我无法对 John 的回答发表评论以添加详细信息。
Is there a way to decide on the scaling activity of an autoscaling group based on metrics collected for a single instance among the multiple instances of an autoscaling group?
您将在多个实例中扩展 in/out 单个实例的场景可能表明您需要将该实例中的服务 运行 分离到一个单独的集群中,并且这样您就可以为新集群的自动缩放组创建不同的缩放策略。
但是,您要扩展 out/in 特定实例的原因是为了为该实例上的特定服务 运行 提供更多资源吗?如果是,您可以 autoscale up/down your service 然后让服务所属集群的自动缩放组的缩放策略决定是否需要缩放 in/out 集群。否则,约翰是对的。
有没有办法根据为自动缩放组的多个实例中的单个实例收集的指标来决定自动缩放组的缩放activity?
我尝试根据实例的警报设置进行扩展,该实例是自动缩放组的多个实例之一,但是当我尝试在实例的 cloudwatch 警报下配置自动缩放时,自动缩放组没有不要出现。
如下图所示,未列出自动缩放组。
Auto Scaling 提供了一种添加和删除(向外扩展和向内扩展)Amazon EC2 实例的方法。它通过启动新实例和终止实例。
来工作Auto Scaling 组可以通过执行 扩展策略 来扩展,该策略告诉 Auto Scaling 是否添加或删除实例,以及数量——例如 +1、-1、 +50%.
扩展策略可以通过 Amazon CloudWatch 警报、计划 或手动 通过 API/CLI 电话。
从 Amazon CloudWatch 触发扩展策略时,指标将基于 Auto Scaling 组的聚合——例如,平均值CPU 利用率 或 最大网络输出。这些指标 从整个 Auto Scaling 组 计算得出,而不是单个实例。这是有道理的——想象一个 Auto Scaling 组有两个实例,其中一个为 100% CPU,另一个为 0% CPU。平均而言,它们是 50% CPU,因此无需缩放。将缩放操作基于单个实例的指标是没有意义的。
因此,为了回答您的问题,您如何根据为自动缩放组的多个实例中的单个实例收集的指标来决定自动缩放组的缩放 activity? 您创建了一个 Amazon CloudWatch 警报 触发单个实例的指标。警报可以触发 Amazon SNS 主题,您可以编写一个 AWS Lambda 函数 来订阅该主题。然后,您的 Lambda 函数可以触发更改 Auto Scaling 组的 Desired Capacity 的扩展策略。
但是,我反对这个想法。例如,Auto Scaling 可以决定缩减并可能删除您专门监控的实例。您的 Auto Scaling 组将不再扩展。此外,一个实例不太可能代表整个 Auto Scaling 组的工作水平。最好根据考虑到 Auto Scaling 组中所有实例的指标进行扩展,或者根据 'work' 正在完成或正在等待工作的量的某种度量,例如 的大小包含要处理的工作的 Amazon SQS 队列。
John 的回答是正确的,并为您的问题提供了建议和可能的解决方案。
由于声誉限制,我无法对 John 的回答发表评论以添加详细信息。
Is there a way to decide on the scaling activity of an autoscaling group based on metrics collected for a single instance among the multiple instances of an autoscaling group?
您将在多个实例中扩展 in/out 单个实例的场景可能表明您需要将该实例中的服务 运行 分离到一个单独的集群中,并且这样您就可以为新集群的自动缩放组创建不同的缩放策略。
但是,您要扩展 out/in 特定实例的原因是为了为该实例上的特定服务 运行 提供更多资源吗?如果是,您可以 autoscale up/down your service 然后让服务所属集群的自动缩放组的缩放策略决定是否需要缩放 in/out 集群。否则,约翰是对的。