Konfigurasikan sumber daya Auto Scaling Amazon EC2 dengan AWS CloudFormation - AWS CloudFormation

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasikan sumber daya Auto Scaling Amazon EC2 dengan AWS CloudFormation

Contoh berikut menunjukkan cuplikan berbeda untuk disertakan dalam templat untuk digunakan dengan Auto Scaling Amazon EC2.

Buat satu contoh grup Auto Scaling

Contoh ini menunjukkan AWS::AutoScaling::AutoScalingGroupsumber daya dengan satu instance untuk membantu Anda memulai. VPCZoneIdentifierProperti grup Auto Scaling menentukan daftar subnet yang ada di tiga Availability Zone yang berbeda. Anda harus menentukan ID subnet yang berlaku dari akun Anda sebelum membuat tumpukan Anda. LaunchTemplateProperti mereferensikan AWS::EC2::LaunchTemplatesumber daya dengan nama logis myLaunchTemplate yang didefinisikan di tempat lain dalam template Anda.

catatan

Untuk contoh templat peluncuran, lihat Buat template peluncuran dengan AWS CloudFormation di bagian cuplikan Amazon EC2 dan bagian Contoh di sumber daya. AWS::EC2::LaunchTemplate

JSON

"myASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "myLaunchTemplate" }, "Version" : { "Fn::GetAtt" : [ "myLaunchTemplate", "LatestVersionNumber" ] } }, "MaxSize" : "1", "MinSize" : "1" } }

YAML

myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: - subnetIdAz1 - subnetIdAz2 - subnetIdAz3 LaunchTemplate: LaunchTemplateId: !Ref myLaunchTemplate Version: !GetAtt myLaunchTemplate.LatestVersionNumber MaxSize: '1' MinSize: '1'

Buat grup Auto Scaling dengan penyeimbang beban terlampir

Contoh ini menunjukkan AWS::AutoScaling::AutoScalingGroupsumber daya untuk load balancing melalui beberapa server. Ini menentukan nama logis AWS sumber daya yang dinyatakan di tempat lain dalam template yang sama.

  1. VPCZoneIdentifierProperti menentukan nama logis dari dua AWS::EC2::Subnetsumber daya tempat instans EC2 grup Auto Scaling akan dibuat: dan. myPublicSubnet1 myPublicSubnet2

  2. LaunchTemplateProperti menentukan AWS::EC2::LaunchTemplatesumber daya dengan nama myLaunchTemplate logis.

  3. TargetGroupARNsProperti mencantumkan grup target untuk Application Load Balancer atau Network Load Balancer yang digunakan untuk merutekan lalu lintas ke grup Auto Scaling. Dalam contoh ini, satu kelompok target ditentukan, AWS::ElasticLoadBalancingV2::TargetGroupsumber daya dengan nama logismyTargetGroup.

JSON

"myServerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ { "Ref" : "myPublicSubnet1" }, { "Ref" : "myPublicSubnet2" } ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "myLaunchTemplate" }, "Version" : { "Fn::GetAtt" : [ "myLaunchTemplate", "LatestVersionNumber" ] } }, "MaxSize" : "5", "MinSize" : "1", "TargetGroupARNs" : [ { "Ref" : "myTargetGroup" } ] } }

YAML

myServerGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: - !Ref myPublicSubnet1 - !Ref myPublicSubnet2 LaunchTemplate: LaunchTemplateId: !Ref myLaunchTemplate Version: !GetAtt myLaunchTemplate.LatestVersionNumber MaxSize: '5' MinSize: '1' TargetGroupARNs: - !Ref myTargetGroup

Lihat juga

Untuk contoh mendetail yang membuat grup Auto Scaling dengan kebijakan penskalaan pelacakan target berdasarkan metrik yang ALBRequestCountPerTarget telah ditentukan untuk Application Load Balancer, lihat bagian Contoh di sumber daya. AWS::AutoScaling::ScalingPolicy

Buat grup Auto Scaling dengan notifikasi

Contoh ini menunjukkan AWS::AutoScaling::AutoScalingGroupsumber daya yang mengirimkan notifikasi Amazon SNS saat peristiwa yang ditentukan berlangsung. NotificationConfigurationsProperti menentukan topik SNS di mana AWS CloudFormation mengirimkan pemberitahuan dan peristiwa yang akan menyebabkan AWS CloudFormation untuk mengirim pemberitahuan. Ketika peristiwa yang ditentukan oleh NotificationTypes terjadi, AWS CloudFormation akan mengirim pemberitahuan ke topik SNS yang ditentukan olehTopicARN. Saat Anda meluncurkan tumpukan, AWS CloudFormation buat AWS::SNS::Subscriptionresource (snsTopicForAutoScalingGroup) yang dideklarasikan dalam template yang sama.

