Load Balancing Stratejileri
Load balancing, sistemlerdeki yükün dağıtılmasını amaçlayan bir kavramdır. Türkçe karşılığı yük dengelemedir. Ancak bu dengeleme, her sunucuya eşit sayıda istek yönlendirmek anlamına gelmez. Yükün dağıtımı farklı yaklaşımlara ve stratejilere bağlı olarak gerçekleştirilebilir.
Round Robin
En popüler load balancing yaklaşımlarındandır. Yükün sunucularınız arasında sırayla dağıtıldığı yöntemdir. İstekler, sunucuların sayısına bağlı olarak, sunucuların durumu (kaynak tüketimi, yanıt süresi, bağlantı sayısı) dikkate alınmaksızın sırayla sunuculara yönlendirilir. Yani ilk istek birinci sunucuya, ikinci istek ikinci sunucuya yönlendirilir. Dağıtım, döngüsel bir şekilde devam eder. Sunucuların kapasitesi dikkate alınmadığından kapasite problemleri ile yüzleşmek olasıdır.
Weighted Round Robin
Round Robin varyasyonu olan diğer bir stratejidir. Sunucuların kapasite hesabının yapılmasına istinaden yükün dağılması yaklaşımıdır. Bir sunucu yükün %80’ini alırken diğer iki sunucu sırasıyla %15 ve %5 ile devam ediyor olabilir. Ancak hesaplama gereklilikleri operasyonu zorlaştırabilir.
Sticky Round Robin
Round Robin stratejisindeki “sıradaki sunucuya yönlendirme” mantığı devam eder. Ancak bu defa bir kullanıcı/istemci hangi sunucuya yönlendirildiyse sonraki isteklerinde de oraya yönlendirilmesi sağlanır. Böylece bir yapışkanlık (stickiness) durumu sağlanır. Ancak bu durum yükün dengesiz dağılmasına yol açabilir.
IP Hashing
Bir önceki stratejideki yapışkanlık hedefini taşıyan başka bir yaklaşımdır. Belirli bir IP adresinden bir hash değeri üretilir ve bu hash değeri yine belirli bir sunucuyla eşleştirilir. Böylece aynı IP adresinden gelen isteklerin aynı sunucuya düşmesi (session persistence) sağlanır. Önceki maddeden farklı olarak yükün yönleneceği sunucu sıradaki sunucu olmayabilir. Seçilen sunucu, hash fonksiyonunun üreteceği çıktıya bağlıdır. Bu yaklaşımda da yükün dengesiz dağılması olasılığı mevcuttur.
Least Connections
İstek anında en az sayıda aktif bağlantıya sahip sunucuya yönlendirme yapılması esasına dayanır. İstek sayısının yoğunluğu durumunda etkilidir. Ancak response time değerine odaklanmadığı için uzun süreli işlemlerin sorun yaratması olasıdır.
Least Response Time
Bir önceki stratejinin aksine cevap sürelerine odaklı yük dağıtımı yapmayı hedefler. Bu da istek sürelerinin kısalması anlamına gelir. Ağdaki gecikmelerden olumsuz etki alabilir.
Adaptive Load Balancing
Sunucuların anlık durumlarına (CPU kullanımı, memory, cevap süresi) göre istekler yönlendirilir. Dinamik çalışan ve gerçek zamanlı bir stratejidir, daha etkili yük dağılımı sağlar. Ancak bir yandan daha karmaşıktır ve sürekli hesaplama hali sistem kaynakları üzerinde olumsuz etki yaratabilir.
Global Server Load Balancing (GSLB)
Farklı bölgelerdeki veri merkezleri arasında yük dengelemesi yapılır. DNS tabanlı yönlendirme kullanılarak, en hızlı ve uygun veri merkezi seçilir. Coğrafik bir dağılım söz konusu olduğundan daha çok dünya genelinde hizmet sunan sistemler için idealdir. Dolayısı ile gelişmemiş bir altyapı ile uygulanması mümkün değildir.
Load balancing, sistem verimliliği için kritik bir tekniktir ve her yöntem farklı senaryolar için uygundur. Round Robin ve Weighted Round Robin, basit ve yaygın olsa da kapasite farklılıklarını dikkate almaz. Sticky Round Robin ve IP Hashing, kullanıcı oturumları için uygundur ancak yük dengesizliğine yol açabilir. Least Connections ve Least Response Time, anlık trafiğe göre dinamik yönlendirme sağlar, fakat uzun işlemlerle ilgili zorluklar yaratabilir. Adaptive Load Balancing, sunucuların durumuna göre daha esnek bir çözüm sunar ancak karmaşıktır. Global Server Load Balancing (GSLB), coğrafi dağıtım gerektiren büyük sistemler için idealdir. Doğru seçim, sistemin ihtiyaçlarına göre yapılmalıdır.