AWS Elastic Load Balancer: Trafik Akışını Akıllıca Yönetmek

Oğuzhan Purtaş
Miuul AWS Community
7 min readApr 10, 2024

--

AWS Cloud hizmetlerinin güçlü altyapısı sayesinde, yüksek trafiği olan uygulamaların yönetimi artık eskisinden çok daha kolay. Ancak bu yönetimi doğru araçlarla yapmak gerekiyor. Bu yazımızda, Elastic Load Balancer’ın (ELB) önemine ve nasıl bir çözüm sunduğuna değineceğiz.

Diyelim ki, elimizdeki ilk makinenin kapasitesi dakikada 100 kullanıcıya hizmet verebilecek kadar (1 CPU, 1 GB RAM). Fakat daha fazla istek geldiğinde, makine overload’a doğru gider ve artık cevap veremez hale gelir. Eğer daha fazla kullanıcımız varsa, klasik mantık daha büyük bir makine almamız gerektiğini söyler. Örneğin, 2 CPU ve 2 GB RAM’e sahip daha büyük bir makine alırız ve bu makinenin 200 kullanıcıyı kaldıracağını düşünürüz. Ancak bu, beklediğimiz gibi olmayabilir. Bu makine de yüksek ihtimalle yaklaşık 150 kullanıcıyı kaldırabilir. Çünkü yukarı doğru çıktıkça, makinenin verimliliği düşer.

Bu soruna çözüm olarak, en küçük makineden (target group) fazlaca alıp, bunları bir cluster içinde organize edebiliriz. Peki, bu makinelere gelen yükü nasıl dağıtacağız? İşte burada devreye Elastic Load Balancer giriyor. Kullanıcı bir web sitesine girmek istediğinde, ELB’nin DNS’ine bağlanır. ELB, bu noktada elindeki target gruplara bakar; hangisi sağlıklı, hangisi boşta duruyor, health check’lerle bunu sürekli kontrol eder ve kendisi bir hesap tutar, kimlere ne kadar yük yolladığıyla alakalı. Özetle, ELB’nin görevi, makinelere yük dağıtımı yapmaktır.

Bu sistem sayesinde, herhangi bir makinenin aşırı yüklenmesi ve cevap veremez hale gelmesi riski minimize edilir. Aynı zamanda, sistem genelinde bir dengenin korunması sağlanır. ELB, yüksek trafik anlarında bile kullanıcı deneyimini olumsuz etkilemeden, uygulamanın sorunsuz çalışmasına olanak tanır. Bu, özellikle e-ticaret siteleri, haber portalları ve online oyunlar gibi yüksek kullanıcı trafiğine sahip uygulamalar için hayati önem taşır.

ELB’nin Temel İşlevleri

  • Trafik Yönlendirme: ELB, internet trafiğini birden çok EC2 makinesine dağıtarak sunucuların daha verimli çalışmasını sağlar.
  • Healthy Check: ELB, belirlenen aralıklarla hedef sunucuların sağlığını kontrol ederek, herhangi bir sorun anında trafik akışını yönlendirebilir.
  • Üç Çeşit Load Balancer: AWS’de mevcut olan farklı ELB türleri, çeşitli ihtiyaçlara göre tasarlanmıştır:
  • Application Load Balancers (Uygulama Düzeyinde)
  • Network Load Balancers (Ağ Düzeyinde)
  • Gateway Load Balancers (Ağ Geçidi Düzeyinde)

Healthy Check ve ELB Davranışları

ELB’nin hedef gruplarına düzenli olarak sağlık kontrolleri yapması, sistem yöneticileri için büyük kolaylık sağlar. Bu kontroller, belirli aralıklarla sunuculara “Nasılsın?” diye sorar gibi, belirlenen hedeflere HTTP/HTTPS istekleri yollar. Bu sorguların sonuçlarına göre sunucular “sağlıklı” veya “sağlıksız” olarak sınıflandırılır.

Sağlık Kontrolü Yanıtları

  • 200 OK: Sunucunun sağlıklı olduğunu gösterir.
  • 500 Internal Server Error: Sunucuda bir sorun olduğunu işaret eder.

ELB Yapılandırmaları

  • Healthy Threshold: Sunucunun “sağlıklıyım” diye kaç defa yanıt vermesi gerektiğini tanımlar.
  • Unhealthy Threshold: Sunucunun “sağlıksızım” diye kaç defa yanıt verirse dikkate alınacağını belirler.
  • Timeout Süresi: Sunucunun bir isteğe ne kadar süre içinde yanıt vermesi beklenir. (Interval süresınden daha düşük olmalıdır)
  • Interval Ayarı: Sağlık kontrol isteklerinin ne sıklıkla yapıldığını ayarlar.

Bu ayarların hepsi, sunucu yükünün akıllıca yönetilmesi ve kesintisiz bir kullanıcı deneyimi sunulması için kritik öneme sahiptir. ELB’nin bu özelliklerini düzenlemek ve optimize etmek, sisteminizin her zaman yüksek performanslı ve güvenilir olmasını sağlar.

