Yük Dengeleme Nedir
Yük dengeleme (load balancing), gelen istekleri birden fazla sunucu arasında dağıtan bir altyapı tekniğidir. Amaç, tek bir sunucunun aşırı yüklenmesini önlemek, kaynakları verimli kullanmak ve hizmet sürekliliğini garanti altına almaktır. Kurumsal ölçekte yüksek erişilebilirlik isteyen her sistem için yük dengeleme vazgeçilmez bir bileşendir.
Neden İhtiyaç Duyulur
Tek sunuculu bir mimaride, o sunucu arızalandığında tüm hizmet durur. Ayrıca trafik arttığında tek sunucu darboğaza dönüşür. Yük dengeleme, isteği sağlıklı sunuculara yönlendirerek her iki sorunu da çözer.
- Trafiğin sunucular arasında adil biçimde dağıtılması
- Arızalı sunucunun otomatik olarak devre dışı bırakılması
- Bakım sırasında kesintisiz hizmet sağlanması
- Ani yük artışlarının emilerek kararlılığın korunması
Dağıtım Yöntemleri
Yük dengeleyiciler istekleri farklı algoritmalarla dağıtır. Sıralı dağıtım, en az bağlantıya sahip sunucuya yönlendirme veya sunucu kapasitesine göre ağırlıklandırma yaygın yöntemlerdir. Doğru yöntem, iş yükünün karakterine göre seçilir.
Sağlık Kontrolleri
Yük dengeleyicinin en kritik işlevlerinden biri, arkasındaki sunucuların sağlığını sürekli denetlemektir. Yanıt vermeyen bir sunucu tespit edildiğinde trafik otomatik olarak sağlıklı sunuculara yönlendirilir. Bu mekanizma, kullanıcıların kesintiyi fark etmeden hizmet almasını sağlar.
Oturum Sürekliliği
Bazı uygulamalar, bir kullanıcının aynı sunucuya yönlendirilmesini gerektirir. Oturum sürekliliği (session persistence), yük dengeleme sırasında kullanıcı deneyiminin tutarlı kalmasını sağlar. Bu ayar, uygulamanın mimarisine göre dikkatle planlanmalıdır.
Yatay Ölçeklendirme ile Uyum
Yük dengeleme, yatay ölçeklendirmenin temelidir. İş yükü büyüdükçe havuza yeni sunucular eklenir ve yük dengeleyici bunları otomatik olarak devreye alır. Bu yaklaşım, altyapının esnek biçimde büyümesini mümkün kılar.
Yüksek Erişilebilirlik
İyi tasarlanmış bir yük dengeleme mimarisi, tek nokta arıza riskini ortadan kaldırır. Yük dengeleyicinin kendisi de yedekli kurulmalıdır ki, kritik bir bileşen bile hizmeti tehlikeye atmasın.
Katman 4 ve Katman 7 Yük Dengeleme Arasındaki Fark
Yük dengeleyiciler, trafiği hangi bilgiye bakarak yönlendirdiklerine göre iki ana gruba ayrılır.
- Katman 4 (taşıma katmanı): Yalnızca IP adresi ve port bilgisine bakarak TCP veya UDP bağlantılarını dağıtır. İçeriği incelemediği için hızlıdır ve web dışı servisler dahil hemen her protokolle çalışabilir.
- Katman 7 (uygulama katmanı): HTTP isteğinin içeriğini okur; adres yoluna, alan adına, başlık bilgilerine veya çerezlere göre yönlendirme yapabilir. Örneğin /api ile başlayan istekler bir sunucu grubuna, görseller başka bir gruba gönderilebilir. SSL/TLS sonlandırma da genellikle bu katmanda yapılır.
Hangisinin seçileceği uygulamanın türüne bağlıdır: yalnızca bağlantıları dağıtmak yeterliyse katman 4, içeriğe göre akıllı yönlendirme gerekiyorsa katman 7 tercih edilir.
Donanım, Yazılım ve DNS Tabanlı Yük Dengeleme
- Donanım yük dengeleyici: Bu iş için üretilmiş özel cihazlardır; yüksek trafikli veri merkezlerinde kullanılır.
- Yazılım yük dengeleyici: Standart bir sunucu ya da sanal makine üzerinde çalışır. Esnek yapılandırılabilir ve sanallaştırılmış ortamlara kolayca uyum sağlar.
- DNS tabanlı dağıtım: Aynı alan adı için birden fazla IP adresi döndürülerek trafik dağıtılır. Kurulumu basittir; ancak klasik DNS sunucusu arkadaki sunucunun çalışıp çalışmadığını bilmez ve istemciler kayıtları önbellekte tuttuğu için arızalı bir sunucuya bir süre daha istek gidebilir.
Trafiği coğrafi olarak kullanıcıya yakın noktalardan sunmak ise farklı bir yaklaşımdır; bu konuyu İçerik Dağıtım Ağı (CDN) yazımızda anlattık.
Uygulamayı Yük Dengelemeye Hazırlamak
Yük dengeleyiciyi kurmak tek başına yeterli değildir; uygulamanın birden fazla sunucuda aynı anda çalışabilecek şekilde hazırlanması gerekir.
- Oturum bilgisini ortak bir yere taşıyın: Kullanıcı oturumları yalnızca bir sunucunun belleğinde tutulursa, istek başka sunucuya gittiğinde oturum kaybolur. Oturumların ortak bir önbellek ya da veritabanında saklanması, yapışkan oturum ihtiyacını azaltır. Önbellek kullanımına dair yaklaşımları Önbellekleme Stratejileri yazımızda bulabilirsiniz.
- Dosyaları paylaşımlı depolamaya alın: Kullanıcıların yüklediği dosyalar tüm sunuculardan erişilebilir olmalıdır.
- Anlamlı bir sağlık kontrolü tanımlayın: Yalnızca portun açık olması değil, uygulamanın veritabanına bağlanabildiğini de doğrulayan bir kontrol adresi kullanın.
- Gerçek istemci IP adresini aktarın: Arka sunucular trafiği yük dengeleyiciden aldığı için kullanıcı adresi X-Forwarded-For gibi başlıklarla iletilmeli, loglar ve güvenlik kuralları buna göre ayarlanmalıdır.
- Yük testi yapın: Canlıya almadan önce bir sunucuyu kasıtlı olarak kapatıp trafiğin diğerlerine geçtiğini doğrulayın.
Sık Yapılan Hatalar
- Yük dengeleyiciyi tek cihaz olarak bırakmak: Web sunucuları çoğaltılsa da tek bir yük dengeleyici yeni bir tek nokta arızası olur.
- Veritabanını unutmak: Uygulama sunucuları yedekli olsa bile tüm sunucular tek bir veritabanına bağlıysa, o veritabanı tüm sistemin zayıf halkasıdır. Bu katmanların yedekliliği için Yüksek Erişilebilirlik (HA) yazımıza göz atabilirsiniz.
- SSL sertifikalarını sunucular arasında farklı sürümlerde tutmak: Sertifika yenilemesi tek noktadan yönetilmezse bazı kullanıcılar süresi dolmuş sertifikayla karşılaşabilir.
- Sunucular arasında farklı yapılandırma bırakmak: Havuzdaki sunuculardan birinde eski uygulama sürümü ya da farklı bir ayar kalırsa, kullanıcılar hangi sunucuya düştüklerine göre farklı davranışla karşılaşır ve sorun tutarsız göründüğü için teşhisi zorlaşır. Dağıtımların tüm sunuculara aynı anda ve otomatik yapılması bu riski azaltır.
Büyüyen trafiği karşılamak için yük dengeleme ve yatay ölçekleme mimarisinin tasarlanması için Sunucu ve Sistem Ölçekleme hizmet sayfamızı inceleyebilirsiniz.
GelecekINT olarak kurumsal sistemleriniz için yüksek erişilebilirlikli yük dengeleme mimarileri tasarlar ve kurarız. Kesintisiz hizmet altyapısı için WhatsApp üzerinden bize ulaşabilir veya teklif talebinde bulunabilirsiniz.