Существуют важные примеры этого, но ниже приведен фрагмент одного из моих существующих шаблонов формирования облаков.
1) Параметры Вы должны принять минимальное и максимальное значения в качестве параметра
2) Сама группа автомасштабирования Я включу ее ниже, но если выне хотел включать его, вы могли бы принять его в качестве параметра.Вы также можете использовать условие, которое будет использовать существующий параметр в качестве условия, чтобы определить, следует ли создавать ASG.Обратите внимание, что если вы используете условие, вы также будете использовать это условие на всех ссылках с оператором in (чтобы определить, используется ли локальная ASG в шаблоне или параметре).
3) Аварийные сигналы Это ключевой элемент группы автоматического масштабирования - определение сигналов тревоги.Я использую резервирование памяти кластера, но я бы сказал, что процессор является наиболее распространенным.Вы можете использовать любые метрические мониторы облачных часов и даже пользовательские метрики.
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