AWS Elastic Load Balancer Türleri ve Karşılaştırmaları

AWS’nin sağladığı esnek yük dengeleme çözümleri, farklı ihtiyaçlara hizmet edebilecek şekilde çeşitlenmiştir. İki ana Load Balancer tipi, Application Load Balancer (ALB) ve Network Load Balancer (NLB), birbirinden belirgin özellikler taşır.

Network Load Balancer (NLB)

  • Hız Odaklı: NLB, kontrol düzeyinden ödün vererek, daha hızlı bir hizmet sunar.
  • Daha Az Kontrol: NLB, ALB’nin aksine, paketlerin içeriğine odaklanmadan yüksek hızda çalışan, düşük gecikme süreli bir yük dengeleyicidir.

Application Load Balancer (ALB)

  • Kontrol ve Esneklik: ALB, paketlerin içeriğini inceleyebilir ve bu sayede gelişmiş yük dengeleme özellikleri sunar.
  • Authentication ve Stickness Özelliği: ALB, oturum bilgilerini ve kimlik doğrulamayı yönetme kabiliyetine sahiptir.

Stickness Nedir?

  • Oturum Yönetimi: Oturum bilgileri (örneğin, JSON Web Token) tarayıcıda saklanır ve sonraki isteklerde tekrar sunucuya gönderilir.
  • Sabit Oturum: Bir kullanıcıya özel cookie tanımlanır ve bu cookie’ye sahip kullanıcılar, bağlantı kurdukları aynı sunucuya yönlendirilir. Bu, oturum bilgilerinin farklı sunucular arasında kaybolmasını önler.

ALB’nin bu özelliği, özellikle kullanıcı oturumlarının korunmasının kritik olduğu küçük çaplı projeler için uygundur.

Büyük Ölçekli Projeler İçin NLB Kullanımı

  • Oturum Bilgilerinin Merkezi Yönetimi: Büyük projelerde, yüksek hız gerektiğinde, NLB tercih edilir. Oturum bilgileri, arka planda çalışan bir Reddis gibi bir veritabanına kaydedilir.
  • Çakışmayı Önleme: Böylece kullanıcı oturum bilgilerinin tutarlılığı sağlanır ve herhangi bir çakışma önlenmiş olur.

Route 53 DNS İle ELB Entegrasyonu

AWS Elastic Load Balancer (ELB), ölçeklenebilirlik ve yüksek erişilebilirlik sağlamanın yanı sıra, AWS Route 53 DNS hizmeti ile de sorunsuz bir şekilde çalışır. ELB, Route 53 DNS’in sunduğu akıllı trafik yönlendirme özelliklerinden faydalanarak, uygulamalarınıza gelen trafiği etkili bir şekilde yönetir.

DNS ve ELB’nin Rolü

  • Public IP Gereksinimi: ELB, trafik yönlendirme için public IP’ye ihtiyaç duymaz; private IP’lerle tüm işlevlerini yerine getirebilir. Bu durum, güvenlik ve maliyet optimizasyonu açısından önem taşır.
  • TTL (Time To Live) Süresi: ELB ile yapılandırılan DNS kayıtlarında genellikle 60 saniye olarak belirlenen TTL süresi, IP adreslerinin ne kadar süre ile hafızada tutulacağını belirler.

DNS Sorgulama Süreci ve Önbellekleme

  • DNS Sorgusu: Bir kullanıcı bir web sitesine erişmek istediğinde, alan adını bir DNS sunucusuna sorgular ve karşılık gelen IP adresini alır.
  • DNS Önbellekleme (Caching): Kısa süre içinde aynı siteye tekrar erişmek istediğinde, DNS sunucusuna tekrar sorgu yapılmasına gerek kalmadan, DNS önbellekleme sistemi devreye girer ve daha önce alınan IP adresini kullanır.
  • Host Dosyası Yönlendirmeleri: Kullanıcıların, işletim sistemlerindeki host dosyalarına müdahale ederek, belirli domain isimlerini doğrudan belirli IP adreslerine yönlendirmeleri de mümkündür. Bu sayede, DNS sunucularına sormadan, doğrudan hedef siteye ulaşım sağlanır.

AWS Route 53 ve ELB’nin bu entegrasyonu, kullanıcıların web sitelerine erişim sürecini hızlandırır ve sistem yöneticilerine DNS seviyesinde daha fazla kontrol ve esneklik sunar. TTL süresinin doğru şekilde ayarlanması, kullanıcıların en güncel sunucu adreslerine erişimini garantilerken, trafik yükünü azaltır ve DNS sorgulama trafiğini optimize eder.

Cross Zone Load Balancing: Yükü Dengeleyerek Verimliliği Artırmak

