Amazon ec2 如何使用云形成或AWS CLI向自动缩放组添加缩放策略
如何使用Cloud Formation或AWS CLI向新的或现有的自动缩放组添加缩放策略这方面有很多重要的示例,但下面是我现有的一个Cloud Formation模板的片段 1)参数 您应该将最小值和最大值作为参数 2)自动缩放组本身 我在下面包括它,但是如果你不想包括它,你可以把它作为一个参数。您还可以使用一个条件,该条件可以使用参数的现有值作为确定是否应创建ASG的条件。请注意,如果您确实使用了该条件,那么您还将在带有in语句的所有引用上使用该条件(以确定是使用本地ASG in模板还是参数) 3)警报 这是自动秤组的关键元素-确定报警。我使用集群的内存保留,但我认为CPU是最常见的。您可以使用任何度量cloudwatch监视器,甚至自定义度量 4)政策 我现在快速地上下反应…一个新实例需要30-60秒才能产生影响,这就是为什么我在事件之间有120秒。您需要了解您的系统,以正确选择适当的数量,避免过度缩放Amazon ec2 如何使用云形成或AWS CLI向自动缩放组添加缩放策略,amazon-ec2,amazon-cloudformation,autoscaling,Amazon Ec2,Amazon Cloudformation,Autoscaling,如何使用Cloud Formation或AWS CLI向新的或现有的自动缩放组添加缩放策略这方面有很多重要的示例,但下面是我现有的一个Cloud Formation模板的片段 1)参数 您应该将最小值和最大值作为参数 2)自动缩放组本身 我在下面包括它,但是如果你不想包括它,你可以把它作为一个参数。您还可以使用一个条件,该条件可以使用参数的现有值作为确定是否应创建ASG的条件。请注意,如果您确实使用了该条件,那么您还将在带有in语句的所有引用上使用该条件(以确定是使用本地ASG in模板还是参数
ECSClusterAutoScalingGroup:
Type: 'AWS::AutoScaling::AutoScalingGroup'
Condition: notDedicated
Properties:
VPCZoneIdentifier:
- 'Fn::ImportValue': !Sub '${VPC}-PrivateSubnet1'
- 'Fn::ImportValue': !Sub '${VPC}-PrivateSubnet2'
- 'Fn::ImportValue': !Sub '${VPC}-PrivateSubnet3'
MinSize: !Ref MinSize
MaxSize: !Ref MaxSize
HealthCheckGracePeriod: '600'
HealthCheckType: EC2
LaunchConfigurationName: !Ref ECSLaunchConfiguration
MetricsCollection:
- Granularity: 1Minute
ECSClusterScaleOutPolicy:
Type: 'AWS::AutoScaling::ScalingPolicy'
Condition: AutoScaleNotDedicated
Properties:
AdjustmentType: ChangeInCapacity
AutoScalingGroupName: !Ref ECSClusterAutoScalingGroup
Cooldown: '120'
ScalingAdjustment: '1'
ECSClusterScaleOutAlarm:
Type: 'AWS::CloudWatch::Alarm'
Condition: AutoScaleNotDedicated
Properties:
EvaluationPeriods: '1'
Statistic: Average
Threshold: '70'
AlarmDescription: Scale up alarm when Memory Reservation > 70% for 1 minute
Period: '60'
AlarmActions:
- !Ref ECSClusterScaleOutPolicy
Namespace: AWS/ECS
Dimensions:
- Name: ClusterName
Value: !Ref ECSCluster
ComparisonOperator: GreaterThanThreshold
MetricName: MemoryReservation
ECSClusterScaleInPolicy:
Type: 'AWS::AutoScaling::ScalingPolicy'
Condition: AutoScaleNotDedicated
Properties:
AdjustmentType: ChangeInCapacity
AutoScalingGroupName: !Ref ECSClusterAutoScalingGroup
Cooldown: '120'
ScalingAdjustment: '-1'
ECSClusterScaleInAlarm:
Type: 'AWS::CloudWatch::Alarm'
Condition: AutoScaleNotDedicated
Properties:
EvaluationPeriods: '1'
Statistic: Average
Threshold: '45'
AlarmDescription: Scale down alarm when Memory Reservation <= 45% for 5 minutes
Period: '300'
AlarmActions:
- !Ref ECSClusterScaleInPolicy
Namespace: AWS/ECS
Dimensions:
- Name: ClusterName
Value: !Ref ECSCluster
ComparisonOperator: LessThanOrEqualToThreshold
MetricName: MemoryReservation
ECSClusterAutoScalingGroup:
类型:“AWS::AutoScaling::AutoScalingGroup”
条件:不专用
特性:
VPCZoneIdentifier:
-'Fn::ImportValue':!子“${VPC}-私有子网1”
-'Fn::ImportValue':!子“${VPC}-私有子网2”
-'Fn::ImportValue':!子“${VPC}-私有子网3”
MinSize:!Ref MinSize
最大尺寸:!参考最大尺寸
HealthCheckGracePeriod:'600'
HealthCheckType:EC2
LaunchConfigurationName:!参考ECSLaunchConfiguration
MetricsCollection:
-粒度:1分钟
ECSClusterScaleOutPolicy:
类型:“AWS::AutoScaling::ScalingPolicy”
条件:自动缩放非专用
特性:
调整类型:变更无能力
自动缩放组名:!参考ECSCLUSTRAUTOSCALINGGROUP
冷却时间:“120”
缩放调整:“1”
ECSClusterScaleOutAlarm:
类型:“AWS::CloudWatch::Alarm”
条件:自动缩放非专用
特性:
评估期:“1”
统计:平均值
门槛:“70”
AlarmDescription:当内存保留>70%并持续1分钟时,放大报警
期间:'60'
报警操作:
- !参考ECSClusterScaleOutPolicy
名称空间:AWS/ECS
尺寸:
-姓名:ClusterName
值:!参考ECSCluster
比较运算符:大于阈值
度量名称:MemoryReservation
ECSClusterScaleInPolicy:
类型:“AWS::AutoScaling::ScalingPolicy”
条件:自动缩放非专用
特性:
调整类型:变更无能力
自动缩放组名:!参考ECSCLUSTRAUTOSCALINGGROUP
冷却时间:“120”
缩放调整:'-1'
ECSClustersCalinalArm:
类型:“AWS::CloudWatch::Alarm”
条件:自动缩放非专用
特性:
评估期:“1”
统计:平均值
阈值:“45”
AlarmDescription:Scale down alarm when Memory Reservation有很多这样的例子,但下面是我现有的云形成模板中的一个片段
1)参数
您应该将最小值和最大值作为参数
2)自动缩放组本身
我在下面包括它,但是如果你不想包括它,你可以把它作为一个参数。您还可以使用一个条件,该条件可以使用参数的现有值作为确定是否应创建ASG的条件。请注意,如果您确实使用了该条件,那么您还将在带有in语句的所有引用上使用该条件(以确定是使用本地ASG in模板还是参数)
3)警报
这是自动秤组的关键元素-确定报警。我使用集群的内存保留,但我认为CPU是最常见的。您可以使用任何度量cloudwatch监视器,甚至自定义度量
4)政策
我现在快速地上下反应…一个新实例需要30-60秒才能产生影响,这就是为什么我在事件之间有120秒。您需要了解您的系统,以正确选择适当的数量,避免过度缩放
ECSClusterAutoScalingGroup:
Type: 'AWS::AutoScaling::AutoScalingGroup'
Condition: notDedicated
Properties:
VPCZoneIdentifier:
- 'Fn::ImportValue': !Sub '${VPC}-PrivateSubnet1'
- 'Fn::ImportValue': !Sub '${VPC}-PrivateSubnet2'
- 'Fn::ImportValue': !Sub '${VPC}-PrivateSubnet3'
MinSize: !Ref MinSize
MaxSize: !Ref MaxSize
HealthCheckGracePeriod: '600'
HealthCheckType: EC2
LaunchConfigurationName: !Ref ECSLaunchConfiguration
MetricsCollection:
- Granularity: 1Minute
ECSClusterScaleOutPolicy:
Type: 'AWS::AutoScaling::ScalingPolicy'
Condition: AutoScaleNotDedicated
Properties:
AdjustmentType: ChangeInCapacity
AutoScalingGroupName: !Ref ECSClusterAutoScalingGroup
Cooldown: '120'
ScalingAdjustment: '1'
ECSClusterScaleOutAlarm:
Type: 'AWS::CloudWatch::Alarm'
Condition: AutoScaleNotDedicated
Properties:
EvaluationPeriods: '1'
Statistic: Average
Threshold: '70'
AlarmDescription: Scale up alarm when Memory Reservation > 70% for 1 minute
Period: '60'
AlarmActions:
- !Ref ECSClusterScaleOutPolicy
Namespace: AWS/ECS
Dimensions:
- Name: ClusterName
Value: !Ref ECSCluster
ComparisonOperator: GreaterThanThreshold
MetricName: MemoryReservation
ECSClusterScaleInPolicy:
Type: 'AWS::AutoScaling::ScalingPolicy'
Condition: AutoScaleNotDedicated
Properties:
AdjustmentType: ChangeInCapacity
AutoScalingGroupName: !Ref ECSClusterAutoScalingGroup
Cooldown: '120'
ScalingAdjustment: '-1'
ECSClusterScaleInAlarm:
Type: 'AWS::CloudWatch::Alarm'
Condition: AutoScaleNotDedicated
Properties:
EvaluationPeriods: '1'
Statistic: Average
Threshold: '45'
AlarmDescription: Scale down alarm when Memory Reservation <= 45% for 5 minutes
Period: '300'
AlarmActions:
- !Ref ECSClusterScaleInPolicy
Namespace: AWS/ECS
Dimensions:
- Name: ClusterName
Value: !Ref ECSCluster
ComparisonOperator: LessThanOrEqualToThreshold
MetricName: MemoryReservation
ECSClusterAutoScalingGroup:
类型:“AWS::AutoScaling::AutoScalingGroup”
条件:不专用
特性:
VPCZoneIdentifier:
-'Fn::ImportValue':!子“${VPC}-私有子网1”
-'Fn::ImportValue':!子“${VPC}-私有子网2”
-'Fn::ImportValue':!子“${VPC}-私有子网3”
MinSize:!Ref MinSize
最大尺寸:!参考最大尺寸
HealthCheckGracePeriod:'600'
HealthCheckType:EC2
LaunchConfigurationName:!参考ECSLaunchConfiguration
MetricsCollection:
-粒度:1分钟
ECSClusterScaleOutPolicy:
类型:“AWS::AutoScaling::ScalingPolicy”
条件:自动缩放非专用
特性:
调整类型:变更无能力
自动缩放组名:!参考ECSCLUSTRAUTOSCALINGGROUP
冷却时间:“120”
缩放调整:“1”
ECSClusterScaleOutAlarm:
类型:“AWS::CloudWatch::Alarm”
条件:自动缩放非专用
特性:
评估期:“1”
统计:平均值
门槛:“70”
AlarmDescription:当内存保留>70%并持续1分钟时,放大报警
期间:'60'
报警操作:
- !参考ECSClusterScaleOutPolicy
名称空间:AWS/ECS
尺寸:
-姓名:ClusterName
值:!参考ECSCluster
比较运算符:大于阈值
度量名称:MemoryReservation
ECSClusterScaleInPolicy:
类型:“AWS::AutoScaling::ScalingPolicy”
条件:自动缩放非专用
特性:
调整类型:变更无能力
自动缩放组名:!参考ECSCLUSTRAUTOSCALINGGROUP
冷却时间:“120”
缩放调整:'-1'
ECSClustersCalinalArm:
类型:'AWS::CloudWat