AWS – Auto Scaling Group

Şimdi AWS – Application Load Balancer konusunun devamı niteliğinde bu yazıyı yazıyorum.

Auto Scaling Group kısaca ASG nedir?

ASG (Auto Scaling Group), AWS’de uygulamanın ihtiyaca göre otomatik olarak EC2 sayısını artırıp azaltan bir servistir.
Yani:

Bir EC2 ölürse ➜ yenisini otomatik açar

Trafik artarsa ➜ yeni EC2 açar

Trafik azalırsa ➜ fazla EC2’leri kapatır

ASG yoksa
  • 1 EC2 çöker → site gider
  • Trafik artar → sistem yavaşlar
  • Manuel EC2 aç/kapat
ASG varsa
  • Yüksek erişilebilirlik
  • Otomatik ölçeklenme
  • Daha az maliyet
  • Self-healing yapı

Nasıl çalışır?

  • Desired → o an kaç EC2 olsun
  • Min → en az kaç olsun
  • Max → en fazla kaç olsun

ASG ne zaman scale etsin?

Örnek:

  • CPU > %70 → +1 EC2
  • CPU < %30 → -1 EC2

Peki bizim bir önceki ASG olmayan sadece load balancer arkasındaki yapımız ne yapıyordu ve neden yetersiz kalabilir?

Biz load balancer arkasına 2 adet EC2 sunucu yerleştirdik trafik bu ikisi arasında gidip geliyor. Ancak trafik çok fazla olursa ve bu iki sunucu bu talepleri karşılamada yetersiz kalırsa ne yapacağız? manuel olarak girip bir EC2 daha ekleyip ALB arkasına mı alacağız. 3 yetmezse, tekrar 4 mü yapacağız. Peki diyelim 4’e çıkardık ve sorunu çözdük trafik azaldığında ne olacak? Belki 2 sunucuyla bu trafiği karşılayabiliyorken 4 sunucu çalıştırmış olacağız bu da maliyeti artıracak. Şimdi düşünün bizim sistem sadece günün belirli bir saatinde yüksek trafik alıyor veya kampanya günlerinde alıyor. O zaman bizim bu duruma göre sunucu sayısını artırıp bu durum bittikten sonra tekrar azaltmamız lazım ve bunu da manuel olarak yapmak yerine otomatize etmemiz gerekiyor.

ASG + ALB neden birlikte kullanılır?

ASG tek başına trafik dağıtmaz.
ALB tek başına EC2 sayısını artırmaz.

ALB → trafiği dağıtır

ASG → kapasiteyi ayarlar

E-ticaret sitesi:

  • Gece → 1 EC2 yeter
  • Kampanya → trafik patlar
  • ASG → 6 EC2 açar
  • Kampanya biter → 2 EC2’ye düşer

Burada başlangıçta 2 adet EC2 ile başla dedim minimum 2 olsun maximum 6 EC2’e kadar çık diye tanımladım.

ASG, ortalama CPU’yu %70 civarında tutmaya çalışır

  • CPU > %70 → scale out
  • CPU < %70 → scale in

warmup 300 şunu yapar:

“Yeni instance açıldı ama hemen CPU’ya bakma çünkü app henüz ayağa kalkıyor.” 300 saniye (5 dk)

Mevcutta 2 adet EC2 instance’ım vardı ve şu an 2 adet daha oluşuyor. Çünkü ASG daha önceden tanımlı olan instance’lara bakmaz kendisi oluşturur. Biz burada eski oluşturulanları silebiliriz.

Auto Scaling Group name olarak test-asg görebiliyoruz. Şimdi önceki server 1 ve server 2 ec2’leri siliyorum.

Ayrıca ASG’nin oluşturduğu sunuculardan birini de terminated ettim. Bu durumda ne olacak?

Desired = 2
Running = 1

Hemen yeni bir EC2 başlatır.

Ve evet, initialized oluyor bir adet EC2 şu an başlatılıyor. Yani ASG yapımız doğru bir şekilde çalışıyor.

Bir diğer test adımımız şu olabilir sunucularda linuxta yer alan stress aracını çalıştırarak cpu bound bir işlem gerçekleştirip cpu’nun %70 seviyesini aşmasını sağlayabilirsiniz bu durumda ASG yeni bir makine ayağa kaldırmaya başlar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir