Volkan Altan
May 12, 2016 · 3 min read

AWS Elastic Beanstalk Hakkında Kısa Notlar;

[Bir tane yazıyı medium üzerinden yazayım dedim :)]

Yakın zamanda küçük bir proje için Amazon’u tercih ettik. Benim için harika bir deneyim oldu. Şimdiye kadar görmüş olduğumuz büyük rakamlardan oluşan RAM ve CPU lara karşı 1 CPU 1 GB RAM, 1 CPU 512MB RAM makineler ile testler yaptım. Olumlu yönde şaşırtıcı sonuçlar elde ettim.

  1. Öncelikle kolay yönetilebilir arayüz olması sistem yönetimi gereksiniminizi oldukça azaltıyor (sistemciler kızmasın).
  2. Sistemi ayırıp yönetmenin verdiği bir güzellik var. Sorun olan kısmı nokta atışı çıkartabiliyorsunuz.
  3. Deploy çok rahat ve yönetilebilir. Amazon’un hook ları mevcut. İstediğiniz noktaya istediğiniz işlemi koyabiliyorsunuz.
  4. Lider sunucu seçip bazı komutları sadece ondan çalıştırabiliyorsunuz.
  5. Maksimum ve Minumum sayılarını verip makinenin durumuna göre yeni instancelar açılmasını sağlıyorsunuz. Bunları yapmak için domaini (sub olabilir) AWS LB’ye yönlendirmeniz gerekiyor.
  6. İhtiyaca göre anında bir sürü uygulama…

Şimdi örnek bir projeye başlayalım;

Öncelikle aws’nin verdiği default sistemleri kullanacağız. Siz bunu kişiselleştirebilirsiniz ancak başlangıç olarak apache + php olarak devam edeceğiz.

  1. aws üzerinde bir hesap açalım https://console.aws.amazon.com/iam/home?#users
  2. Hesap açıp kullanacağımız servislere göre bazı yetkiler vermemiz gerekiyor.
    https://console.aws.amazon.com/iam/home?#users/
Image for post
Image for post
  1. aws uygulamasını kurup yönetimi buradan yapacağız. Ben python olanı kurdum. brew üzerinden kurulan biraz eski. Docker üzerinden demo yaparken sorun çıkıyor.
    http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install.html
  2. Kullanıcı yönetim merkezinde “Security Credentials” kısmından açtığımız kullanıcıya key ve id bilgisini alıyoruz.
Image for post
Image for post
  1. eb init ile proje oluşturuyoruz. Burada gireceğimiz bilgiler şurada duruyor “~/.aws/config “ Burası için detaylı bilgi: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-reference-get-started.html
    İsterseniz SSH key’inizi sisteme ekleyip daha sonra kolayca bağlanıyorsunuz.
Image for post
Image for post
Image for post
Image for post
  1. eb deploy ile projeyi yayınlıyoruz.
  2. Sunucu üzerinde özelleştirmek istediğiniz şeyleri .ebextensions klasörü altında yapabiliyoruz. Öncelik için dosya isimlerini dikkatli seçiyoruz.
  3. Sunucumuzda aşırı yük olursa, çözmek için yeni bir sunucu açması için aws ye talimat giriyoruz. Başlangıç için minimum 2 makine açık tutmanızı tavsiye ederim. Oluşturduğumuz proje içinde “Scaling” -> “Scaling Trigger” ;
    Trigger measurement: CPU
    Trigger statistic: Average
    Unit of measurement: Percent
    Measurement period (minutes): 1*
    Breach duration (minutes):2*
    Upper threshold: 60*
    Upper breach scale increment:1
    Lower threshold: 40*
    Lower breach scale increment: -1

Şeklinde doldurduğumuzda CPU durumuna göre yeni bir makine açıp kapanıyor. Bu yaptığımız işin kontrolünü e2->autoscaling kısmından görebiliriz. Şöyle bir şeyler yazıyor;
“breaches the alarm threshold: CPUUtilization < 40 for 2 consecutive periods of 60 seconds for the metric dimensions AutoScalingGroupName = xxx”

İlk başta Latency vermiştim ancak memcache de sorun meydana geldiğinde buda gecikmeden sayılıyor ve gereksiz makine açılıyor. CPU verdim çünkü makinede doğrudan yük artışı varsa yeni bir makine açılsın istiyorum.

Aslında yazacak çok kısım var ancak ana hatlarıyla özetlemeye çalıştım.

Basit bir örnekte hazırladım. Umarım işinize yarar.
https://github.com/volkan/aws-elastic-beanstalk

Diğer yazılar için şuraya bakabilirsiniz volkanaltan.blogspot.com

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store