คุณสามารถทำสิ่งนี้ให้สำเร็จได้ด้วย Terraform มีสองสามวิธีในการบรรลุเป้าหมายนี้ แต่ฉันจะเน้นวิธีที่ทำให้คุณมีความยืดหยุ่นมากขึ้น
สมมติว่าคุณมีของคุณแล้ว aws_autoscaling_group
กำหนดทรัพยากรแล้ว หลังจากนั้นคุณต้องกำหนดนโยบายการปรับสเกลสำหรับ ASG และ CloudWatch
สัญญาณเตือนภัยที่จะเรียกพวกเขา
ฉันมักจะติดตามตัวชี้วัดที่แตกต่างกัน 3 รายการสำหรับการปรับขนาดอัตโนมัติ: MemoryReservation, CPUReservation และ CPUUtilization
ตัวอย่างวิธีการตั้งค่าการปรับขนาดอัตโนมัติตาม CPUUtilization
นโยบายการปรับขนาดสำหรับ ASG ของเรา:
ทรัพยากร "aws_autoscaling_policy" "my-cpu-scal-up" {
ชื่อ = "my-cpu-scal-up"
scaling_adjustment = 1
adjustment_type = "ความสามารถในการเปลี่ยนแปลง"
คูลดาวน์ = 60
autoscaling_group_name = aws_autoscaling_group.[your-asg-resource].name
}
ทรัพยากร "aws_autoscaling_policy" "my-cpu-scale-down" {
ชื่อ = "my-cpu-scal-down"
scaling_adjustment = -1
adjustment_type = "ความสามารถในการเปลี่ยนแปลง"
คูลดาวน์ = 300
autoscaling_group_name = aws_autoscaling_group.[your-asg-resource].name
}
การแจ้งเตือนของ CloudWatch ที่จะเรียกใช้หนึ่งในนโยบายของเรา
ทรัพยากร "aws_cloudwatch_metric_alarm" "my-cpu-usage-high" {
alarm_name = "my-cpu-การใช้งานสูง"
Comparison_operator = "มากกว่าหรือเทียบเท่ากับเกณฑ์"
evaluation_periods = "2"
metric_name = "การใช้งานซีพียู"
เนมสเปซ = "AWS/EC2"
ระยะเวลา = "60" // วินาที
สถิติ = "ค่าเฉลี่ย"
เกณฑ์ = "70" // ใน %
alarm_description = "เมตริกนี้ตรวจสอบคลัสเตอร์สำหรับการใช้งาน CPU สูง"
alarm_actions = [
aws_autoscaling_policy.my-cpu-scale-up.arn
]
ขนาด ={
AutoScalingGroupName= aws_autoscaling_group.[your-asg-resource].name
}
}
ทรัพยากร "aws_cloudwatch_metric_alarm" "my-cpu-usage-low" {
alarm_name = "my-cpu-use-low"
Comparison_operator = "LessThanOrEqualToThreshold"
evaluation_periods = "2"
metric_name = "การใช้งานซีพียู"
เนมสเปซ = "AWS/EC2"
ระยะเวลา = "60"
สถิติ = "ค่าเฉลี่ย"
เกณฑ์ = "20"
alarm_description = "เมตริกนี้ตรวจสอบคลัสเตอร์ของฉันสำหรับการใช้งาน CPU ต่ำ"
alarm_actions = [
aws_autoscaling_policy.my-cpu-scale-down.arn
]
ขนาด ={
AutoScalingGroupName= aws_autoscaling_group.[your-asg-resource].name
}
}
ดังที่คุณเห็นจากตัวอย่างนี้ เราสามารถเล่นกับการกำหนดค่าการเตือนภัยได้จนกว่าเราจะได้ผลลัพธ์ที่ต้องการ
หวังว่าจะช่วยได้!