dev-tools
Sözlük ↗Load Balancer (Yük Dengeleyici)
Bir load balancer, birden fazla backend sunucu örneğinin önünde duran ve gelen istekleri bunlar arasında dağıtan bir bileşendir; böylece tek bir sunucu aşırı yüklenmez ve sistem bir bütün olarak tek bir sunucunun tek başına kaldırabileceğinden daha fazla trafiği işleyebilir. Ham trafik dağıtımının ötesinde, load balancer'lar health check (başarısız olan veya yanıt vermeyen bir sunucu örneğinden trafiği otomatik olarak uzaklaştırma) sağlar ve yatay ölçeklendirme ile sıfır kesintili deploy'ların (hem blue-green hem de rolling deployment'lar bir load balancer'ın trafiği sunucu grupları arasında kaydırma yeteneğine dayanır) temel etkinleştiricisidir. Örnekler yönetilen bulut tekliflerinden (AWS Application Load Balancer, Google Cloud Load Balancing) açık kaynak yazılım load balancer'larına (NGINX, HAProxy, Envoy) kadar uzanır. AI/SaaS kuran ekipler için neden önemli: bir load balancer, yatay ölçeklendirmenin pratikte gerçekten işlemesini sağlayan şeydir — tek, giderek büyüyen bir sunucunun daha fazla trafiği kaldırmasını sağlamaya çalışmak yerine (bunun sert bir fiziksel tavanı vardır), bir load balancer arkasında birden fazla küçük, özdeş sunucu örneği çalıştırır ve trafik arttıkça daha fazla örnek eklersiniz. Aynı zamanda bir sisteme bireysel sunucu arızalarına karşı dayanıklılık kazandıran mekanizmadır: bir örnek çökerse veya sağlıksız hale gelirse, load balancer'ın health check'leri bunu tespit eder ve oraya trafik göndermeyi durdurur; böylece diğer sağlıklı örnekler çalıştığı sürece kullanıcılar hiçbir aksaklık yaşamaz. Nasıl çalışır: bir load balancer gelen her isteği önce alır ve bir dağıtım algoritması kullanarak hangi backend örneğinin bunu işleyeceğine karar verir — round-robin (örnekler arasında eşit şekilde dönerek), en az bağlantı (şu anda en az aktif isteği olan örneğe yönlendirerek) veya IP-hash (belirli bir istemciyi tutarlı şekilde aynı örneğe yönlendirerek, session affinity için kullanışlı). Her backend örneğine karşı sürekli health check'ler çalıştırır (tipik olarak bir `/health` endpoint'ine hafif bir HTTP isteği) ve bu kontrolleri geçemeyen herhangi bir örneğe trafik göndermeyi otomatik olarak durdurur, örnek düzeldiğinde tekrar başlar. Örnek üzerinden: bir SaaS API'si, bir AWS Application Load Balancer'ın arkasında dört özdeş backend sunucu örneği üzerinde çalışır. Bir trafik artışı sırasında, load balancer gelen istekleri round-robin algoritmasıyla dört örnek arasında kabaca eşit dağıtır; böylece bir sunucu aşırı yüklenmek yerine her örneğin yükü yönetilebilir kalır. On dakika sonra, bir örnekte bellek sızıntısı gelişir ve health check'i başarısız olmaya başlar (`GET /health` artık `200 OK` döndürmez); load balancer bunu saniyeler içinde tespit eder, otomatik olarak ona yeni trafik göndermeyi durdurur ve kalan üç sağlıklı örnekten tüm kullanıcılara kesintisiz hizmet vermeye devam eder — bu arada sağlıksız örnek, hiçbir manuel müdahale ve müşteriye görünür kesinti olmadan auto-scaling grubu tarafından otomatik olarak değiştirilir.
İlgili terimler