Load Balancer Nedir, Ne İşe Yarar?

Geleneksel internet modeli bizlere, herhangi bir zamanda bir çift uç ana bilgisayar arasında yalnızca tek bir yol olduğunu göstermiştir. İnternet uygulamaları, ağ simülasyon modelleri ve ölçüm araçları sözü edilen bu yol üzerinden çalışmaktadır. Ancak bununla birlikte, çoğu ticari yönlendirici yük dengeleyici yeteneklere sahiptir. Günümüze baktığımızda aktif kullanıcı sayısında yaşanan artışla beraber internet siteleri istikrarlı bir davranış sergilemelidir.

Bir internet sitesinin içerisinde bulunduğu yoğunluk ne kadar sık olursa olsun talep edilenleri karşılayabilecek durumda olabilmelidir. İnternet sitesi belirlenen kitlenin isteklerine karşılık verdiği müddetçe artış gösterebilir. Ancak bu artışla beraber internet sitesinde yeni gereksinmeler ortaya çıkmaktadır. Burada ortaya çıkabilecek bir yük dengesizliği sitenin performansını ciddi ölçüde etkileyebilecek sinsi bir faktör olarak karşımıza çıkmaktadır. Bu noktada sunucular donanımsal olarak bu yükü uygun bir biçimde dengelemek durumundadır. Bu bakımdan load balancer (yük dengeleme) kullanımı önemli olmaktadır. 

Daha net bir biçimde anlatacak olursak; sistemi ziyaret edenler, sunucu grubu olarak ifade edilen sunucular arasında belli bazı kurallar doğrultusunda verimli olarak ve sunucu grubu önünde yer alan yük dağıtıcı ile işi yapacak sunucular arasında eşit olarak dağıtılmakta; uygulama ile veri tabanı arasında oluşturulan yük dengeleme işlemlerini yapan sistemler “load balancer” olarak ifade edilmektedir. Bu şekilde yük dengeleme kullanımıyla sitenin performansı olumlu etkilenmekte ve verimlilik artmaktadır. Load balancer, bu yükü dağıttıktan sonra sistemin doğru bir biçimde işleyip işlemediği noktasında belirli sürelerde bir kontrol sağlayarak işleyişinde bozukluk olan sunucuları yönlendirmeye dair bir kaçınma halinde olabilir. Bunun neticesinde yük dengeleyiciler bir taraftan sistemin ölçeklenmesini sağlarken diğer taraftan yüksek erişilebilirlik oluşturmaktadırlar. Bu şekilde sağlıklı olarak işlemeyen sunucuya yeni istek gönderilmemiş ve kullanıcıların bu sorundan etkilenmesi engellenmiş olmaktadır.

Anlatılanlar doğrultusunda load balancer’ı somut örnekler üzerinden ele alacak olursak, yoğun bir trafiğin ortasında çeşitli yönlendirmelerle düzeni korumaya çalışan bir trafik polisini aklınıza getirebilirsiniz. Ancak bu noktada dikkat etmeniz gereken şey, trafik polisinin yönlendirdiği araçların aynı hedefe varmak istemelerine rağmen farklı yollara yönlendiriliyor olmalarıdır. Burada trafik polisinin yapmaya çalıştığı şey temel olarak yoğunluğu azaltmaya çalışmaktır. Çünkü ancak bu şekilde trafik akışı sağlanır ve verimli bir duruma gelebilir. Load balancer ile, uygulama güncellemeleri sistemde herhangi bir kesinti yaratmadan yapılabilir.

Yüksek erişilebilirliğe paralel olarak anlatılacak olursa, ilk olarak güncellenecek sunucuya yük dengeleyicilerin yönlendirilmesi otomatik olarak kaldırılır ve uygunluk kontrolüne tekrar cevap verene kadar bu sunucuya yönlendirme olmaz. Ancak güncelleme gerçekleştikten sonra yük dengeleyici, yeniden yönlendirmelere başlar. Bu şekilde işleyen süreç sunucu grubu için tekrarlandığında uygulama, herhangi bir kesinti oluşmadan yükseltilmiş olur. Load balancer, modern uygulamalar için vazgeçilmez bir noktayı oluşturur. Elimizdeki uygulamanın erişilebilirliğini artırmak ve sunucu sürekliliğini sağlamak için load balancer büyük bir öneme sahiptir. Kullanıcı deneyimleri bakımından dönem dönem ortaya çıkabilecek gecikmelere yönelik ve hızlı-performanslı bir süreç sağlamak açısından önemli bir gelişmedir.

