Load Balancing (Yük Dengeleme), ağ trafiğini birden çok sunucuya dağıtma işlemidir. Bu, tek bir sunucunun çok fazla talep görmesini önlemektedir.
Bu yazımızda Load Balancing (Yük Dengeleme) Nedir, Load Balancing Neden Gereklidir, Load Balancing Avantajları, Load Balancing Algoritmaları gibi konu başlıklarından bahsedeceğiz.
Load Balancing (Yük Dengeleme) Nedir ?
Donanım veya yazılım olup olmadığına veya hangi algoritmaları kullandığına bakılmaksızın, bir yük dengeleyici, tek bir sunucunun aşırı çalışıp daha sonra güvenilmez bir hale gelmemesi için kaynak havuzundaki farklı web sunucularına trafik dağıtır. Load Balancing, sunucu yanıt süresini etkili bir şekilde en aza indirerek verimi en üst seviyeye çıkarır.
Aslında, bir yük dengeleyicinin rolü bazen bir trafik polisinin rolüne benzetilir, çünkü istekleri herhangi bir anda sistematik olarak doğru konumlara yönlendirmek, böylece maliyetli darboğazları ve öngörülemeyen olayları engellemek anlamına gelmektedir. Yük dengeleyiciler, karmaşık BT ortamlarının yanı sıra içlerinde meydana gelen karmaşık iş akışlarını sürdürmek için gereken performansı ve güvenliği nihai olarak sağlamalıdır.
Yük dengeleme, modern çok uygulamalı, çok cihazlı iş akışlarından gelen çok sayıda isteği ele almak için en ölçeklenebilir yöntemdir. Günümüzün dijital çalışma alanlarında pek çok farklı uygulamaya, dosyaya ve masaüstüne sorunsuz bir şekilde erişim sağlayan platformlarla birlikte yük dengeleme, çalışanlar için daha tutarlı ve güvenilir bir son kullanıcı deneyimini destekler.
Bir yük dengeleyici şunlar olabilir:
- Fiziksel bir cihaz, özel bir donanım veya bir yazılım süreci üzerinde çalışan sanallaştırılmış bir örnek.
- Nerede barındırıldıklarına bakılmaksızın, üç katmanlı web ve mikro hizmet tabanlı uygulamaların performansını ve güvenliğini daha kapsamlı bir şekilde iyileştirmek için tasarlanmış uygulama teslim denetleyicilerine (ADC’ler) dahil edilmiştir.
- Mevcut gereksinimler doğrultusunda trafiği dağıtmak için döngüsel deneme, sunucu yanıt süresi ve en az bağlantı yöntemi dahil olmak üzere birçok olası yük dengeleme algoritmasından yararlanılabilir.
Bir load balancin yani yük dengeleyici aşağıdaki işlevleri yerine getirir:
- İstemci isteklerini ya da ağ yükünü birden fazla sunucuya verimli bir şekilde dağıtır.
- Sadece çevrimiçi sunuculara istek göndererek yüksek kullanılabilirlik ve güvenilirlik sağlar.
- Talebin gerektirdiği şekilde sunucu ekleme ya da çıkarma esnekliği sağlar.
Load Balancing Avantajları
Güvenlik: Bir yük dengeleyici, uygulamanızda herhangi bir değişiklik yapmadan web sitenize ek güvenlik katmanları ekleyebilir.
Performans: Yük dengeleyiciler, web sunucularınızdaki yükü azaltabilir ve daha iyi bir kullanıcı deneyimi için trafiği optimize edebilir.
Dayanıklılık: Yük dengeleyiciler, kullanıcı hizmetini sürdürmek için hatalı ve düşük performanslı bileşenleri şeffaf bir şekilde barındırabilir.
Ölçeklenebilirlik: Yük dengeleyici, kullanıcılara verilen hizmeti kesintiye uğratmadan sunucu altyapısını değiştirmeyi kolaylaştırır.
Donanım ve Yazılım Tabanlı Yük Dengeleyiciler
Donanım tabanlı yük dengeleyiciler şu şekilde çalışır:
- Bunlar tipik olarak, çeşitli uygulama türlerinden gelen birden çok gigabit trafiği güvenli bir şekilde işleyebilen yüksek performanslı cihazlardır.
- Bu cihazlar, aynı donanım üzerinde çok sayıda sanal yük dengeleyici örneğini birleştiren yerleşik sanallaştırma yetenekleri de içerebilir.
- Bu, diğer avantajların yanı sıra daha esnek çok kullanıcılı mimarilere ve kullanıcıların tam olarak izole edilmesine olanak tanır.
Buna karşılık, yazılım tabanlı yük dengeleyiciler:
- Benzer işlevsellik ve üstün esneklik sunarken yük dengeleme donanımının yerine kullanılabilir.
- Yaygın hipervizörler üzerinde, containerlarda veya fiziksel sunucularda minimum ek yük ile Linux işlemleri olarak çalışabilir ve ihtiyaç duyulan kullanım durumlarına ve teknik gereksinimlere bağlı olarak oldukça yapılandırılabilirdir.
- Yerden tasarruf sağlayabilir ve donanım harcamalarını azaltabilir.
Load Balancing Algoritmaları
Belirli bir duruma en uygun olan farklı algoritmaları kullanan çeşitli yük dengeleme yöntemleri vardır. Bu algoritmalar trafiğin hangi backend sunucusuna iletileceğini belirleyen algoritmalardır.
Round Robin: Round robin, sanal bir sunucunun her bir istemci isteğini dönen bir listeye göre farklı bir sunucuya iletmesini sağlamak için basit bir tekniktir. Yük dengeleyicilerin uygulaması kolaydır, ancak zaten bir sunucudaki yükü hesaba katmaz. Bir sunucunun çok sayıda işlemci yoğun istek alması ve aşırı yüklenmesi tehlikesi vardır.
Least Connection: Round robin bir sunucudaki mevcut yükü hesaba katmazken (yalnızca rotasyondaki yerini), en az bağlantı yöntemi bu değerlendirmeyi yapar ve sonuç olarak genellikle üstün performans sunar. En az bağlantı yöntemini izleyen sanal sunucular, en az sayıda etkin bağlantıya sahip sunucuya istek göndermeye çalışacaktır. Sunucular arasında eşit olmayan bir şekilde dağıtılan trafikte çok sayıda kalıcı bağlantı olduğunda en kullanışlı olanıdır.
Source (IP Hash): İstemcinin IP adresi, isteği hangi sunucunun alacağını belirler. Belirli bir kullanıcının sürekli olarak aynı sunucuya bağlanması sağlanır. Kaynak IP adresi, port numarası, URL ya da alan adı gibi bilgileri içerir.
Load Balancing Neden Gereklidir?
- Load balancing sayesinde erişilebilirlik ve sunucu sürekliliği en üst seviyeye çıkarılmaktadır. Böylece sunucu sistemi kullanıcılar için her daim hazır ve çalışabilir durumda olmaktadır.
- Bazı zamanlar trafik artışı olsa bile gecikmeler ve erişim kesintileri yaşanmayacağından dolayı kullanıcı deneyiminde de gelişmeler gösterir.
- Kullanıcıların en uygun veri tabanı kaynaklarına yönlendiriliyor. Bu sayede veritabanı optimizasyonu da sağlanmış oluyor. Bu durum ‘single point of failure’ riskini de ortadan kaldırmış oluyor.
Load Balancing (Yük Dengeleme) Nedir ? Load Balancing Neden Gereklidir ? başlıklı yazımız ile ilgili aklınıza takılan sorularınızın yanıtını alabilmeniz için veya öneride bulunabilmeniz için aşağıda yer alan yorumlar kısmını kullanarak bizimle iletişime geçebilirsiniz.
Dilerseniz daha önce bloğumuzda paylaştığımız CentOS 7 Apache Sunucuda Let’s Encrypt ile Ücretsiz SSL Kurulumu başlıklı yazımızı da okuyabilirsiniz.