Load balancer nedir, ne işe yarar?
Kısa cevap
Load balancer, gelen trafiği tek bir adreste karşılayıp aynı hizmeti veren birden fazla sunucuya dağıtan katmandır. Sunucuların sağlığını health check ile sürekli izler ve trafiği yalnızca yanıt verebilen sunuculara gönderir; böylece bir sunucu çökse bile hizmet kesilmez, kapasite ise yeni sunucu eklenerek artırılır. TR7'de bu işi Load Balancer - ADC ürünü yapar: trafik bir vService'te karşılanır ve sağlıklı Kurum Servisi'lere dağıtılır.
Nasıl Çalışır?
İstemciler yalnızca load balancer'ın sunduğu tek bir adrese bağlanır; arkada kaç sunucu olduğunu ve hangisine yönlendirildiklerini bilmezler. Load balancer her istekte şu işi yapar:
- Karşılar: İstek, load balancer üzerindeki sanal adreste (IP:port) karşılanır.
- Seçer: Bir dağıtım algoritması (sırayla, en az bağlantısı olana, sunucu kapasitesine göre ağırlıklı…) sunuculardan birini seçer.
- Yalnızca sağlıklılara gönderir: Seçim, health check'i geçen sunucular arasında yapılır. Yanıt vermeyen sunucu dağıtımdan otomatik çıkarılır, düzeldiğinde geri alınır.
Sunucu eklenip çıkarılsa bile istemcinin bağlandığı adres değişmez; istemci tarafında hiçbir ayar gerekmez.
Ne İşe Yarar?
| Load balancer olmadan | Load balancer ile |
|---|---|
| Tek sunucu tek hata noktasıdır; sunucu çökerse hizmet durur. | Trafik sağlıklı sunuculara aktarılır; hizmet kesintisiz sürer. |
| Trafik arttıkça sunucu yavaşlar. | Yeni sunucu eklenerek kapasite artırılır; istemcinin bağlandığı adres aynı kalır. |
| Güncelleme ve bakım için hizmet durdurulur. | Sunucular sırayla bakıma alınır; trafik diğerlerine gider. |
| Farklı kapasitedeki sunucular eşit yük alır. | Ağırlık verilerek güçlü sunucuya daha çok trafik gönderilir. |
| Sunucular doğrudan internete açıktır. | İstemci yalnızca load balancer'a bağlanır; TLS sonlandırma ve güvenlik denetimleri önde yapılır. |
| Trafiğin ne durumda olduğu görülmez. | Tüm trafik tek noktadan loglanır ve izlenir. |
L4 ve L7 Yük Dengeleme
Load balancer'lar trafiğe iki farklı derinlikte bakabilir:
| Katman | Neye bakar | Ne yapabilir |
|---|---|---|
| L4 (transport) | IP adresi, protokol (TCP/UDP) ve port | Bağlantıları ya da paketleri hızla dağıtır; isteğin içeriğini görmez. |
| L7 (application) | İsteğin içeriği: HTTP header'ları, path, cookie | İçeriğe göre yönlendirir, TLS'i sonlandırır, isteği değiştirir ve güvenlik denetiminden geçirir. |
TR7'deki üç vService tipi bu iki katmana şöyle yerleşir:
| vService tipi | Trafiği nasıl işler | Tipik kullanım |
|---|---|---|
| Network | L3/L4'te çalışır; bağlantıyı sonlandırmadan TCP - L4, UDP - L4 ya da ANY - L3 trafiğini dağıtır. | DNS, NTP, Syslog, SIP, RADIUS |
| L7 TCP | TCP tabanlı trafiği taşır ama bağlantıyı TR7'de sonlandırır; uygulama protokolünü (SMTP, SQL, LDAP…) ayrıştırmaz, yalnızca TLS el sıkışmasındaki SNI ve RDP cookie gibi bağlantı bilgilerini okur. | SMTP, LDAP/LDAPS, SQL, RDP, MQTT |
| HTTP | Tam L7: isteği HTTP olarak ayrıştırır. | Web siteleri, API'ler, gRPC, WebSocket |
L7 TCP, Network vService'in TCP - L4 protokolüyle aynı türde trafiği taşır; fark, bağlantının TR7'de sonlandırılmasıdır. Bu sayede Network vService'te bulunmayan şu özellikler L7 TCP'de kullanılır:
- SSL/TLS sonlandırma: frontend protokolünde TCP + TLS seçilerek (SSL/TLS sonlandırma) sertifika ve TLS Security Profile TR7'de uygulanır (ör. LDAPS, SMTPS).
- İçeriğe göre yönlendirme: SNI, kaynak IP, port, SSL cipher/sürümü ve RDP cookie'ye göre Conditional Backend Services (Content Switching) ve Actions.
- Profiller: Log, Notification, Timeout ve vService Limits; bu profiller Network vService'te kullanılmaz.
- Koruma ve kaynak yönetimi: L7 DDoS & Threat Protection, QOS ve Bandwidth.
Network vService ise bağlantıyı sonlandırmadığı için gecikmesi en düşük tiptir ve UDP ile ANY - L3 trafiğini de taşır; L7 TCP yalnızca TCP trafiği içindir.
TR7'de Load Balancer
TR7'de yük dengeleme birkaç temel nesneyle kurulur. Tüm yapılandırma web arayüzünden yapılır; kod veya betik yazmak gerekmez. Nesnelerin sektörde kullanılan adlarla karşılıkları (F5, Citrix, Kemp veya HAProxy'den geliyorum; virtual server, pool, node, monitor, iRule gibi kavramların TR7'deki karşılıkları nelerdir?):
| TR7'de | Ne yapar | Sektördeki adı |
|---|---|---|
| vService | Trafiği bir IP:port üzerinde karşılar; hedefini, güvenlik katmanlarını ve profillerini belirler. | virtual server / listener |
| Kurum Servisi | Trafiğin ulaştığı tek bir hedef sunucu (adres:port). | pool member / real server |
| Backend Group | Aynı hizmeti veren sunucuları ortak ayarlarla tek yapıda toplar. | pool / service group |
| Health Checks profili | Kurum Servislerinin sağlığını periyodik olarak ölçer. | monitor / health check |
| Algorithm | İsteğin hangi Kurum Servisine gideceğini belirler. | load balancing method |
| Persistence | Aynı istemcinin isteklerini aynı Kurum Servisinde tutar. | persistence / session affinity |
| Condition + Action | "Şu durumda şunu yap" kuralları: yönlendirme, header düzenleme, engelleme, hata sayfası… | policy / iRule |
| Profile | Bir kez tanımlanıp birçok vService'e ya da Kurum Servisine atanan yeniden kullanılabilir ayarlar (Health Checks, Compression, Cache, Logs…). | profile |
Load Balancer - ADC bir veri merkezi içindeki sunucular arasında dağıtım yapar. Veri merkezleri arasında ve coğrafi dağıtım ise ayrı bir ürün olan GTM ile DNS katmanında yapılır.
Sık Karıştırılan Noktalar
- "Tek sunucum var, load balancer bana göre değil." Tek sunucuda da load balancer sunucunun önünde durur: TLS sonlandırma, güvenlik denetimi, bakım sayfası ve loglama sağlar. İkinci sunucu eklendiğinde yapı bozulmadan ölçeklenir.
- "Load balancer ile GTM aynı işi yapar." Load balancer bir veri merkezi içinde, bağlantı kurulduktan sonra karar verir. GTM ise veri merkezleri arasında, DNS sorgusu anında karar verir. İkisi birlikte kullanılabilir.
- "Health check atamazsam sunucu devre dışı sayılır." Tersine: Health Check alanı varsayılan No Check değerinde kalan Kurum Servisinin sağlığı izlenmez (listede durum noktası yerine koyu gri güç ikonu görünür); sunucu çökmüş olsa bile trafik almaya devam eder.
- "Load balancer yalnızca trafiği dağıtır." L7'de isteği okur: içeriğe göre yönlendirir, sıkıştırır, önbelleğe alır ve güvenlik denetiminden geçirir.
Dokümantasyonda nasıl yapılır
