Load balancing ağ trafiğini çok sayıda sunucuya dağıtma işlemidir. Bu sayede tek bir sunucu çok fazla talebi karşılamak zorunda kalmamaktadır. Türkçe’de yük dağıtımı olarak da kullanılabilecek olan load balancing işlemi ile yük eşit olarak dağıtılır ve bu sayede uygulamaların geç cevap vermesinin önüne geçilir. Ayrıca kullanıcılar için uygulamaların ya da internet sitelerinin erişilebilir olmasını sağlar. Günümüzde yüksek trafiğe sahip internet siteleri yüz binlerce kullanıcıya hizmet vermektedir. Kullanıcıların erişim istekleri onlara metin, görsel, video ya da uygulama verisi olarak geri dönmektedir. Bu trafiğin akışının sağlanabilmesi ve bir sunucunun aşırı yüklenmemesi için load balancing devreye girmektedir. Load balancing yazılım ile yapılabildiği gibi aynı zamanda donanım ile de yapılabilmektedir.
Load Balancer Ne İşe Yarar?
Bir uygulamanın istekleri karşılaması için load balancer hangi sunucunun trafiği karşılayacağına karar verir. Bu da iyi bir kullanıcı deneyimi oluşturmak için önemlidir. Load balancer sunucu ile son kullanıcı cihazı arasındaki bilgi akışını yönetmektedir. Sunucunun veri merkezinde olması on-premise olması ya da bulut olması fark etmemektedir. Sunucu sanallaştırılmış olsa da load balancer kullanılabilmektedir. Bu sayede sunucuların veriyi daha verimli bir şekilde iletmesi sağlanır ve uygulama iletim kaynakları optimize edilerek sunucu aşırı yüklenmesinin önüne geçilir. Yük dağıtıcılar sunucunun trafiği kaldırıp kaldıramadığını sürekli olarak kontrol eder. Gerekli durumlarda olması gerektiği gibi çalışmayan sunucular bu durum giderilene kadar havuzdan çıkarılır. Bazı yük dağıtıcılar artan talebin sağlıklı bir şekilde karşılanabilmesi için yeni sanal uygulama sunucu bile oluşturabilmektedir.
Yazılımsal ve Donanımsal Load Balancing
Load balancing işlemi hem yazılımsal hem de donanımsal şekilde yapılabilmektedir. Bu yöntemler her ne kadar birbirinden farklı olsa da aynı amaca hizmet etmektedir. Ancak birbirlerine göre farklılıkları, avantajları ve dezavantajları bulunmaktadır.
Donanım Tabanlı Load Balancing
Donanımsal load balancer genellikle yüksek performanslı cihazlardır ve farklı uygulamalardan gelen gigabit’lerce trafiği güvenli bir şekilde işleme kapasitesine sahiptir. Bu cihazlar aynı zamanda yerleşik sanallaştırma özelliklerine sahiptir ve bu sayede aynı donanım ile çok sayıda sanal load balancer kullanılabilmektedir. Bu sayede diğer avantajları ile beraber multi-tenant mimarilerde kullanımı daha esnek olurken aynı zamanda daha fazla izolasyon da sağlayabilmektedir.
Yazılım Tabanlı Load Balancing
Load balancer yazılımları, donanımların yerini tutarken aynı zamanda daha fazla işlev ve esneklik sağlamaktadır. Hypervisor, container ya da normal bir Linux bare-metal sunucuda çalışabilmektedir. Yüksek özelleştirilebilirliği sayesinde farklı kullanım senaryolarına ve teknik yeterliliklere ihtiyaç duymaktadır. Yazılım tabanlı load balancer’ın bir diğer özelliği de hem alandan hem de donanım giderlerinden tasarruf sağlamasıdır.
Load Balancing ve SSL
Tarayıcı ile sunucu arasında şifreli ve güvenli bir yol oluşturmak için SSL olarak bilinen Secure Sockets Layer standardı kullanılmaktadır. SSL trafiği genellikle load balancer’da deşifre edilmektedir. Load balancer trafiği, istek geçmeden önce deşifre ettiğinde buna SSL termination adı verilmektedir. Bu sayede sunucuların veriyi deşifre etmek için ekstra bir CPU döngüsü kullanmasının önüne geçilmektedir ve uygulamanın daha performanslı çalışması sağlanmaktadır. Ancak SSL termination ile ortaya bir güvenlik endişesi ortaya çıkmaktadır. Sunucu ile load balancer arasındaki iletişim şifreli olarak gerçekleşmemektedir. Bu da uygulamanın potansiyel siber saldırılara açık hale gelmesi demektedir. Ancak load balancer’ın sunucular ile aynı veri merkezinde olması durumunda bu endişe ortadan kalkmaktadır.
Load Balancing ve Güvenlik
Load Balancing özellikle bulut bilişimde önemli bir güvenlik sağlamaktadır. Off-loading özelliği sayesinde sunuculara yapılacak “Distributed denial-of-service” (DDoS) saldırılarının önüne geçmeyi sağlamaktadır. Böyle bir saldırı durumunda yük şirketin sunucusundan bulut sağlayıcısına aktarılmaktadır. Günümüzdeki siber saldırıların büyük bir çoğunluğu DDoS şeklinde yapılmaktadır ve DDoS saldırılarının sayısı giderek artmaktadır. Bu saldırıları önlemeye yönelik geliştirilen özel güvenlik duvarı donanımları oldukça pahalıdır ve işletilmesi zordur. Bulut off-load özelliği ile yazılım tabanlı load balancer ise hem daha verimli hem de daha düşük maliyetlidir.
Load Balancing’in Yararları
Load balancing trafik polisliği yapmaktan çok daha fazladır. Yazılım tabanlı dağıtıcılar önceki verileri kullanarak trafik darboğazları daha meydana gelmeden tahmin edebilmektedir. Bunlar özellikle süreci otomatiğe etmek için son derece önemlidir ve karar alma sürecini de daha kolay hale getirmektedir. 7 katmanlı Open System Interconnection (OSI) modelinde ağ güvenlik duvarı birinci ile üçüncü (Physical Wiring, Data Link, Network) katmanları arasındadır. Load balancing ise dördüncü ve yedinci (Transport, Session, Presentation, Application) katmanları arasında yapılmaktadır. L4’te IP adresi ya da TCP portu gibi ağ tabanlı veri ve transport katmanı protokolü yönlendirilmektedir. L7 ise load balancing’e dönüştürülecek içerik eklemektedir. Bu sayede HTTP başlığı, SSL oturum ID’si ya da HTML form verisine bağlı olarak routing kararları alınabilmektedir. Global Server Load Balancing (GSLB) ise L4 ve L7’nin yapabildiklerini farklı lokasyonlarda bulunan sunuculara göndermektedir. Her geçen gün daha fazla işletme veri merkezlerinde ya da bulut hizmetlerinde bulut tabanlı uygulamalar çalıştırmaktadır. Bu da load balancing teknolojilerinde gelişmeler yaşanmasını sağlamaktadır.