← Blog'a Dön
MIMARI

Load Balancing Nedir? Yük Dengeleme Stratejileri ve Algoritmaları

F. Çağrı Bilgehan9 Şubat 202610 dk okuma
load balancingnginxölçeklenebilirlikmimari

Load Balancing Nedir? Yük Dengeleme Rehberi

Tek bir sunucu tüm trafiği kaldıramıyor mu? Bir sunucu çökünce tüm sistem mi duruyor? Load Balancer ile trafiği birden fazla sunucuya dağıtın, yüksek erişilebilirlik ve performans kazanın.

Load Balancing Tanımı

Load Balancing, gelen ağ trafiğini birden fazla sunucu arasında dağıtan bir tekniktir. Tek bir sunucunun darboğaz olmasını engeller, yüksek erişilebilirlik (high availability) sağlar.

                    ┌─ Server 1 ──→ App
Client ──→ Load    ├─ Server 2 ──→ App
           Balancer├─ Server 3 ──→ App
                    └─ Server 4 ──→ App

Load Balancing Algoritmaları

1. Round Robin

İstekleri sırayla dağıtır. En basit yöntem.

İstek 1 → Server 1
İstek 2 → Server 2
İstek 3 → Server 3
İstek 4 → Server 1 (başa döner)

2. Weighted Round Robin

Güçlü sunuculara daha fazla trafik yönlendirir.

Server 1 (weight: 3) → İstek 1, 2, 3
Server 2 (weight: 1) → İstek 4
Server 3 (weight: 2) → İstek 5, 6

3. Least Connections

En az aktif bağlantıya sahip sunucuya yönlendirir.

4. IP Hash

Aynı IP adresini her zaman aynı sunucuya yönlendirir (sticky session).

5. Least Response Time

En hızlı yanıt veren sunucuya yönlendirir.

Nginx ile Load Balancing

upstream backend {
    least_conn;
    server 10.0.0.1:3000 weight=3;
    server 10.0.0.2:3000 weight=2;
    server 10.0.0.3:3000;
    server 10.0.0.4:3000 backup;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Health Check

Sağlıklı olmayan sunucuları otomatik olarak devre dışı bırakma:

upstream backend {
    server 10.0.0.1:3000 max_fails=3 fail_timeout=30s;
    server 10.0.0.2:3000 max_fails=3 fail_timeout=30s;
}

Load Balancer Katmanları

| Katman | Çalışma Seviyesi | Bilgi | |--------|-----------------|-------| | L4 | Transport (TCP/UDP) | IP + Port bazında yönlendirme, hızlı | | L7 | Application (HTTP) | URL, header, cookie bazında yönlendirme |

L7 Yönlendirme Örneği

location /api/ {
    proxy_pass http://api-servers;
}

location /static/ {
    proxy_pass http://cdn-servers;
}

location /ws/ {
    proxy_pass http://websocket-servers;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $upgrade;
}

Load Balancer Araçları

| Araç | Tür | Avantaj | |------|-----|---------| | Nginx | L4/L7 | Performans, yaygınlık | | HAProxy | L4/L7 | TCP desteği, güvenilirlik | | AWS ALB | L7 | AWS entegrasyonu | | GCP LB | L4/L7 | Global, anycast | | Traefik | L7 | Container-native, auto-discovery |

SSL Termination

HTTPS şifresini load balancer'da çözerek backend sunucuları yükten kurtarma:

Client ──HTTPS──→ Load Balancer ──HTTP──→ Backend
                  (SSL burada çözülür)

Best Practices

  1. Health check zorunlu — Sağlıksız sunucuları otomatik çıkarın
  2. Graceful shutdown — Sunucu kapanırken mevcut bağlantıları tamamlasın
  3. Session yönetimi — Sticky session yerine shared session (Redis) tercih edin
  4. SSL Termination — TLS'i load balancer'da sonlandırın
  5. Monitoring — Her sunucunun yanıt süresini ve hata oranını izleyin
  6. Auto-scaling — Trafik artışında otomatik sunucu ekleme

Sonuç

Load Balancing, ölçeklenebilir ve yüksek erişilebilir sistemlerin temelidir. Doğru algoritma ve yapılandırma ile uygulamanız binlerce eş zamanlı isteği sorunsuz karşılayabilir.

Load balancing ve dağıtık sistem kavramlarını LabLudus platformunda öğrenin.

İlgili Yazılar

Message Queue Nedir? RabbitMQ ve Kafka ile Asenkron İletişim Rehberi

Message Queue nedir, neden kullanılır? RabbitMQ, Apache Kafka, asenkron mimari, pub/sub, event-driven tasarım ve kuyruk yapıları rehberi.

Yazılım Mimarisi Nedir? Temelden İleri Seviyeye Kapsamlı Rehber

Yazılım mimarisi nedir, neden önemlidir ve nasıl öğrenilir? Mimari desenlerin, kalite özelliklerinin ve kariyer yolunun detaylı incelemesi.