Score:0

วิธีลดเวลาตอบสนองการปรับขนาดอัตโนมัติ ecs จาก terraform

ธง us

เมื่อคุณสร้างนโยบายการปรับขนาดอัตโนมัติของ ECS จะมีแท็กการเตือนสองแท็กพร้อมกัน: หนึ่งสำหรับการปรับขนาดขึ้น ("ออก") หนึ่งสำหรับการปรับขนาดลง ("ใน")

ตัวปรับขนาดออกที่ฉันเห็นว่าสร้างขึ้นเพื่อสุ่มตัวอย่างการใช้งาน CPU (หรือเมตริกที่สนใจ) ทุกนาที และจะเปิดใช้งานการปรับอัตโนมัติเมื่อจุดข้อมูลสามจุดที่ต่อเนื่องกันละเมิดเกณฑ์เท่านั้น

ซึ่งหมายความว่าหากฉันเห็นการจราจรที่พุ่งสูงขึ้น เวลาจะผ่านไปสามนาทีก่อนที่สเกลเอาท์จะเกิดขึ้น (ในความเป็นจริง โดยเฉลี่ยแล้วการละเมิดเกณฑ์จะเกิดขึ้นในช่วงกลางของช่วงเวลาสุ่มตัวอย่าง ดังนั้นความล่าช้าจึงอยู่ที่สามนาทีครึ่ง)

ฉันสามารถปรับอัตราการสุ่มตัวอย่างและจำนวนจุดข้อมูลที่ต้องการผ่านเว็บอินเทอร์เฟซของคอนโซล AWS

อย่างไรก็ตาม ฉันต้องการจัดการโครงสร้างพื้นฐานของฉันผ่าน Terraform

ฉันจะใช้ Terraform ได้อย่างไร แต่ไม่มีการคลิกด้วยตนเองเพื่อลดระยะเวลาระหว่าง (a) การละเมิดเกณฑ์ครั้งแรก; และ (b) ช่วงเวลาที่ฉันเริ่มลดขนาด? (นอกจากนี้: นี่เป็นเรื่องโง่ ๆ ที่จะพยายามหรือไม่ ฉันจะทำแบบ awk-bascards หรือไม่)

เท่าที่ฉันสามารถบอกได้ มันดูเหมือนการเล่นสเก็ตน้ำแข็งขึ้นเนิน: การสร้างนโยบายการปรับขนาดอัตโนมัติ (ซึ่งฉันสามารถทำได้ผ่าน Terraform) จะสร้างการเตือนสองครั้งโดยอัตโนมัติและส่งแฮนเดิลกลับไปให้พวกเขา (ดู https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html) แต่ Terraform ไม่เปิดเผยที่จับเหล่านั้น (ดู https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_policy#attributes-reference). ยังเป็นไปได้ใน Terraform หรือไม่? ต้องใช้ความพยายามอย่างกล้าหาญหรือไม่?

Score:1
ธง au

คุณสามารถทำสิ่งนี้ให้สำเร็จได้ด้วย 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
  }
}

ดังที่คุณเห็นจากตัวอย่างนี้ เราสามารถเล่นกับการกำหนดค่าการเตือนภัยได้จนกว่าเราจะได้ผลลัพธ์ที่ต้องการ

หวังว่าจะช่วยได้!

Jonas Kölker avatar
us flag
นี่คือ step scaling ใช่ไหม ไม่ใช่การติดตามเป้าหมาย? การวิจัยของเราเองชี้ให้เห็นว่าโซลูชัน non-step-scaling ไม่ต้องการให้เราบรรลุผล ดังนั้นจึงเป็นเรื่องดีที่ได้ยินว่าโซลูชัน step scaling จะทำ (หรืออย่างน้อยก็อาจ ฉันไม่รู้ข้อกำหนดทั้งหมดด้วยซ้ำ ดังนั้นฉันจึง ให้เฉพาะผู้ที่เกี่ยวข้องเท่านั้น)
Vitalii Strimbanu avatar
au flag
@ JonasKölker ใช่ นี่คือวิธีการปรับขนาดขั้นตอน ทั้งการปรับขนาดขั้นตอนและการติดตามเป้าหมายมีการใช้งาน ดังนั้นคุณต้องเลือกตามความต้องการของคุณ ตัวอย่างเช่น ฉันใช้การติดตามเป้าหมายสำหรับบริการ ECS บางอย่าง เพื่อเก็บคำขอเฉลี่ย 1,000 รายการต่อนาทีสำหรับแต่ละงาน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา