Load Balancing/Balancer Nedir? Ne İşe Yaramaktadır?

Ghost Killer

Yaşayan Forum Efsanesi
13 Ocak 2019
11,239
7,715
Herkese merhaba değerli Türk Hack Team üyeleri! Bu konumuzda Load Balancing/Balancer Nedir? Ne İşe Yaramaktadır? bu başlıktan ele alacağız. İyi okumalar.


loadbalancer-monitoring.png



Load Balancer/Balancing Nedir?

Load balancing (yük dengeleme-dağıtma), iş yükünü birden fazla sunucuya dağıtarak web sitelerinin, uygulamaların, veri tabanlarının ve diğer hizmetlerin performansını ve güvenilirliğini artırmak için yaygın olarak kullanılan yüksek kullanılabilir (high availability) altyapıların önemli bir bileşenidir.

Bu işlem ile sisteme gelen ziyaretçiler, sunucu grubu ya da sunucu havuzu olarak adlandırılabilecek sunucular arasında, eşit ya da belirlenen kurallar çerçevesinde verimli bir şekilde dağıtılmaktadır. Hem application (uygulama), hem de database (veri tabanı) sunucular arası yapılan bu yük dengeleme işlemlerini gerçekleştiren sistemler ise “load balancer” olarak adlandırılmaktadır.

Load balancing özelliği kullanılmayan bir sistemde kullanıcılar, doğrudan “alanadi.com” gibi bir web servisine erişmek istediklerini bu alan adının üzerinde çalıştığı tek bir web sunucusuna bağlanır. Haliyle bu server üzerinde oluşabilecek sorun durumunda kullanıcılar web sitesine erişemezler. Bunun yanı sıra eş zamanlı olarak pek çok kullanıcının siteye erişmeye çalışması durumunda da aşırı yük tek bir sunucu üzerinden karşılanamayacağı için yüklenme sürelerinde yavaşlama ve sonunda erişim kesintileri yaşanabilir.

Oluşan bu “single point of failure” durumu sistem mimarisine eklenecek en az bir ek sunucu ve load balancer ile ortadan kaldırılabilir. Tipik olarak load balancer arkasında çalışan sunucular aynı içeriklere sahip olacaklarından kullanıcılar hangi sunucudan erişim sağlarlarsa sağlasınlar aynı çıktı ile karşılaşırlar.



NGbryX.png

Örnek Görsel


vusJZG.gif


rcluster3b_load_balancing.png


Load Balancing ile Hangi Trafik Türleri Dengelenebilir?

Load balancer’lar ile 4 temel trafik türü için dengeleme kuralları oluşturulabilmektedir.

HTTP: Standart HTTP dengelemesinde gelen istekler standart HTTP tekniklerine dayanarak yönlendirilir. Load balancer, backend sisteme orijinal istekle hakkında bilgi vermek için X-Forwarded-For, X-Forwarded-Proto ve X-Forwarded-Port başlıklarını ayarlar.

HTTPS: HTTPS dengeleme işlemlerinde HTTP dengeleme ile aynı süreç işletilmektedir. Aradaki tek fark HTTPS işlemlerindeki şifreleme süreçleridir. Bu şifreleme süreçleri iki farklı şekilde gerçekleştirilebilir. İlk yöntemde şifreleme SSL geçişi ile backend’e kadar korunur. İkinci yöntemde ise şifreleme ve şifre çözme yükü her bir sunucunun üzerinden alınarak load balancer’a yüklenir. Bu yapıda hem sunuculara daha az yük binmekte, hem de maliyetler azaltılabilmektedir. SSL’in load balancer üzerinde kurgulandığı bu işleme ise SSL Offload denir.

TCP: HTTP veya HTTPS kullanılmayan uygulamalar için TCP trafiği dengelenebilir. Örneğin, bir veri tabanı kümesine giden trafik tüm sunuculara yayılarak dengelenebilir.

UDP: Yakın bir zamanda bazı load balancer’lar DNS ve syslogd gibi UDP kullanan temel internet protokolleri için load balancing desteği eklediler.

