Yük Dengeleyici (Load Balancer) Nedir?
Kısa tanım
Yük dengeleyici (load balancer), gelen trafiği aynı hizmeti veren birden fazla sunucuya dağıtan ve sağlıksız sunucuları otomatik olarak devreden çıkaran ağ bileşenidir. İstemci tek bir adrese bağlanır; isteği hangi sunucunun karşılayacağına yük dengeleyici karar verir. Katman 4'te TCP/UDP bağlantılarını, katman 7'de ise HTTP isteklerini içeriklerine göre yönlendirebilir. Böylece kapasite artar ve tek bir sunucunun arızası kesintiye dönüşmez.
Diğer adları: load balancer, load balancing, yük dengeleme, LB, L4/L7 load balancer

Tek adres, çok sunucu
Tek bir uygulama sunucusu iki sınırla karşılaşır: kaldırabileceği yükün bir tavanı vardır ve arızalandığında site tamamen durur. Yük dengeleyici, aynı uygulamayı çalıştıran birden fazla sunucunun önüne yerleşerek ikisini birden çözer. Kullanıcı ve DNS yalnızca yük dengeleyicinin adresini bilir; arka plandaki sunucular (backend, upstream) eklenip çıkarılabilir, güncellenebilir, birinin çökmesi dışarıdan fark edilmez.
Pratikte yük dengeleyici çoğu zaman bir reverse proxy olarak da çalışır: TLS bağlantısını sonlandırır, sıkıştırma yapar, arka plandaki sunucuların adreslerini dış dünyadan gizler. Bulut sağlayıcıların yönetilen yük dengeleyicileri, Nginx, HAProxy ve Cloudflare gibi servisler bu rolü üstlenebilir.
Katman 4 ve katman 7
| L4 (taşıma katmanı) | L7 (uygulama katmanı) | |
|---|---|---|
| Neyi görür? | IP adresleri ve portlar, TCP/UDP bağlantısı | HTTP yöntemi, URL yolu, başlıklar, çerezler |
| Yönlendirme kararı | Bağlantı bazında | İstek bazında; ör. /api/ bir sunucu grubuna, görseller başka birine |
| TLS | Genellikle şifreli trafiği olduğu gibi geçirir | TLS'i sonlandırıp isteği okur |
| Ek yük | Düşük, çok hızlı | Daha yüksek, ama çok daha esnek |
| Tipik kullanım | Veritabanı, e-posta, oyun sunucuları, HTTP dışı protokoller | Web siteleri ve API'ler |
Trafiği dağıtma yöntemleri
- Round robin: İstekler sırayla her sunucuya gönderilir. Varsayılan ve en basit yöntemdir.
- Ağırlıklı dağıtım: Güçlü sunucuya daha fazla pay verilir.
- Least connections: Yeni istek, o anda en az aktif bağlantısı olan sunucuya gider. İstek süreleri birbirinden çok farklıysa daha dengeli sonuç verir.
- IP hash: Aynı istemci IP'si hep aynı sunucuya düşer; basit bir oturum sürekliliği sağlar.
Açık kaynak Nginx'te bu yöntemler upstream bloğunda tanımlanır (Nginx yük dengeleme belgesi):
upstream uygulama {
least_conn;
server 10.0.0.11:3000 max_fails=3 fail_timeout=30s;
server 10.0.0.12:3000 max_fails=3 fail_timeout=30s;
}
server {
listen 443 ssl;
location / {
proxy_pass http://uygulama;
}
}Health check: hastayı ayırmak
Yük dengeleyicinin asıl değeri, bozuk bir sunucuya trafik göndermeyi bırakabilmesidir. İki yaklaşım vardır. Pasif kontrolde gerçek isteklerdeki hatalar izlenir; yukarıdaki örnekte bir sunucu 30 saniye içinde 3 kez başarısız olursa bir süre devreden çıkarılır. Açık kaynak Nginx bu yöntemi destekler; düzenli aralıklarla ayrı bir adresi yoklayan aktif health check ise Nginx'te ücretli NGINX Plus sürümünün özelliğidir, HAProxy ve bulut yük dengeleyicilerinde ise standarttır.
Aktif kontrol için uygulamada genellikle /healthz gibi hafif bir uç nokta hazırlanır. Burada bir denge vardır: kontrol yalnızca “süreç ayakta mı?” diye bakarsa, veritabanına bağlanamayan bir sunucu sağlıklı görünür; her bağımlılığı kontrol ederse, veritabanındaki kısa bir aksama bütün sunucuları aynı anda devreden çıkarabilir. Tüm sunucular düştüğünde kullanıcı genellikle bir 502 Bad Gateway hatası görür.
Oturumlar ve tek hata noktası
Kullanıcı oturumu sunucunun belleğinde tutuluyorsa, bir sonraki istek başka sunucuya düştüğünde kullanıcı kendini oturumu kapanmış bulur. Yapışkan oturum (sticky session) bunu yamalar, ama yük dengesini bozar ve sunucu kapandığında oturumlar yine kaybolur. Kalıcı çözüm, oturumu Redis gibi paylaşılan bir depoya veya imzalı bir çereze taşıyarak uygulama sunucularını durumsuz hale getirmektir.
Son olarak, yük dengeleyicinin kendisi de tek hata noktası olabilir. Yüksek erişilebilirlik için ya yedekli bir çift (aralarında taşınabilen bir sanal IP ile) ya da sağlayıcının yedekliliği üstlendiği yönetilen bir yük dengeleyici kullanılır. Bu, ölçeklenebilirlik planının ayrılmaz parçasıdır. Arka plan sunucularının da gerçek istemci IP'sini doğru alması için X-Forwarded-For başlığına yalnızca kendi yük dengeleyicinizden geldiğinde güvenilmelidir; aksi halde IP tabanlı hız sınırlaması ve loglar yanıltıcı olur.