Load Balancer Nasıl Çalışır?

Load balancer çalışma prensibi düşünüldüğü gibi kompleks bir yapıda değildir. İsteği sunucuya iletmesi iki aşamada gerçekleşir. İlk adımda sunucuların beklenen şekilde yanıt verip veremeyeceğinin kararına varılmakta; ardından da sunucular arasından seçim yapılması amacıyla bazı kurallar çerçevesinde iletim tamamlanmış olmaktadır.

Load Balancer Türleri Nelerdir?

Sizin seçebileceğiniz birkaç tür load balancer (yük dengeleme) yapılandırmasından söz edebiliriz. Bunlar aşağıdaki gibi sıralanabilir:

1. Sunucu Yük Dengeleme (Server Load Balancing)

Sunucu yük dengeleme ile hedeflenen, iş yüklerini kullanılabilirlik ve yetenekler üzerinden sunucular arasında dağıtmaktır. Sunucu yük dengeleyici yapılandırmalar, istekleri yönlendirme noktasında yukarıda da sözü edilen trafiğe güvenme eğilimi içerisindedirler.

2. Donanım Tabanlı Yük Dengeleme (Hardware-Based Load Balancing)

Donanım tabanlı yük dengeleyiciler, yerleşik sanallaştırma yetenekleri içermektedir. Bu yetenekler tek bir aygıtta birden fazla sanal yük dengeleyici örneğinin kullanılmasını sağlamaktadır. 

3. Yazılım Tabanlı Yük Dengeleme (Software-Based Load Balancing)

Bu yük dengeleme türü de yine sanal makinelerde çalışmaktadır. Virtual load balancer olarak ifade edilen yük dengeleme, fiziksel yük dengelemeyle karşılaştırılınca daha esnek bir durum yaratmaktadır. Yazılım yük dengeleyiciler, geleneksel hipervizörler, kapsayıcılar veya Linux süreçlerinde çalışmaktadır.

4. Sanal Yük Dengeleme (Virtual Load Balancing)

Bu yük dengeleme türü, yukarıda sözü edilen donanım ve yazılım tabanlı yük dengeleme türleri birleştirmek amacıyla sanal bir makinede yer alan özel bir aygıttan özel yük dengeleme yazılımını dağıtmaktadır. Bu noktada üzerinde durulması gereken nokta, sanal yük dengeleyicilerin sınırlı ölçeklenebilirlik ve otomasyon gibi mimari problemlere yönelik bir çözüm sunamayacağıdır.

5. Bulut Tabanlı Yük Dengeleme (Cloud-Based Load Balancing)

Bulut tabanlı yük dengeleme, bir bulut altyapısı kullanmaktadır. Bir bulut altyapısı yük dengeleme için genellikle birden fazla seçeneğe sahip olmaktadır. Bu yük dengeleme türünde, hem ağ (katman 4) hem de uygulama (katman 7) dengelemesi yer alabilir. Bulut tabanlı yük dengelemenin örneklerinden bazıları şu şekilde sıralanabilir:

  • Ağ Yükü Dengeleme (Network Load Balancing)
  • HTTP(S) Yük Dengeleme (HTTP(S) Load Balancing)
  • Dahili Yük Dengeleme (Internal Load Balancing)

6. Konteyner Yük Dengeleme (Container Load Balancing)

Konteyner yük dengeleme, sanal ve yalıtılmış uygulama örnekleri sağlamaktadır. Bunun yanı sıra etkinleştirilmesi, yük dengeleme kümeleri üzerinden gerçekleşmektedir. Bu noktada düzenleme sistemleri arasında öne çıkan sistem, kullanılabilirliği dengeleyebilmek amacıyla yükleri konteyner bölmelerine kurallar çerçevesinde dağıtabilen Kubernetes konteyner düzenleme sistemidir.

Load Balancer Yöntemleri

Load balancer yönetimi farklı çeşitlere ayrılır. Gelin, hep birlikte yöntemleri inceleyelim!

1. Round Robin Yöntemi

