Load Balancer Mimarisi: Layer 4 ve Layer 7 Dengeleme Farkı
Load balancer, gelen istekleri arka planda çalışan birden fazla sunucuya (backend/upstream) dağıtarak hem yük paylaşımı hem de yüksek erişilebilirlik sağlayan bileşendir. Ancak "hangi katmanda" dağıtım yaptığı, cihazın yeteneklerini ve kullanım senaryolarını kökten değiştirir.
Layer 4 Dengeleme: Hız ve Şeffaflık
Layer 4 (L4) load balancer, OSI modelinin taşıma katmanında çalışır ve kararlarını yalnızca IP adresi, port numarası ve TCP/UDP başlık bilgisine bakarak verir. Paketin içeriğini (HTTP başlıkları, URL, cookie) hiç incelemez; bu nedenle çok düşük gecikmeyle, yüksek verimle çalışır. Tipik bir L4 dengeleyici (örneğin LVS/IPVS veya bir donanım load balancer), bir TCP bağlantısını kurulduğu andan itibaren aynı backend'e yönlendirir (connection-based). Örnek bir IPVS kuralı mantığı şöyledir:
ipvsadm -A -t 203.0.113.5:443 -s rr
ipvsadm -a -t 203.0.113.5:443 -r 10.0.0.11:443 -m
ipvsadm -a -t 203.0.113.5:443 -r 10.0.0.12:443 -m
Burada -s rr round-robin algoritmasını belirtir; her yeni bağlantı sırayla farklı bir backend'e gider. L4 dengeleme, protokolden bağımsız çalıştığı için hem HTTP hem de veritabanı, SMTP gibi TCP tabanlı herhangi bir trafiği dengeleyebilir.
Layer 7 Dengeleme: Akıllı Yönlendirme
Layer 7 (L7) load balancer, uygulama katmanında çalışır ve HTTP isteğinin içeriğini (URL yolu, host başlığı, cookie, hatta gövde) okuyarak yönlendirme kararı verir. Bu, "içerik farkındalıklı" (content-aware) yönlendirme sağlar. Örneğin nginx ile şu yapılandırma, URL yoluna göre farklı backend gruplarına yönlendirme yapar:
upstream api_servers { server 10.0.0.21:8080; server 10.0.0.22:8080; }
upstream static_servers { server 10.0.0.31:80; }
location /api/ {
proxy_pass http://api_servers;
}
location /static/ {
proxy_pass http://static_servers;
}
L7 dengeleyici ayrıca "sticky session" (aynı kullanıcıyı cookie'ye bakarak hep aynı sunucuya gönderme), SSL sonlandırma (TLS termination), sıkıştırma ve hatta A/B testi gibi uygulama seviyesi işlevleri üstlenebilir. Bunun bedeli, her isteği ayrıştırmak zorunda olduğu için L4'e göre daha fazla CPU tüketmesi ve göreceli olarak daha yüksek gecikmedir.
Dengeleme Algoritmaları ve Health Check
Her iki katmanda da yaygın algoritmalar şunlardır: round robin (sırayla dağıtım), least connections (en az aktif bağlantısı olan sunucuya öncelik), weighted (sunucu kapasitesine göre ağırlıklandırma) ve IP hash (aynı istemciyi hep aynı sunucuya gönderme). Ancak dengeleme tek başına yeterli değildir — bir backend çökerse trafiğin ona gönderilmeye devam etmemesi için health check mekanizması şarttır. HAProxy'de bu şu şekilde tanımlanır:
backend web_servers
balance leastconn
option httpchk GET /health
server web1 10.0.0.11:80 check
server web2 10.0.0.12:80 check
Bu yapılandırma, her sunucuya periyodik olarak /health endpoint'ine istek atar; yanıt vermeyen sunucu havuzdan otomatik çıkarılır.
Hangisini Seçmeli?
Ham TCP/UDP trafiği, çok yüksek performans gereksinimi veya protokolden bağımsız dengeleme gerekiyorsa L4 tercih edilir. Buna karşılık modern web mimarilerinde (mikroservisler, API gateway, çok kiracılı SaaS uygulamaları) URL veya host bazlı yönlendirme, SSL sonlandırma ve akıllı yönlendirme gerektiğinde L7 vazgeçilmezdir. Büyük ölçekli sistemlerde genellikle her iki katman birlikte kullanılır: dış hatta bir L4 dengeleyici (örn. donanım/anycast) trafiği veri merkezine sokar, arkasında bir L7 katmanı (nginx/HAProxy/Envoy) içerik bazlı yönlendirmeyi yapar. Daha fazla mimari yazı için Ağ Mimarisi kategorisine bakabilirsiniz.