Load balancer, reverse proxy'den farklı mıdır?
Kısa cevap
İki kavram örtüşür ama aynı değildir. Reverse proxy, sunucuların önünde durup istemcinin bağlantısını onlar adına karşılar ve isteği arkadaki sunucuya kendi bağlantısıyla iletir; arkada tek bir sunucu da olabilir. Load balancer ise trafiği birden fazla sunucuya dağıtır. Bağlantıyı sonlandırarak çalışan bir load balancer aynı zamanda reverse proxy'dir; paketleri bağlantıyı sonlandırmadan ileten bir load balancer ise proxy değildir. TR7'de HTTP ve L7 TCP vService'ler reverse proxy olarak çalışıp yük dengeler, Network vService'ler ise bağlantıyı sonlandırmadan dağıtım yapar.
Temel Bilgi
HTTP standardı (RFC 9110 §3.7 Intermediaries) istemci ile sunucu arasındaki ara katmanları üçe ayırır: proxy istemcinin kendi yapılandırmasıyla seçtiği ara katmandır; gateway (diğer adıyla reverse proxy) istemciye karşı asıl sunucu gibi davranır ve aldığı istekleri arkadaki bir ya da birden fazla sunucuya iletir; tunnel ise mesajlara dokunmadan iki bağlantı arasında veri taşır. Load balancer bu sınıflandırmada ayrı bir tür değildir; bir reverse proxy'nin ya da bağlantıyı sonlandırmadan çalışan bir ağ cihazının üstlendiği dağıtım görevidir.
Nasıl Çalışır?
TR7 ⇄ Kurum Servisi (2. bağlantı)
TR7 paketleri yönlendirir
- Reverse proxy olarak TR7 bağlantıyı kendisi sonlandırır ve Kurum Servisine kendi bağlantısını açar (HTTP'de açık bir bağlantıyı yeniden de kullanabilir). İsteği okuyabildiği için TLS sonlandırma, içeriğe göre yönlendirme, header düzenleme, cache ve güvenlik denetimi yapabilir.
- Bağlantıyı sonlandırmadan çalışırken TR7 bağlantının ilk paketinde hedefi seçer ve aynı bağlantının paketlerini o Kurum Servisine iletir. İçeriğe bakmadığı için gecikme en düşük düzeydedir, ancak L7 özellikleri bulunmaz.
Karşılaştırma
| Reverse proxy | Load balancer | |
|---|---|---|
| Temel görevi | Sunucuların önünde durup istekleri onlar adına karşılamak | Trafiği birden fazla sunucuya dağıtmak |
| Arkadaki sunucu sayısı | Bir veya daha fazla | Birden fazla |
| Bağlantıyı sonlandırır mı? | Evet | L7'de ve TCP proxy olarak çalışırken evet; L3/L4'te bağlantıyı sonlandırmadan da dağıtabilir |
| Öne çıkan işlevler | TLS sonlandırma, cache, compression, header düzenleme | Dağıtım algoritması, health check, persistence |
| İstemci tarafında ayar | Gerekmez; alan adı reverse proxy'nin adresini gösterir | Gerekmez; istemci load balancer'ın sanal adresine bağlanır |
| TR7'de | HTTP ve L7 TCP vService | HTTP, L7 TCP ve Network vService |
TR7'de
| vService tipi | Çalışma biçimi | Bağlantıyı sonlandırır | Kurum Servisinin gördüğü kaynak IP |
|---|---|---|---|
| HTTP | Reverse proxy + yük dengeleme | Evet | Varsayılan olarak TR7'nin IP'si; X-Forwarded-For header'ı ya da SNAT → Use Client IP ile istemcinin IP'si iletilir |
| L7 TCP | Reverse proxy (TCP) + yük dengeleme | Evet | Varsayılan olarak TR7'nin IP'si; SNAT → Use Client IP ya da Kurum Servisi destekliyorsa Proxy (Proxy Protocol) ile istemcinin IP'si iletilir |
| Network | Bağlantıyı sonlandırmadan yük dengeleme | Hayır | LB Mode'a göre: Direct Server Return ve Route Mode'da istemcinin IP'si, SNAT'ta seçilen SNAT IP |
Varsayılan SNAT ayarında (Default) TR7'nin Kurum Servisine bağlanırken kullandığı kaynak adres, Kurum Servisinin route table'ında sunucuya giden arayüzün, sunucuyla (gateway üzerinden gidiliyorsa gateway'le) aynı subnet'teki Interface IP'sidir; cluster'da her cihaz kendi Interface IP'sini kullanır.
Sık Karıştırılan Noktalar
- "Her load balancer bir reverse proxy'dir." Bağlantıyı sonlandırmadan çalışan load balancer (TR7'de Network vService) proxy değildir; paketleri yönlendirir.
- "Reverse proxy yalnızca birden fazla sunucu varken kullanılır." Reverse proxy tek bir sunucunun önünde de çalışır; TLS sonlandırma ve güvenlik denetimi gibi işlevler tek sunucuda da geçerlidir.
- "TR7 arkasındaki sunucu istemcinin IP'sini zaten görür." HTTP ve L7 TCP vService'lerde bağlantıyı TR7 kurduğu için sunucu varsayılan olarak TR7'nin IP'sini görür: Backend sunucularım neden tüm istekleri TR7'nin IP'sinden geliyormuş gibi görüyor?
- "Reverse proxy ile forward proxy aynı şeydir." Forward proxy istemcilerin önünde, reverse proxy sunucuların önünde durur: Proxy ve Reverse Proxy arasındaki fark nedir?
Dokümantasyonda nasıl yapılır