Bu yöntemle sunucuların sıralı bir biçimde seçildiği ve trafiğin bu sıralamaya göre paylaştırıldığı algoritmalardan söz edilir. Load balancer bu algoritmada, talep edilenlerden ilki için belirlenen sıralamadan ilk sunucuyu seçer ve ardından sıralamanın devamına doğru ilerler. Sıralamanın sonuna varıldığında yeniden baştan başlayarak sırayla aşağıya doğru seçim sürer. Daha net bir ifadeyle anlatacak olursak, sunucu havuzunda yer alan her sunucuya listeli bir biçimde dağıtarak sunucular arasında devamlı olarak eşit dağılım sağlanır. Trafik yoğunluğunun az ve sunucu özelliklerinin eşit olduğu bir durumda “Round Robin” en ideal yöntem olarak kullanılır.

2. Hashing Yöntemleri (Hashing Methods)

Hashing yöntemleriyle, gelen pakette yer alan bir veri karmasına dayalı bir biçimde kararlara varılır. Bunun içerisinde, kaynağı oluşturan ya da hedeflenen IP adresi, bağlantı noktası numarası, URL ya da alan adı gibi alıcı pakette yer alan bağlantı ve başlık bilgileri vardır.

3. En Az Yanıt Süresi Yöntemi (Least Response Time Method)

En az yanıt süresi yöntemi aşağıda sözünü edeceğimiz en az bağlantı yönteminden daha gelişmiş bir yöntemdir. Bir sunucunun isteğe cevap verebilmesi için geçen süreye dayanmaktadır. Verilecek cevabın süresi, sunucunun yoğunluğunun ve nasıl bir kullanıcı deneyiminin beklendiğini göstermektedir.

4. Özel Yük Dengeleme Yöntemi (Custom Load Method)

Yük dengeleyici, SNMP yoluyla bazı sunucular üzerindeki yükü sorgulamak amacıyla özel yükleme yöntemini kullanır. Araştırılmak istenen sunucu yükü (CPU kullanımı, cevabın süresi ve bellek tüketimi) belirlenebilir ve daha sonra taleplerin karşılanması için bunlar karıştırılabilir.

5. En Az Bağlantı Yöntemi (Least Connections Method)

En az bağlantı yönteminde yük dengeleyici en az bağlantıya sahip sunucuyu seçmektedir. Bu yöntem trafiğin daha yoğun bir biçimde sonuçlandığı durumlarda önerilmektedir. Bu yöntemle, tüm sunucular eşit biçimde yüklenmekte; bu noktada özellikle yoğun saatlerde ortaya çıkabilecek en yüksek performansın gerçekleşmesine yardımcı olmaktadır.

Load Balancer Ne İşe Yarar?

  • Yük dengeleme kullanımı ile kesintiler önlenebilir ve bu sayede yüksek trafik sağlanabilir. Aşırı yüklenme engellenmiş olur ve bunun neticesinde de sunucular daha verimli bir biçimde çalışabilir.  
  • Yük dengeleme verilen hizmetlerde yükü azaltır ve bu sayede kullanıcı deneyimi daima yüksek tutulmuş olur. Sitenizde oluşabilecek trafik yoğunluğunu sıkıştırarak kullanıcılara en iyi hizmeti vermeye yardımcı olur.
  • Uygulamaların teslimine yönelik kaynaklar en üst seviyede kullanılır. Veriler de verimli bir biçimde taşınır ve yoğun yüklenmeler engellendiği için veri akışı oldukça yüksek seviyede kalır.
  • Yük dengeleme kullanımı ile içerik kullanıcılara çok hızlı bir biçimde teslim edilmiş olur. Gelen talepler ve kaynaklar üzerinden ortaya çıkan güç dengelenmiş olur. Bu şekilde yaşanacak herhangi bir problem de engellenmiş olur.
  • Load balancer kullanımı sayesinde sisteme ek güvenlik katmanı sağlanmış olur. Problem yaratacak trafikler oldukça kısa bir zaman içerisinde tutulur ve yok edilir.
  • Yük dengeleme ile oluşabilecek yoğunluklar kısa süre içerisinde tahmin edilmiş olur. Bunun neticesinde de yapılacak engellemeler çok hızlı bir şekilde gerçekleşir.
  • Ölçeklenebilir olması nedeniyle sitede yaşanacak bir yoğunluk olsa bile verimli bir akış söz konusu olur. Dolayısıyla sunucuların kapasitesi artırılmış olur ve rahatlıkla ek sunucular yerleştirilebilir. Bunun sonucunda da maliyetler düşer.

