Load Balancer vs Reverse Proxy — Aradaki fark nedir
Giriş
Load Balancer ve Reverse Proxy, sıkça karıştırılan iki temel ağ altyapısı bileşenidir. Her ikisi de istemcilerle sunucular arasında yer alır, her ikisi de istekleri kabul edip iletir. Ancak amaçları ve işlevleri farklıdır.
Pratikte birçok araç her iki rolü de birleştirir (Nginx, HAProxy) ve bu da karışıklığı daha da artırır. Konuyu ayrıntılı olarak inceleyelim.
Reverse Proxy — ne yapar
Reverse Proxy, backend sunucular adına istemcilerden gelen istekleri kabul eden bir sunucudur. İstemci, tam olarak hangi sunucuyla iletişim kurduğunu bilmez.
Temel işlevler
Altyapının gizlenmesi — istemciler yalnızca proxy'nin IP'sini görür, gerçek sunucuları değil. Bu, güvenliği artırır.
SSL sonlandırma — proxy, SSL/TLS işlemlerini üstlenerek kriptografik yükü backend sunuculardan alır.
Önbellekleme — tekrarlanan istekler için yanıtların backend'e başvurmadan saklanması.
Sıkıştırma — bant genişliğinden tasarruf etmek için yanıtların gzip/brotli ile sıkıştırılması.
Saldırı koruması — kötü amaçlı isteklerin filtrelenmesi, DDoS koruması.
URL yeniden yazma — isteğin yolunun backend'e iletilmeden önce değiştirilmesi.
Header ekleme — X-Real-IP, X-Forwarded-For ve diğer servis başlıkları.
Load Balancer — ne yapar
Load Balancer, yükü optimize etmek ve hata toleransı sağlamak için gelen istekleri birden fazla backend sunucu arasında dağıtan bir sunucudur.
Temel işlevler
Yük dağıtımı — belirlenen algoritmaya göre isteklerin sunucular arasında dengeli dağıtılması.
Health check — backend sunucuların erişilebilirliğinin sürekli denetlenmesi. Erişilemeyen sunucular havuzdan çıkarılır.
Oturum kalıcılığı — kullanıcı oturumunun tek bir sunucuya bağlanması (sticky session).
Hata toleransı — sunucu arızasında trafiğin otomatik olarak yönlendirilmesi.
Ölçeklendirme — kesinti olmadan yeni sunucuların eklenmesi.
Dengeleme algoritmaları
| Algoritma | Açıklama | Ne zaman kullanılır |
|---|---|---|
| Round Robin | Sıralı dağıtım | Aynı özellikteki sunucular |
| Weighted Round Robin | Sunucu ağırlığını dikkate alır | Farklı kapasitedeki sunucular |
| Least Connections | En az bağlantısı olan sunucuya | Farklı sürelerdeki istekler |
| IP Hash | İstemci IP hash'ine göre | Oturum kalıcılığı gerektiğinde |
| Least Response Time | En hızlı sunucuya | Hız kritik olduğunda |
| Random | Rastgele seçim | Basitlik |
Karşılaştırma
| Parametre | Reverse Proxy | Load Balancer |
|---|---|---|
| Ana amaç | İstemci ile sunucu arasında aracı | Yük dağıtımı |
| Backend sunucular | 1+ | 2+ (genellikle) |
| SSL sonlandırma | Evet | Zorunlu değil |
| Önbellekleme | Evet | Hayır |
| Health check | Temel | Gelişmiş |
| Dengeleme | Temel | Gelişmiş |
| Sıkıştırma | Evet | Hayır |
| URL yeniden yazma | Evet | Hayır |
| L4 (TCP) | Bazıları | Evet |
| L7 (HTTP) | Evet | Evet |
Rollerin örtüştüğü yerler
Gerçekte araçların çoğu her iki rolü de birleştirir:
Nginx — reverse proxy olarak başladı, ancak health check, weighted round robin ve least connections ile upstream dengelemeyi destekler.
HAProxy — load balancer olarak başladı, ancak SSL sonlandırmayı, başlıkları ve yönlendirme için ACL'leri destekler.
Envoy — her iki rolü de tam destekleyen, ayrıca service mesh sunan evrensel bir proxy olarak tasarlandı.
Traefik — konteynerler için otomatik yapılandırma, reverse proxy + load balancer.
Dengeleme katmanları
L4 (taşıma katmanı)
TCP/UDP seviyesinde dengeleme. Dengeleyici yalnızca IP ve portu görür; isteğin içeriğini analiz etmez. Hızlıdır, ancak içeriğe bağlı yönlendirme yoktur.
L7 (uygulama katmanı)
HTTP seviyesinde dengeleme. URL, başlıklar ve çerezler analiz edilir. İsteğin içeriğine göre yönlendirmeye izin verir. L4'ten yavaştır, ancak daha esnektir.
Farkın örneği
L4 şunu görür: 443 portuna TCP bağlantısı → algoritmaya göre dağıtır.
L7 şunu görür: Cookie: session=abc123 başlıklı GET /api/users → belirli bir backend'e yönlendirir.
Proxy sektöründe uygulama
Proxy sağlayıcıları
Proxy sağlayıcıları her iki bileşeni de kullanır:
Reverse Proxy — istemci bağlantılarını kabul eden, kimlik doğrulamayı yürüten ve uygun IP havuzuna yönlendiren ön uç ağ geçidi.
Load Balancer — hata toleransı için istekleri farklı veri merkezlerindeki proxy sunucu havuzları arasında dağıtır.
Kendi altyapınız
Kendi proxy çiftliğinizi kurarken:
1. Girişteki bir Load Balancer trafiği proxy sunucular arasında dağıtır
2. Her proxy sunucu, hedef sitelere yönelik forward proxy olarak çalışır
3. Health check'ler her proxy'nin erişilebilirliğini denetler
Hangisini seçmeli
Yalnızca Reverse Proxy gerekir, eğer:
- Tek bir backend sunucunuz varsa
- SSL sonlandırma ve önbellekleme gerekiyorsa
- Altyapınızı gizlemek istiyorsanız
Load Balancer gerekir, eğer:
- Birden fazla backend sunucu varsa
- Hata toleransı gerekiyorsa
- Yükün eşit dağıtılması kritikse
Her ikisi de gerekir (en sık karşılaşılan durum):
- Nginx, HAProxy veya Traefik kullanın — ikisini de yapabilirler
Sonuç
Reverse Proxy ve Load Balancer, tek bir görevin iki yüzüdür: istemciler ile sunucular arasındaki trafiği yönetmek. Reverse Proxy aracılık işlevlerine (SSL, önbellekleme, güvenlik) odaklanırken, Load Balancer yük dağıtımına ve hata toleransına odaklanır. Modern altyapıda çoğunlukla her iki rolü birleştiren bir araç kullanılır.