Bu dengeleme kurallarında, load balancer üzerindeki protokol ve bağlantı noktası tanımlandıktan sonra bunların load balancer’ın backend’deki trafiği yönlendirmek için kullanacağı protokol ve bağlantı ile eşleşmesi sağlanır. Aynı zamanda Layer 4 ve Layer 7 için hizmeti de mevcuttur.

vusJZG.gif


image-28.png


Load Balancing (Yük Dengeleme) Nasıl Çalışır?

Peki, load balancer’lar trafiğin yönlendirileceği backend sunucusunu nasıl seçer?

Load balancer’lar istekleri iletmek için 2 faktörlü bir kombinasyon kullanır. İlk olarak, seçebilecekleri sunucuların isteklere uygun şekilde yanıt verebileceğinden emin olurlar. Sonrasında ise yanıt verebilecek sunucular (healthy pool) arasından seçim yapmak için önceden yapılandırılmış kuralları kullanır. Bu sayede kolayca sunucuyu bulur veya yönlendirir.

vusJZG.gif


shutterstock_1032652768.jpg


Uygunluk Kontrolleri (Health Checks)

Load balancing uygulanan sistemlerde yük dengeleyiciler trafiği yalnızca sağlıklı olarak nitelendirilen backend sunucularına iletmelidirler. Bir sunucu uygunluk kontrolünde başarısız olursa ve bu nedenle isteklere yanıt veremezse havuzdan otomatik olarak kaldırılır ve uygunluk kontrolüne tekrar cevap verene kadar bu sunucuya trafik iletilmez.

vusJZG.gif


EOZvjC-VAAEtgRt.jpg


Load Balancing Algoritmaları

Kullanılan yük dengeleme algoritmaları, trafiğin hangi backend sunucusuna iletileceğini belirleyen algoritmalardır. En sık kullanılan algoritmaları şu şekilde sıralayabiliriz:

Round Robin: Round robin, sunucuların sıralı olarak seçildiği ve trafiğin bu sıralama ile paylaştırıldığı algoritmalardır. Bu algoritmada load balancer, ilk istek için listesindeki ilk sunucuyu seçer ve sora sırayla listenin altına doğru devam eder. Listenin sonuna gelindiğinde ise tekrar üstten başlayarak sırayla aşağıya doğru seçim devam eder.

Least Connection: Least connection algoritmasında yük dengeleyici en az bağlantıya sahip sunucuyu seçer. Bu algoritma trafiğin daha uzun oturumlarla sonuçlandığı durumlarda önerilir.

Source (IP Hash): Source algoritmasında yük dengeleyici istemcinin IP adresini, hangi sunucunun isteği alacağını belirlemek için kullanır. Bu yöntem ile belirli bir kullanıcının sürekli olarak aynı sunucuya bağlanması sağlanır.

vusJZG.gif


commercial-facilities-min.jpg


Neden Load Balancing Kullanılmalı?

Load balancing ile erişilebilirlik ve sunucu sürekliliği en üst seviyeye çıkarılabilir. Bu sayede sunucu sistemi kullanıcılar için her zaman hazır ve çalışabilir durumda olur.

Dönemsel olarak yaşanacak trafik artışlarında dahi gecikmeler ve erişim kesintileri yaşanmayacağı için kullanıcı deneyimi de gelişmeler gösterir.

Kullanıcılar en uygun uygulama / veri tabanı kaynaklarına yönlendirileceği ve uygulama / veri tabanı optimizasyonu sağlanacağı için “single point of failure” riski ortadan kalkar.

Hemen hemen tüm uygulamalar kodlama sürecinde load balancer arkasında çalışacak şekilde tasarlanmadığı için load balancer arkasına alınan sunuculara doğru gelen ziyaretçilerin session bilgileri sunucular arasında aktarılmadığı için session düşmesi veya kaybı yaşanmaktadır. Bu olumsuz durumun ortadan kalkması için en kısa yöntem sticky persistence ayarı yapılabilir. Olması gereken çözüm ise session’ları ortak bir sunucuda ya da veri tabanında toplamak şeklindedir.

vusJZG.gif



iUBacd.gif



Okuduğunuz için teşekkürler, iyi forumlar! :Smiley1009:


 

Sun Tzu