Cross Zone Load Balancing özelliği, AWS içinde yük dengelemeyi daha verimli ve adaletli bir hale getirir. Birden fazla availability zone’da (AZ) çalışan bir ELB yapılandırması için bu özellik, performansı ve yük dağıtımını optimize eder.

Cross Zone Load Balancing’in İşleyişi

  • Birden Çok AZ: Bir AWS kullanıcısı, birden çok AZ’da hizmet veriyorsa ve her bölgede eşit trafiği yönetmek istiyorsa, Cross Zone Load Balancing devreye girer.
  • Yük Dağıtımı: Bu özellik, ELB’nin tüm makinelere eşit miktarda trafiği dağıtmasını sağlar. Aksi takdirde, yalnızca bir bölgedeki makinelere yük yığılması ve diğer bölgedeki makinelere az yük düşmesi riski oluşabilir.

Cross Zone Load Balancing’in Faydaları

  • Dengeli Trafik: Tüm sunucular arasında yükü dengeli bir şekilde dağıtarak, her bir sunucunun optimizasyonunu sağlar.
  • Verimlilik: Makineler arasında yükün adil bir şekilde paylaşılması, genel sistem verimliliğini artırır.

ALB için Cross Zone Load Balancing, varsayılan olarak etkinleştirilmiş durumdadır. Bu, kullanıcıların yük dengeleme yapılandırmalarında ek bir adım atmadan bu özelliğin avantajlarından yararlanabilmelerini sağlar.

AWS altyapısının güçlü yanlarından biri olan Cross Zone Load Balancing, büyük ve karmaşık uygulamaların yönetiminde büyük bir kolaylık ve performans artışı sağlar. Her bölgedeki sunucunun adil bir kullanımı ve dolayısıyla uzun vadede daha stabil bir sistem performansı bu özellikle mümkün kılınır. Bu da, geniş coğrafyalara yayılmış kullanıcı kitlesi olan uygulamalar için özellikle önemlidir, çünkü bu sayede her kullanıcı en hızlı yanıtı alır ve deneyim bütünlüğü korunur.

Bu noktada, Elastic Load Balancer’ınızı AWS Management Console üzerinden nasıl oluşturabileceğinize dair görsel bir rehbere geçiş yapıyoruz. Aşağıda, Application Load Balancer’ınızı adım adım nasıl ayarlayacağınızı, kullanıcı arayüzündeki önemli noktalara dikkat çekerek, ekran görüntüleri eşliğinde açıklayacağım.

Madde 1: AWS Management Console’da EC2 Dashboard’unuza giriş yapın ve sol taraftaki navigasyon menüsünden “Target Groups” sekmesini bulun. Bu bölüm, yükünüzün dağıtılacağı EC2 instance’larınızı gruplandırmanıza olanak tanır.

Madde 2: “Create Target Group” düğmesine tıklayın ve ardından grup için bir ad verin. Bu, trafik yönlendirme politikalarınızı ve sağlık kontrollerinizi tanımlamanıza yardımcı olacak.

Madde 3: “Register Targets” sekmesine gidin ve yük dengelemesi yapılacak instance’ları seçin. Her birinin yanında bulunan port alanına, trafik yönlendirilecek port numarası olan ‘80’ yazın. Sonra “Include as pending below” seçeneğine tıklayarak bu instance’ları target group’a ekleyin.

Madde 4: Ekranda görülen “Create” düğmesine tıklayarak target group oluşturulmasını tamamlayın. Bu adım, seçilen instance’ların belirttiğiniz ayarlarla gruplandırılmasını sağlar.

Madde 5: Oluşturma işlemi tamamlandığında, başarı mesajı ve target group detaylarının yer aldığı bir onay ekranı göreceksiniz. Bu ekran, işleminizin başarılı olduğunu teyit eder.

Madde 6: EC2 Dashboard’ınıza geri dönün ve sol taraftaki menüden “Load Balancers” sekmesini seçin. Burası, yük dengeleyicinizi oluşturacağınız alandır.

Madde 7: “Create Load Balancer” seçeneğine tıklayın ve açılan sayfada Application Load Balancer için gerekli konfigürasyonları yapın. Load balancer adını, ağ ayarlarını, güvenlik gruplarını ve diğer gerekli konfigürasyonları belirleyin.

Madde 8: Load balancer oluşturma işlemini bitirip “Create” butonuna bastığınızda, ALB’nin başarıyla oluşturulduğunu belirten bir onay ekranı ile karşılaşacaksınız.

Madde 9: “Load Balancers” listesinde, yeni oluşturduğunuz ALB’yi bulun ve üzerine tıklayın. Detaylar sayfasında, yük dengeleyicinizin DNS adını görebilir ve bu adresi kullanarak trafik yönlendirme işlemine başlayabilirsiniz.

Çalışmalarımı yakından takip etmek ve iletişime geçmek için:

https://www.linkedin.com/in/mrpurtas/

Bir sonraki yazımda görüşmek üzere…

Teşekkürler!

--

--