VPCZoneIdentifierProperti grup Auto Scaling menentukan daftar subnet yang ada di tiga Availability Zone yang berbeda. Anda harus menentukan ID subnet yang berlaku dari akun Anda sebelum membuat tumpukan Anda. LaunchTemplateProperti mereferensikan nama logis dari AWS::EC2::LaunchTemplatesumber daya yang dideklarasikan di tempat lain dalam template yang sama.

JSON

"myASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "DependsOn": [ "snsTopicForAutoScalingGroup" ], "Properties" : { "VPCZoneIdentifier" : [ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "logicalName" }, "Version" : { "Fn::GetAtt" : [ "logicalName", "LatestVersionNumber" ] } }, "MaxSize" : "5", "MinSize" : "1", "NotificationConfigurations" : [ { "TopicARN" : { "Ref" : "snsTopicForAutoScalingGroup" }, "NotificationTypes" : [ "autoscaling:EC2_INSTANCE_LAUNCH", "autoscaling:EC2_INSTANCE_LAUNCH_ERROR", "autoscaling:EC2_INSTANCE_TERMINATE", "autoscaling:EC2_INSTANCE_TERMINATE_ERROR", "autoscaling:TEST_NOTIFICATION" ] } ] } }

YAML

myASG: Type: AWS::AutoScaling::AutoScalingGroup DependsOn: - snsTopicForAutoScalingGroup Properties: VPCZoneIdentifier: - subnetIdAz1 - subnetIdAz2 - subnetIdAz3 LaunchTemplate: LaunchTemplateId: !Ref logicalName Version: !GetAtt logicalName.LatestVersionNumber MaxSize: '5' MinSize: '1' NotificationConfigurations: - TopicARN: !Ref snsTopicForAutoScalingGroup NotificationTypes: - autoscaling:EC2_INSTANCE_LAUNCH - autoscaling:EC2_INSTANCE_LAUNCH_ERROR - autoscaling:EC2_INSTANCE_TERMINATE - autoscaling:EC2_INSTANCE_TERMINATE_ERROR - autoscaling:TEST_NOTIFICATION

Buat grup Auto Scaling yang menggunakan a dan CreationPolicyUpdatePolicy

Contoh berikut menunjukkan cara menambahkan CreationPolicyatribut dan UpdatePolicy atribut ke AWS::AutoScaling::AutoScalingGroupsumber daya.

Kebijakan pembuatan sampel mencegah grup Auto Scaling mencapai CREATE_COMPLETE status hingga AWS CloudFormation menerima Count sejumlah sinyal keberhasilan saat grup siap. Untuk memberi sinyal bahwa grup Auto Scaling sudah siap, skrip cfn-signal helper yang ditambahkan ke data pengguna template peluncuran (tidak ditampilkan) dijalankan pada instance. Jika instance tidak mengirim sinyal dalam yang ditentukanTimeout, CloudFormation mengasumsikan bahwa instance tidak dibuat, pembuatan sumber daya gagal, dan CloudFormation memutar tumpukan kembali.

Kebijakan pembaruan sampel menginstruksikan CloudFormation untuk melakukan pembaruan bergulir menggunakan AutoScalingRollingUpdate properti. Pembaruan bergulir membuat perubahan pada grup Auto Scaling dalam batch kecil (untuk contoh ini, instance demi instance) berdasarkan MaxBatchSize dan waktu jeda antara kumpulan pembaruan berdasarkan. PauseTime MinInstancesInServiceAtribut menentukan jumlah minimum instance yang harus dalam layanan dalam grup Auto Scaling CloudFormation sementara memperbarui instance lama.

WaitOnResourceSignalsAtribut diatur ketrue. CloudFormationharus menerima sinyal dari setiap instance baru dalam yang ditentukan PauseTime sebelum melanjutkan pembaruan. Sementara pembaruan tumpukan sedang berlangsung, proses EC2 Auto Scaling berikut ditangguhkan: HealthCheck, ReplaceUnhealthy, AZRebalance, AlarmNotification, dan ScheduledActions. Catatan: Jangan menangguhkan jenis prosesLaunch,Terminate, atau AddToLoadBalancer (jika grup Auto Scaling digunakan dengan Elastic Load Balancing) karena hal itu dapat mencegah pembaruan bergulir berfungsi dengan baik.

