Load Balancer
Load Balancer, client’tan gelen trafiği arka plandaki birden fazla sunucuya dengeli şekilde dağıtan katmandır.
Basitçe:
Tek bir giriş kapısından gelen trafiği içerideki çalışanlara adil biçimde paylaştıran görevli.
Horizontal scaling’in temel bileşenidir. Sisteme 10 sunucu eklediğinizde, hangi isteğin hangi sunucuya gideceğine Load Balancer karar verir.
Neden Load Balancer Kullanırız?
1. High Availability
- Bir sunucu çökerse health check ile tespit edilir.
- Trafik sağlam sunuculara yönlendirilir.
- Kullanıcı kesinti yaşamaz.
2. Ölçeklenebilirlik
- Yeni sunucu eklendiğinde Load Balancer’a tanıtılır.
- Trafik otomatik olarak dağıtılır.
3. Yük Dengesi
- Hiçbir sunucu aşırı yüklenmez.
- Sistem performansı stabil kalır.
Temel Mimari
Client
↓
Load Balancer
↓
Backend 1
Backend 2
Backend 3
Load Balancer Ne İş Yapar?
1. Trafik Dağıtımı
Her isteği uygun bir sunucuya yönlendirir.
2. Health Check
- Sunuculara periyodik kontrol isteği gönderir.
- Yanıt vermeyenleri devre dışı bırakır.
- Düzelen sunucuyu tekrar devreye alır.
3. Failover
Bir backend düşerse otomatik olarak trafik kesilir.
4. SSL Termination
- HTTPS trafiği Load Balancer çözer.
- Backend’ler HTTP çalışabilir.
- CPU yükü azalır.
5. Temel Güvenlik
- Rate limiting
- IP bloklama
- Basit firewall kuralları
Load Balancer Algoritmaları
1. Round Robin
Sırayla dağıtır.
Req1 → Server1
Req2 → Server2
Req3 → Server3
Basit ve yaygındır.
2. Least Connections
En az aktif bağlantıya sahip sunucu seçilir.
Uzun süren işlemler için daha adildir.
3. IP Hash
Kullanıcı IP’sine göre aynı sunucuya yönlendirme yapılır.
Stateful sistemlerde kullanılır.
4. Weighted Distribution
Güçlü sunucuya daha fazla trafik gönderilir.
Server1 (weight 3)
Server2 (weight 1)
L4 vs L7 Load Balancer
Layer 4 (Transport Layer)
- IP ve Port bilgisine bakar.
- Paket içeriğini incelemez.
- Çok hızlıdır.
Layer 7 (Application Layer)
- HTTP header ve URL’ye bakabilir.
- /api ve /images farklı sunuculara yönlendirilebilir.
- Daha esnek ama daha maliyetlidir.
Health Check Mekanizması
Load Balancer düzenli olarak şunu sorar:
"Çalışıyor musun?"
Eğer sunucu yanıt vermezse:
- Unhealthy olarak işaretlenir.
- Trafik gönderilmez.
- Düzeldiğinde tekrar dahil edilir.
Bu mekanizma high availability’nin temelidir.
Modern Trafik Akışı
Internet
↓
CDN
↓
Load Balancer / Reverse Proxy
↓
App Servers
↓
Database
Bir kullanıcı siteye girdiğinde:
- İstek Reverse Proxy’ye ulaşır.
- SSL çözülür.
- Load Balancer uygun sunucuyu seçer.
- Uygulama isteği işler.
- Gerekirse Redis üzerinden session kontrol edilir.
- Yanıt kullanıcıya döner.
Reverse Proxy Nedir?
Proxy istemcinin kimliğini gizler.
Reverse Proxy ise sunucuların kimliğini gizler.
Dış dünya yalnızca proxy adresini bilir. Arkada kaç sunucu olduğu görünmez.
Sticky Sessions
Stateless sistemlerde genelde gerekmez.
Ama stateful uygulamalarda:
Load Balancer aynı kullanıcıyı hep aynı sunucuya yönlendirir.
Sorun:
- Horizontal scaling zorlaşır
- Sunucu düşerse session kaybolur
Bu yüzden modern mimarilerde:
Session → Redis gibi merkezi bir yerde tutulur.
Load Balancer’ın Kendisi Çökerse?
Eğer tek bir Load Balancer varsa ve o düşerse:
- Arkadaki 100 sunucu çalışıyor olsa bile sistem erişilemez.
Gerçek sistemlerde:
- En az 2 Load Balancer bulunur.
- Floating IP / VRRP ile failover sağlanır.
- Biri düşerse diğeri devralır.
Kritik Nokta: Database Bottleneck
100 uygulama sunucusu tek bir veritabanına bağlanırsa:
- Asıl darboğaz database olur.
- Scaling sadece application layer’da yapılmış olur.
Çözüm:
- Read replica
- Sharding
- Connection pooling
- Caching (Redis)
- Query optimizasyonu
Özet
Load Balancer:
- Trafiği dağıtır
- Sunucu sağlığını izler
- High availability sağlar
- Horizontal scaling’in merkezindedir
Stateless backend ile doğal uyumludur ve modern cloud-native mimarilerin temel bileşenidir.