Katılımcı Üye
20 Nis 2019
272
1
Chinese
Herkese merhaba değerli Türk Hack Team üyeleri! Bu konumuzda Load Balancing/Balancer Nedir? Ne İşe Yaramaktadır? bu başlıktan ele alacağız. İyi okumalar.


loadbalancer-monitoring.png



Load Balancer/Balancing Nedir?

Load balancing (yük dengeleme-dağıtma), iş yükünü birden fazla sunucuya dağıtarak web sitelerinin, uygulamaların, veri tabanlarının ve diğer hizmetlerin performansını ve güvenilirliğini artırmak için yaygın olarak kullanılan yüksek kullanılabilir (high availability) altyapıların önemli bir bileşenidir.

Bu işlem ile sisteme gelen ziyaretçiler, sunucu grubu ya da sunucu havuzu olarak adlandırılabilecek sunucular arasında, eşit ya da belirlenen kurallar çerçevesinde verimli bir şekilde dağıtılmaktadır. Hem application (uygulama), hem de database (veri tabanı) sunucular arası yapılan bu yük dengeleme işlemlerini gerçekleştiren sistemler ise “load balancer” olarak adlandırılmaktadır.

Load balancing özelliği kullanılmayan bir sistemde kullanıcılar, doğrudan “alanadi.com” gibi bir web servisine erişmek istediklerini bu alan adının üzerinde çalıştığı tek bir web sunucusuna bağlanır. Haliyle bu server üzerinde oluşabilecek sorun durumunda kullanıcılar web sitesine erişemezler. Bunun yanı sıra eş zamanlı olarak pek çok kullanıcının siteye erişmeye çalışması durumunda da aşırı yük tek bir sunucu üzerinden karşılanamayacağı için yüklenme sürelerinde yavaşlama ve sonunda erişim kesintileri yaşanabilir.

Oluşan bu “single point of failure” durumu sistem mimarisine eklenecek en az bir ek sunucu ve load balancer ile ortadan kaldırılabilir. Tipik olarak load balancer arkasında çalışan sunucular aynı içeriklere sahip olacaklarından kullanıcılar hangi sunucudan erişim sağlarlarsa sağlasınlar aynı çıktı ile karşılaşırlar.



NGbryX.png

Örnek Görsel


vusJZG.gif


rcluster3b_load_balancing.png


Load Balancing ile Hangi Trafik Türleri Dengelenebilir?

Load balancer’lar ile 4 temel trafik türü için dengeleme kuralları oluşturulabilmektedir.

HTTP: Standart HTTP dengelemesinde gelen istekler standart HTTP tekniklerine dayanarak yönlendirilir. Load balancer, backend sisteme orijinal istekle hakkında bilgi vermek için X-Forwarded-For, X-Forwarded-Proto ve X-Forwarded-Port başlıklarını ayarlar.

HTTPS: HTTPS dengeleme işlemlerinde HTTP dengeleme ile aynı süreç işletilmektedir. Aradaki tek fark HTTPS işlemlerindeki şifreleme süreçleridir. Bu şifreleme süreçleri iki farklı şekilde gerçekleştirilebilir. İlk yöntemde şifreleme SSL geçişi ile backend’e kadar korunur. İkinci yöntemde ise şifreleme ve şifre çözme yükü her bir sunucunun üzerinden alınarak load balancer’a yüklenir. Bu yapıda hem sunuculara daha az yük binmekte, hem de maliyetler azaltılabilmektedir. SSL’in load balancer üzerinde kurgulandığı bu işleme ise SSL Offload denir.

TCP: HTTP veya HTTPS kullanılmayan uygulamalar için TCP trafiği dengelenebilir. Örneğin, bir veri tabanı kümesine giden trafik tüm sunuculara yayılarak dengelenebilir.

UDP: Yakın bir zamanda bazı load balancer’lar DNS ve syslogd gibi UDP kullanan temel internet protokolleri için load balancing desteği eklediler.

Bu dengeleme kurallarında, load balancer üzerindeki protokol ve bağlantı noktası tanımlandıktan sonra bunların load balancer’ın backend’deki trafiği yönlendirmek için kullanacağı protokol ve bağlantı ile eşleşmesi sağlanır. Aynı zamanda Layer 4 ve Layer 7 için hizmeti de mevcuttur.