VPCZoneIdentifierProperti grup Auto Scaling menentukan daftar subnet yang ada di tiga Availability Zone yang berbeda. Anda harus menentukan ID subnet yang berlaku dari akun Anda sebelum membuat tumpukan Anda. LaunchTemplateProperti mereferensikan nama logis dari AWS::EC2::LaunchTemplatesumber daya yang dideklarasikan di tempat lain dalam template yang sama.

JSON

{ "Resources":{ "myASG":{ "CreationPolicy":{ "ResourceSignal":{ "Count":"3", "Timeout":"PT15M" } }, "UpdatePolicy":{ "AutoScalingRollingUpdate":{ "MinInstancesInService":"1", "MaxBatchSize":"1", "PauseTime":"PT12M5S", "WaitOnResourceSignals":"true", "SuspendProcesses":[ "HealthCheck", "ReplaceUnhealthy", "AZRebalance", "AlarmNotification", "ScheduledActions" ] } }, "Type":"AWS::AutoScaling::AutoScalingGroup", "Properties":{ "VPCZoneIdentifier":[ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate":{ "LaunchTemplateId":{ "Ref":"logicalName" }, "Version":{ "Fn::GetAtt":[ "logicalName", "LatestVersionNumber" ] } }, "MaxSize":"5", "MinSize":"3" } } } }

YAML

--- Resources: myASG: CreationPolicy: ResourceSignal: Count: '3' Timeout: PT15M UpdatePolicy: AutoScalingRollingUpdate: MinInstancesInService: '1' MaxBatchSize: '1' PauseTime: PT12M5S WaitOnResourceSignals: true SuspendProcesses: - HealthCheck - ReplaceUnhealthy - AZRebalance - AlarmNotification - ScheduledActions Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: - subnetIdAz1 - subnetIdAz2 - subnetIdAz3 LaunchTemplate: LaunchTemplateId: !Ref logicalName Version: !GetAtt logicalName.LatestVersionNumber MaxSize: '5' MinSize: '3'

Membuat kebijakan penskalaan langkah

Contoh ini menunjukkan AWS::AutoScaling::ScalingPolicysumber daya yang menskalakan grup Auto Scaling menggunakan kebijakan penskalaan langkah. Properti AdjustmentType menentukan ChangeInCapacity, yang berarti bahwa ScalingAdjustment mewakili jumlah instans untuk ditambahkan (jika ScalingAdjustment positif) atau dihapus (jika negatif). Dalam contoh ini, ScalingAdjustment adalah 1; oleh karena itu, kebijakan tersebut menambah jumlah instans EC2 dalam grup sebanyak 1 ketika ambang batas alarm dilanggar.

AWS::CloudWatch::AlarmSumber daya CPUAlarmHigh menentukan kebijakan penskalaan ASGScalingPolicyHigh sebagai tindakan yang akan dijalankan saat alarm berada dalam status ALARM ()AlarmActions. DimensionsProperti mereferensikan nama logis dari AWS::AutoScaling::AutoScalingGroupsumber daya yang dideklarasikan di tempat lain dalam template yang sama.

JSON

{ "Resources":{ "ASGScalingPolicyHigh":{ "Type":"AWS::AutoScaling::ScalingPolicy", "Properties":{ "AutoScalingGroupName":{ "Ref":"logicalName" }, "PolicyType":"StepScaling", "AdjustmentType":"ChangeInCapacity", "StepAdjustments":[ { "MetricIntervalLowerBound":0, "ScalingAdjustment":1 } ] } }, "CPUAlarmHigh":{ "Type":"AWS::CloudWatch::Alarm", "Properties":{ "EvaluationPeriods":"2", "Statistic":"Average", "Threshold":"90", "AlarmDescription":"Scale out if CPU > 90% for 2 minutes", "Period":"60", "AlarmActions":[ { "Ref":"ASGScalingPolicyHigh" } ], "Namespace":"AWS/EC2", "Dimensions":[ { "Name":"AutoScalingGroupName", "Value":{ "Ref":"logicalName" } } ], "ComparisonOperator":"GreaterThanThreshold", "MetricName":"CPUUtilization" } } } }

YAML

--- Resources: ASGScalingPolicyHigh: Type: AWS::AutoScaling::ScalingPolicy Properties: AutoScalingGroupName: !Ref logicalName PolicyType: StepScaling AdjustmentType: ChangeInCapacity StepAdjustments: - MetricIntervalLowerBound: 0 ScalingAdjustment: 1 CPUAlarmHigh: Type: AWS::CloudWatch::Alarm Properties: EvaluationPeriods: 2 Statistic: Average Threshold: 90 AlarmDescription: 'Scale out if CPU > 90% for 2 minutes' Period: 60 AlarmActions: - !Ref ASGScalingPolicyHigh Namespace: AWS/EC2 Dimensions: - Name: AutoScalingGroupName Value: !Ref logicalName ComparisonOperator: GreaterThanThreshold MetricName: CPUUtilization

Lihat juga

Untuk contoh templat lainnya untuk kebijakan penskalaan, lihat bagian Contoh di AWS::AutoScaling::ScalingPolicy sumber daya.

Contoh kelompok contoh campuran

Buat grup Auto Scaling menggunakan pemilihan tipe instans berbasis atribut

Contoh ini menunjukkan AWS::AutoScaling::AutoScalingGroupsumber daya yang berisi informasi untuk meluncurkan grup instance campuran menggunakan pemilihan tipe instans berbasis atribut. Anda menentukan nilai minimum dan maksimum untuk VCpuCount properti dan nilai minimum untuk MemoryMiB properti. Tipe instans apa pun yang digunakan oleh grup Auto Scaling harus sesuai dengan atribut instance yang diperlukan.

VPCZoneIdentifierProperti grup Auto Scaling menentukan daftar subnet yang ada di tiga Availability Zone yang berbeda. Anda harus menentukan ID subnet yang berlaku dari akun Anda sebelum membuat tumpukan Anda. LaunchTemplateProperti mereferensikan nama logis dari AWS::EC2::LaunchTemplatesumber daya yang dideklarasikan di tempat lain dalam template yang sama.

JSON

{ "Resources":{ "myASG":{ "Type":"AWS::AutoScaling::AutoScalingGroup", "Properties":{ "VPCZoneIdentifier":[ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":{ "Ref":"logicalName" }, "Version":{ "Fn::GetAtt":[ "logicalName", "LatestVersionNumber" ] } }, "Overrides":[ { "InstanceRequirements":{ "VCpuCount":{ "Min":2, "Max":4 }, "MemoryMiB":{ "Min":2048 } } } ] } }, "MaxSize":"5", "MinSize":"1" } } } }

YAML

--- Resources: myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: - subnetIdAz1 - subnetIdAz2 - subnetIdAz3 MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateId: !Ref logicalName Version: !GetAtt logicalName.LatestVersionNumber Overrides: - InstanceRequirements: VCpuCount: Min: 2 Max: 4 MemoryMiB: Min: 2048 MaxSize: '5' MinSize: '1'

Luncurkan contoh konfigurasi

Buat konfigurasi peluncuran

Contoh ini menunjukkan AWS::AutoScaling::LaunchConfigurationsumber daya untuk grup Auto Scaling tempat Anda menentukan nilai untukImageId,InstanceType, dan SecurityGroups properti. SecurityGroupsProperti menentukan nama logis dari AWS::EC2::SecurityGroupsumber daya yang ditentukan di tempat lain dalam template, dan grup keamanan EC2 yang ada bernama. myExistingEC2SecurityGroup

JSON

"mySimpleConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "ImageId" : "ami-02354e95b3example", "InstanceType" : "t3.micro", "SecurityGroups" : [ { "Ref" : "logicalName" }, "myExistingEC2SecurityGroup" ] } }

YAML

mySimpleConfig: Type: AWS::AutoScaling::LaunchConfiguration Properties: ImageId: ami-02354e95b3example InstanceType: t3.micro SecurityGroups: - !Ref logicalName - myExistingEC2SecurityGroup

Membuat grup Auto Scaling yang menggunakan konfigurasi peluncuran

Contoh ini menunjukkan AWS::AutoScaling::AutoScalingGroupsumber daya dengan satu contoh. VPCZoneIdentifierProperti grup Auto Scaling menentukan daftar subnet yang ada di tiga Availability Zone yang berbeda. Anda harus menentukan ID subnet yang berlaku dari akun Anda sebelum membuat tumpukan Anda. LaunchConfigurationNameProperti mereferensikan AWS::AutoScaling::LaunchConfigurationsumber daya dengan nama logis mySimpleConfig yang didefinisikan dalam template Anda.

JSON

"myASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchConfigurationName" : { "Ref" : "mySimpleConfig" }, "MaxSize" : "1", "MinSize" : "1" } }

YAML

myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: - subnetIdAz1 - subnetIdAz2 - subnetIdAz3 LaunchConfigurationName: !Ref mySimpleConfig MaxSize: '1' MinSize: '1'