Load Balancer’ın Avantajları

  • Bir web sitesi ya da uygulama, trafik çok yoğun olduğunda bile çok iyi bir kullanıcı deneyimi sağlamalıdır. Bu tarz durumlarda yük dengeleyici kullanımıyla, veriler verimli bir şekilde taşınmakta ve site performansı yüksek kalmaktadır. 
  • Load balancer, trafik yoğunluklarını iyi bir şekilde tahmin edebilmekte ve bunların engellenmesini sağlayan bir analitik içermektedir. Tahmin üzerinden ilerleyen analitik, otomasyonu kolaylaştırmakta ve işletmelerin ileriki dönemler için kararlar almasına destek olmaktadır.
  • Yük dengeleme, kullanıcılara sunulan hizmeti devam ettirmek noktasında başarılı olamayan ve bunun yanında performansı iyi olmayan bileşenleri şeffaf bir biçimde içerebilir. Sunucularınızdan birinde bir problem yaşanırsa, yük dengelemenin kullanıcıyı etkilemeden diğer sunuculara şeffaf bir biçimde hizmeti devam etmektedir. Bir sunucu meşgul ise, yük dengeleyici bunu algılar ve trafiği daha az yoğun olan diğer sunucularına yönlendirir. 
  • Yük dengeleyiciler, üst seviyede kullanılabilir çiftler halinde dağıtılabilir. Dolayısıyla birinde yaşanacak bir başarısızlık sonucunda diğer yük dengeleyici, kullanıcılar üzerinde herhangi bir olumsuz etki oluşturmadan yükü üzerine alır.  
  • Olağanüstü durum kurtarma amacıyla birden çok sitede bir uygulamanızın varlığından söz edilecek olursa, bir load balancer, sitede oluşacak bir aksaklığı algılayabilir ve bununla birlikte kullanıcıları problemsiz bir biçimde başka bir siteye yönlendirebilir.
  • Yük dengeleme kullanımının başka bir avantajı da ölçeklenebilirliktir. Sitenizde yaşanacak yoğun trafik içerisinde dahi iyi bir performans gösterebilme durumuna sahip olarak nitelendirilebilir. Trafiği şu anki durum içerisinde bulunan sunucular çerçevesinde verimli olarak dağıtmak amacıyla kullanılan yük dengeleyiciler, ölçeklenebilirliği geliştirmede büyük bir rol almaktadır. 
  • Sözünü ettiğimiz avantajlardan sonuncusu yük dengeleyicilerin mevcut sunucuların kapasitesini artırıyor olmasıdır. Yük dengeleme, sürekli olarak sunucu eklemekten çok ölçeklenebilirliği artırmanın iyi bir yoludur. 

Load Balancer Kullanım Alanları

Load balancer (yük dengeleme), erişilebilirliği ve sunucu sürekliliğini oldukça yüksek bir seviyeye çıkarmaktadır. Yük dengeleme kullanımı, site trafiğinin yoğun olduğu çoğu web sitesi tarafından dikkate değerdir. Bu noktada özellikle e-ticaret alanında kullanılmasına fazlasıyla önem verilir. Bunun yanı sıra yük dengeleme kullanımına en çok ihtiyaç duyulan zamanlarda, örneğin indirim günlerinde yoğun bir biçimde ziyaret edilen web siteleri ya da uygulamalar, kullanıcı deneyimini en yüksek seviyeye çıkarmak için yük dengeleme kullanır. Bunlara ek olarak aksaklık yaşamak istemeyen ve kullanıcı deneyimlerini kusursuz bir duruma getirmek isteyen finans sektörü de yük dengeleyicilerden yardım almaktadır.

Aynı zamanda sosyal medya uygulamalarına baktığınızda kimi zaman milyonlarca kişinin içerisinde bulunduğu bu trafik yoğunluğunu iyi bir biçimde yönetebilmek için de yük dengeleme kullanılır. Herhangi bir kullanıcı beklenti içerisinde bulunduğu herhangi bir sitenin ya da uygulamanın ona dönmemesinden memnun olmaz. Dolayısıyla load balancer (yük dengeleme) bu noktada oldukça büyük bir rol oynamakta ve bir tarafta sunucuları ve diğer tarafta da kullanıcıları desteklemektedir.

0 Shares:
Benzer İçerikler