Bilgisayar Ağları - Ağda Yük Dengeleme
**Ağda Yük Dengeleme (Load Balancing)**, ağ trafiğini veya işlem yükünü birden fazla sunucu, bağlantı veya kaynak üzerinde dağıtarak **performansı artıran, güvenilirliği sağlayan ve hata toleransı** ekleyen kritik bir ağ hizmetidir.
---
### **1. Yük Dengelemenin Temel Amacı ve Faydaları**
* **Performans Artışı:** Tek bir sunucunun kapasitesinin aşıldığı durumlarda, trafik birden fazla sunucuya dağıtılarak yanıt süreleri kısaltılır ve sistem performansı optimize edilir.
* **Yüksek Erişilebilirlik (High Availability):** Bir sunucu veya bileşen arızalandığında, yük dengeleyici trafiği sağlıklı sunuculara yönlendirir. Kullanıcılar için kesintisiz hizmet sağlar.
* **Ölçeklenebilirlik (Scalability):** Artan trafiği karşılamak için sunucu havuzuna (server pool/backend pool) yeni sunucular kolayca eklenebilir. Bu, yatay ölçeklendirme (scale-out) için temel mekanizmadır.
* **Bakım Kolaylığı:** Sunuculara sırayla bakım yapılabilir. Yük dengeleyici, bakımdaki sunucuyu havuzdan çıkarır ve trafiği diğerlerine yönlendirir.
---
### **2. Yük Dengeleme Türleri ve Katmanları**
Yük dengeleyiciler, OSI modelinin farklı katmanlarında çalışabilir:
#### **2.1. Katman 4 (Transport Layer) Yük Dengeleme**
* **Nasıl Çalışır?** TCP/UDP paket başlıklarındaki **kaynak ve hedef IP adresleri ile port numaralarına** bakarak karar verir.
* **Avantajı:** Hızlı ve basittir. Paketin içeriğini (örneğin, URL'yi) incelemez.
* **Dezavantajı:** Akıllı yönlendirme yapamaz. Örneğin, aynı kullanıcı oturumunu (session) farklı sunuculara gönderebilir.
* **Kullanım Alanı:** DNS, SSH, FTP gibi protokoller.
#### **2.2. Katman 7 (Application Layer) Yük Dengeleme**
* **Nasıl Çalışır?** HTTP/HTTPS gibi uygulama katmanı protokollerinin içeriğini inceler. **URL yoluna, host header'ına, çerez (cookie) bilgisine veya HTTP metoduna** göre karar verir.
* **Avantajı:** Çok daha akıllı ve bağlamsal (context-aware) yönlendirme yapar.
* `/api` yolundaki istekleri bir sunucu grubuna, `/images` yolundakileri başka bir gruba yönlendirebilir.
* SSL/TLS terminasyonu yapabilir (SSL Offloading), böylece sunucuların şifreleme yükünden kurtulmasını sağlar.
* **Dezavantajı:** Daha fazla işlem gücü gerektirir, Katman 4'e göre daha yavaş olabilir.
* **Kullanım Alanı:** Modern web uygulamaları, API'lar, mikroservis mimarileri.
---
### **3. Yük Dengeleme Algoritmaları (Yönlendirme Metodları)**
Trafiği sunuculara dağıtmak için kullanılan akıllı yöntemlerdir:
| Algoritma | Açıklama | Kullanım Senaryosu |
| :--- | :--- | :--- |
| **Round Robin** | İstekleri sırayla tüm sunuculara dağıtır. | Tüm sunucuların aynı kapasitede olduğu basit senaryolar. |
| **Least Connections** | En az aktif bağlantıya sahip sunucuya yönlendirir. | Sunucu yüklerinin eşitsiz olduğu, bağlantı sürelerinin değişken olduğu durumlar. |
| **Least Response Time** | En düşük yanıt süresine ve en az bağlantıya sahip sunucuyu seçer. | Performansın kritik olduğu uygulamalar. |
| **IP Hash** | İstemci IP'sine göre bir hash değeri hesaplar ve aynı IP'den gelen istekler hep aynı sunucuya gider. | **Session Persistence (Sticky Sessions)** için idealdir. Kullanıcı oturum bilgilerinin bir sunucuda tutulduğu durumlar. |
| **Weighted Round Robin** | Sunuculara kapasitelerine göre ağırlık (weight) verilir. Daha güçlü sunucu daha fazla istek alır. | Sunucuların donanım kapasitelerinin farklı olduğu heterojen ortamlar. |
---
### **4. Donanım vs. Yazılım Tabanlı Yük Dengeleyiciler**
| Özellik | Donanım Tabanlı (F5, Citrix ADC) | Yazılım Tabanlı (HAProxy, NGINX) |
| :--- | :--- | :--- |
| **Performans** | Çok yüksek, özel ASIC çipleri. | Genel amaçlı CPU'da çalışır, yeterince hızlıdır. |
| **Maliyet** | Yüksek (CAPEX). | Düşük (genellikle OPEX, açık kaynak seçenekleri mevcut). |
| **Esneklik** | Daha az esnek, fiziksel cihaz. | Çok esnek, sanal makinelerde/container'larda çalıştırılabilir. |
| **Ölçeklenebilirlik** | Cihaz kapasitesi ile sınırlıdır. | Bulut ortamında otomatik ölçeklenebilir. |
| **Kullanım** | Geleneksel, yüksek hacimli kurumsal ağlar. | Modern bulut, DevOps ve mikroservis mimarileri. |
---
### **5. Bulut Yük Dengeleyicileri**
Bulut sağlayıcıları, yönetimi kendilerinde olan tam entegre yük dengeleyici hizmetleri sunar:
* **AWS:** **Application Load Balancer (ALB - L7)**, **Network Load Balancer (NLB - L4)**, Classic Load Balancer.
* **Azure:** **Azure Load Balancer (L4)**, **Azure Application Gateway (L7)**, Front Door.
* **Google Cloud:** **Global Load Balancing**, Cloud Load Balancing.
**Avantajları:** Otomatik ölçeklenme, yerleşik güvenlik (WAF, DDoS koruması), yüksek kullanılabilirlik ve entegre sertifika yönetimi (SSL/TLS) sunarlar.
---
### **6. Health Checks (Sağlık Kontrolleri)**
Yük dengeleyicinin en önemli fonksiyonlarından biridir. Sunucu havuzundaki her bir sunucuya periyodik olarak istek göndererek (örneğin, bir HTTP `/health` endpoint'ine) çalışıp çalışmadığını kontrol eder. Yanıt alamadığı veya hata kodu aldığı sunucuyu havuzdan otomatik olarak çıkarır. Sağlıklı hale gelince geri ekler.
---
### **7. Kullanım Senaryoları**
1. **Web Uygulamaları:** Binlerce eşzamanlı kullanıcı isteğini birden fazla web sunucusuna dağıtmak.
2. **Mikroservis Mimari:** Farklı servisler için farklı yönlendirme kuralları (örneğin, `/users` istekleri User Service'e, `/orders` istekleri Order Service'e).
3. **Yüksek Erişilebilirlik:** Kritik uygulamaları coğrafi olarak farklı veri merkezlerinde çalıştırıp trafiği sağlıklı olan bölgeye yönlendirmek (Global Server Load Balancing - GSLB).
4. **SSL Offloading:** Gelen şifreli HTTPS trafiğinin yük dengeleyicide çözülmesi ve sunuculara şifresiz (HTTP) olarak iletilmesi. Sunucuların işlem yükünü azaltır.
Sonuç
Yük dengeleme, modern ve ölçeklenebilir herhangi bir ağ veya uygulama mimarisinin **olmazsa olmaz** bir bileşenidir. Sadece performans için değil, aynı zamanda **hata toleransı ve sistemin dayanıklılığı** için de kritik öneme sahiptir. Doğru algoritma ve çözümün seçimi, uygulamanın ihtiyaçlarına (session durumu, trafik türü, ölçeklenebilirlik gereksinimi) bağlıdır.
Yorumlar
Yorum Gönder