Load balancer (yük dengeleyici), gelen ağ trafiğini (genelde web/uygulama istekleri) birden fazla sunucu arasında dağıtan bir bileşendir. Amaç: tek bir sunucunun aşırı yüklenmesini önlemek ve bir sunucu arızalandığında trafiği otomatik olarak diğerlerine yönlendirerek kesintisiz hizmet sağlamak.
Neden Gerekli?
Tek bir sunucu, belirli bir noktadan sonra artan trafik hacmini karşılayamaz hale gelir (yavaşlama, zaman aşımı). Ayrıca tek sunucuya bağımlılık, o sunucu arızalandığında tüm hizmetin durması anlamına gelir (single point of failure). Load balancer, birden fazla sunucuyu tek bir "sanal" hizmet noktası gibi göstererek her iki sorunu da çözer.
Yaygın Dağıtım Algoritmaları
| Algoritma | Nasıl Çalışır |
|---|
| Round Robin | İstekler sırayla her sunucuya eşit dağıtılır |
| Least Connections | İstek, o an en az aktif bağlantısı olan sunucuya yönlendirilir |
| IP Hash | Aynı istemci IP'sinden gelen istekler her zaman aynı sunucuya yönlendirilir (oturum tutarlılığı için) |
| Weighted | Sunuculara kapasitelerine göre farklı ağırlık verilir, güçlü sunucu daha fazla trafik alır |
Health Check (Sağlık Kontrolü)
Load balancer'lar, arkasındaki sunucuları düzenli olarak "health check" ile kontrol eder (örneğin belirli bir URL'ye istek atıp yanıt bekler). Bir sunucu yanıt vermezse, load balancer otomatik olarak o sunucuyu dağıtım havuzundan çıkarır; sunucu tekrar sağlıklı hale geldiğinde otomatik olarak havuza geri eklenir.
Layer 4 vs Layer 7 Load Balancing
- Layer 4 (Transport katmanı): Sadece IP/port bilgisine bakarak yönlendirir, daha hızlı ama daha az esnek
- Layer 7 (Application katmanı): HTTP başlıkları, URL yolu gibi içerik bilgisine bakarak daha akıllı yönlendirme yapabilir (örneğin
/api isteklerini bir sunucu grubuna, /images isteklerini başka bir gruba yönlendirmek)
Yüksek Erişilebilirlikle İlişkisi
Load balancer, sanallaştırmadaki HA kavramına benzer bir amaca hizmet eder ama uygulama/network katmanında çalışır: HA bir VM'i arıza sonrası kurtarırken, load balancer zaten çalışan birden fazla kopyası arasında trafiği anlık olarak yönlendirir.
Özet
Load balancer, trafiği birden fazla sunucuya akıllıca dağıtarak hem performansı artırır hem de tek sunucu arızasının hizmeti tamamen durdurmasını önler.