vusJZG.gif


image-28.png


Load Balancing (Yük Dengeleme) Nasıl Çalışır?

Peki, load balancer’lar trafiğin yönlendirileceği backend sunucusunu nasıl seçer?

Load balancer’lar istekleri iletmek için 2 faktörlü bir kombinasyon kullanır. İlk olarak, seçebilecekleri sunucuların isteklere uygun şekilde yanıt verebileceğinden emin olurlar. Sonrasında ise yanıt verebilecek sunucular (healthy pool) arasından seçim yapmak için önceden yapılandırılmış kuralları kullanır. Bu sayede kolayca sunucuyu bulur veya yönlendirir.

vusJZG.gif


shutterstock_1032652768.jpg


Uygunluk Kontrolleri (Health Checks)

Load balancing uygulanan sistemlerde yük dengeleyiciler trafiği yalnızca sağlıklı olarak nitelendirilen backend sunucularına iletmelidirler. Bir sunucu uygunluk kontrolünde başarısız olursa ve bu nedenle isteklere yanıt veremezse havuzdan otomatik olarak kaldırılır ve uygunluk kontrolüne tekrar cevap verene kadar bu sunucuya trafik iletilmez.

vusJZG.gif


EOZvjC-VAAEtgRt.jpg


Load Balancing Algoritmaları

Kullanılan yük dengeleme algoritmaları, trafiğin hangi backend sunucusuna iletileceğini belirleyen algoritmalardır. En sık kullanılan algoritmaları şu şekilde sıralayabiliriz:

Round Robin: Round robin, sunucuların sıralı olarak seçildiği ve trafiğin bu sıralama ile paylaştırıldığı algoritmalardır. Bu algoritmada load balancer, ilk istek için listesindeki ilk sunucuyu seçer ve sora sırayla listenin altına doğru devam eder. Listenin sonuna gelindiğinde ise tekrar üstten başlayarak sırayla aşağıya doğru seçim devam eder.

Least Connection: Least connection algoritmasında yük dengeleyici en az bağlantıya sahip sunucuyu seçer. Bu algoritma trafiğin daha uzun oturumlarla sonuçlandığı durumlarda önerilir.

Source (IP Hash): Source algoritmasında yük dengeleyici istemcinin IP adresini, hangi sunucunun isteği alacağını belirlemek için kullanır. Bu yöntem ile belirli bir kullanıcının sürekli olarak aynı sunucuya bağlanması sağlanır.

vusJZG.gif


commercial-facilities-min.jpg


Neden Load Balancing Kullanılmalı?

Load balancing ile erişilebilirlik ve sunucu sürekliliği en üst seviyeye çıkarılabilir. Bu sayede sunucu sistemi kullanıcılar için her zaman hazır ve çalışabilir durumda olur.

Dönemsel olarak yaşanacak trafik artışlarında dahi gecikmeler ve erişim kesintileri yaşanmayacağı için kullanıcı deneyimi de gelişmeler gösterir.

Kullanıcılar en uygun uygulama / veri tabanı kaynaklarına yönlendirileceği ve uygulama / veri tabanı optimizasyonu sağlanacağı için “single point of failure” riski ortadan kalkar.

Hemen hemen tüm uygulamalar kodlama sürecinde load balancer arkasında çalışacak şekilde tasarlanmadığı için load balancer arkasına alınan sunuculara doğru gelen ziyaretçilerin session bilgileri sunucular arasında aktarılmadığı için session düşmesi veya kaybı yaşanmaktadır. Bu olumsuz durumun ortadan kalkması için en kısa yöntem sticky persistence ayarı yapılabilir. Olması gereken çözüm ise session’ları ortak bir sunucuda ya da veri tabanında toplamak şeklindedir.

vusJZG.gif



iUBacd.gif



Okuduğunuz için teşekkürler, iyi forumlar! :Smiley1009:



Teknoloji Blog sitemde kullandığım sunucuda bu sistem bulunmaktadır ve sitem çok hızlı açılıyor neredeyse hiç erişim sorunu yaşadığımı hatırlamıyorum.
 

Ghost Killer

Yaşayan Forum Efsanesi
13 Ocak 2019
11,239
7,715
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.