Puncte:0

Cum să minimizezi timpul de reacție de autoscaling ecs de la terraform?

drapel us

Când creați o politică de scalare automată ECS, două alarme se etichetează împreună cu aceasta: una pentru extindere ("out"), una pentru reducere ("în").

Cele de scalare pe care le văd create par să eșantioneze utilizarea procesorului (sau metrica de interes) în fiecare minut și declanșează scalarea automată numai atunci când trei puncte de date consecutive au depășit pragul.

Aceasta înseamnă că, dacă văd o creștere a traficului, vor trece trei minute înainte ca scalarea să aibă loc. (De fapt, în medie, depășirea pragului se va întâmpla la mijlocul unui interval de eșantionare, astfel încât întârzierea este de trei minute și jumătate.)

Pot ajusta rata de eșantionare și numărul de puncte de date necesare prin interfața web a consolei AWS.

Cu toate acestea, aș dori să îmi gestionez infrastructura prin Terraform.

Cum pot folosi Terraform, dar fără clic manual pentru a scurta timpul dintre (a) prima încălcare a pragului; și (b) momentul în care încep scalarea? (De asemenea: este un lucru prost de încercat? Mă ocup de asta într-un mod awk-basscards?)

Din câte îmi dau seama, arată ca patinaj în sus: crearea politicilor de autoscaling (ceea ce pot face prin Terraform) creează automat două alarme și le returnează mânerele (vezi https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html), dar Terraform nu expune acele mânere (vezi https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_policy#attributes-reference). Mai este posibil în Terraform? Este nevoie de eforturi eroice?

Puncte:1
drapel au

Cu siguranță puteți obține acest lucru cu Terraform. Există câteva modalități de a realiza acest lucru, dar mă voi concentra pe cea care vă oferă mai multă flexibilitate.

Să presupunem că ai deja ta aws_autoscaling_group resursă definită, după aceea trebuie să definiți politicile de scalare pentru ASG și CloudWatch alarme care le vor declanșa. De obicei, urmăresc 3 metrici diferite pentru autoscaling: MemoryReservation, CPUReservation și CPUUtilization.

Un exemplu de configurare a autoscaling pe baza CPUUtilization.

Politici de scalare pentru ASG nostru:
resursa „aws_autoscaling_policy” „my-cpu-scale-up” {
  nume = "procesul-meu-creștere"
  ajustare_scalare = 1
  adjustment_type = "ChangeInCapacity"
  cooldown = 60
  autoscaling_group_name = aws_autoscaling_group.[your-asg-resource].nume
}

resursă „aws_autoscaling_policy” „my-cpu-scale-down” {
  nume = "my-cpu-scale-down"
  ajustare_scalare = -1
  adjustment_type = "ChangeInCapacity"
  cooldown = 300
  autoscaling_group_name = aws_autoscaling_group.[your-asg-resource].nume
}
Alarme CloudWatch care vor declanșa una dintre politicile noastre.
resursă „aws_cloudwatch_metric_alarm” „my-cpu-usage-high” {
  alarm_name = "my-cpu-usage-high"
  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods = "2"
  metric_name = "CPUUtilization"
  spatiu de nume = "AWS/EC2"
  perioada = "60" // în secunde
  statistic = „Medie”
  prag = "70" // în %
  alarm_description = „Această măsurătoare monitorizează clusterul pentru utilizarea ridicată a procesorului”
  alarm_actions = [
    aws_autoscaling_policy.my-cpu-scale-up.arn
  ]
  dimensiuni ={
    AutoScalingGroupName= aws_autoscaling_group.[your-asg-resource].nume
  }
}

resursă „aws_cloudwatch_metric_alarm” „my-cpu-usage-low” {
  alarm_name = "utilizarea-meu-procesoare-scăzută"
  comparison_operator = "LessThanOrEqualToThreshold"
  evaluation_periods = "2"
  metric_name = "CPUUtilization"
  spatiu de nume = "AWS/EC2"
  perioada = "60"
  statistic = „Medie”
  prag = "20"
  alarm_description = „Această măsurătoare îmi monitorizează clusterul pentru utilizarea scăzută a procesorului”
  alarm_actions = [
    aws_autoscaling_policy.my-cpu-scale-down.arn
  ]
  dimensiuni ={
    AutoScalingGroupName= aws_autoscaling_group.[your-asg-resource].nume
  }
}

După cum puteți vedea din acest exemplu, ne putem juca cu configurarea alarmelor până când obținem rezultatul dorit.

Sper că te ajută!

Jonas Kölker avatar
drapel us
Aceasta este scalarea pașilor, nu, și nu urmărirea țintei? Propria noastră cercetare sugerează că soluțiile care nu fac trepte de scalare nu vor dori să realizăm, așa că este plăcut să aud că soluțiile de scalare în trepte vor (sau cel puțin ar putea; nici măcar nu cunosc toate cerințele, așa că am date fiind doar cele cunoscute relevante).
Vitalii Strimbanu avatar
drapel au
@JonasKölker da, aceasta este abordarea de scalare a pasilor. Atât scalarea pașilor, cât și urmărirea țintei au utilizările lor, așa că trebuie să alegeți în funcție de cerințele dvs. De exemplu, folosesc urmărirea țintei pentru unele servicii ECS, pentru a păstra o medie de 1.000 solicitări pe minut pentru fiecare sarcină.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.