Yük dengeleme yani ‘load balancing’ en genel tanımıyla gelen ağ trafiğini sunucular arasında paylaştırma işlemidir. Artan trafiğin karşılanabilmesi için gerçekleştirilen paylaştırma işlemi isteğe göre eşit olarak yapılabilir ya da belirli kurallar çerçevesinde gerçekleştirilebilir. Sunucu kapandığında yük dengeleyici trafiği çevrimiçi olan sunuculara yönlendiriyor. Uygulama ve aynı zamanda veritabanı sunucuları arasında dengelemeyi sağlayan sistemler ise ‘load balancer’ olarak adlandırılıyor.
Load balancing özelliğinin kullanılmaması durumunda tahmin edilebileceği gibi tek bir sunucuya bağlanılır. Bu sunucu üzerinde herhangi bir sorun olması ise internet sitesine erişimi sıkıntıya sokar. Ayrıca çok sayıda kullanıcının internet sitesine erişmek istemesi durumunda da sorun yaşanabilir. Çünkü bu durumda sayfaların yüklenme sürelerinde yavaşlama meydana gelir hatta siteye erişim bile kesilebilir. Bu nedenle load balancing özelliğinin mutlaka kullanılması gerekir.
Load balancerler ise 4 trafik türü için dengeleme kuralları oluşturabiliyor. Bunlar;
Load balancer çalışma prensibi aslında sanıldığı kadar kompleks bir yapıya sahip değildir. İsteği sunucuya iletmesi toplamda iki aşamadan oluşan bir prensip ile gerçekleşiyor. İlk olarak sunucuların isteğe uygun biçimde yanıt verebileceğinin teyidi sağlanıyor ve sonrasında sunucular arasından seçim yapılması için daha önce belirlenmiş olan kurallar ile iletim tamamlanıyor.
Health checks yani uygunluk kontrolleri önemli bir aşamadır ve bu esnada load balancingin uygulandığı sistemlerde ağ trafiği sadece performans bakımından ideal olan sunuculara iletiliyor. Kontrolden geçemeyen sunucuların ise havuzdan kaldırılması sağlanıyor ve bu sunucuya trafik gönderilmiyor.
Yük dengeleme algoritmalarının trafiğin hangi backend sunucusuna iletileceğini belirlediğini söyleyebiliriz. Bu algoritmaların her birinin farklı bir faydası bulunuyor. Dengeleme yöntemi ise sistemin gereksinimlerine göre değişiyor.
Round Robin
Gelen istekleri sunucu grubuna dağıtıyor ve mevcut sunucular arasından ilk olarak ilk sırada bulunanı kullanıyor. Sunucu seçimleri listedeki sıraya göre devam eder.
Least Connections
Yük gönderiminde en az bağlantıya sahip olan sunucuyu dikkate alıyor ve bu seçenek trafiğin uzun ortamlarla sonuçlandığı durumlarda tavsiye ediliyor.
Source (IP Hash)
Load balancing istemcinin IP adresini ve isteği hangi sunucunun alacağını belirlemeyi sağlar. Bu seçenek kapsamında kullanıcının sürekli aynı sunucuya bağlanması mümkün oluyor.
İnternet sitelerinde sunucu sürekliliği ve erişilebilirlik elbette en önemli unsurlardır ve bunu sağlamak da load balancing ile mümkün olabiliyor. Zira bu faktör tek başında load balancing önemini ortaya koyuyor. Sitelerde kimi zaman trafik artışları olabilir ve bu durumu da her daim göz önünde bulundurmak gerekiyor. Erişim kesintilerinin yaşanmaması sayesinde kullanıcı deneyimleri de gelişir. Kullanıcıların en uygun olan veri tabanı kaynaklarına yönlendiriliyor ve dolayısıyla veritabanı optimizasyonu da sağlanmış oluyor. Bu durum ‘single point of failure’ riskini de yok ediyor.