ADC’ler fonksiyonları ve özellikleri ile uygulamaların performansını artıran ileri düzey yük dengeleyicilerdir. Bugün her ölçekteki şirketin, web uygulamalarından Exchange, SharePoint ve veritabanlarına kadar, karmaşık uygulamalarını optimize etmek için ADC gereksinimi vardır. Load balancing (Yük Dengeleme), verimliliği en üst seviyeye çıkartma, optimum kaynak kullanımı sağlama, tepki süresini en aza indirme, aşırı yükü ortadan kaldırma gibi gereksinimleri, işyükünü birden çok sunucu üzerine dağıtarak sağlayan bir network metodudur. Load balancing hizmeti genellikle multilayer switch veya DNS sunucusu gibi dedicated bir donanım veya yazılım ile sağlanıyordu. Load balancing ile tek bir sunucu yerine birden çok sunucu kullanımı, yedeklilik sayesinde güvenilirlik sağlamaktadır. Peki nasıl?
Round-robin DNS
Load balancing’in ilk metotlarından birisi round-robin DNS’tir. Bu teknikte, birden çok IP adresi tek bir domain’e atanır, ve DNS, bağlanan client’a hangi IP adresini vereceğini seçer. Bu teknik, bağlanan client’a, arka planda çalışan birden çok sunucu olduğunu ortaya çıkarmış olur. Bu tekniğin, DNS sunucu üzerindeki kontrol derecesine göre avantaj ve dezavantajları vardır.
Load balancing bir sunucunun yapması gereken işi bir çok sunucuya bölerek aynı süre zarfında daha çok iş yapılmasını sağlar, bir başka deyişle tüm kullanıcılar daha hızlı hizmet almış olur. Load balancing donanımsal, yazılımsal veya hibrit bir yapıda uygulanabilir. Internet servisleri için Load balancer, dış kullanıcıların servislere ulaşmak için bağlandıkları network portlarını dinleyen yazılımsal bir programdır. Load balancer kullanıcıların taleplerine en iyi cevap verebilecek arka plan sunucusunu seçerek talebi yönlendirir. Arka plan sunucusu load balancer’a cevap döner. Bu da ek bir güvenlik katmanı oluşturarak dış kullanıcıların arka plandaki sunucularla birebir iletişim kurmasının ve potansiyel atakların önüne geçmiş olur. Basitçe çizmek gerekirse topoloji şu şekildedir;
Bazı load balancerlar tüm arka plan sunucularının erişilemez olduğu durumlarda aksiyon alabilmek için bir mekanizma geliştirmişlerdir. Bu mekanizma gelen talepleri yedek load balancer’a iletme veya sunucunun erişilemez olduğuna dair bir mesaj görüntüleme gibi işlevleri kapsar. Aynı zamanda uygulamaya gelen trafiğin arttığı ya da azaldığı durumlarda cevaplamanın sağlanması için gereken kapasitenin otomatik olarak ayarlanmasını sağlar.
TCP load balancing
TCP/IP load balancing bir servise gelen çok sayıdaki isteği iki veya daha çok sunucuya dağıtır. Round-robin DNS’in aksine tüm client’lar tek bir IP’ye atanır. Servis temelli bir load balancing algoritması kullanılarak dağıtım yapılır. Bu da servislerde cevap süresi, servis kalitesi ve kullanıcı deneyimlerini optimize eder ve geliştirir. Aşağıdaki örneği inceleyebilirsiniz,
Tek bir hostname veya TCP/IP network adresi ile tanımlanmış tek bir konfigürasyonla iki veya daha fazla sunucu bir araya getirilerek gruplandırılır. Servis talebi olan herhangi bir uygulama veya client, load balancer’daki hostname’e istek gönderir. Talebi alan load balancer gruptaki hangi sunucunun görevi yapacağını seçer.
Load balancer, client’ın talebini en iyi şekilde yerine getirecek sunucuyu seçerken bir algoritma kullanır. Bu noktada bir çok zamanlı/programlı çalışan algoritmalar da mevcuttur. Basit algoritmalar random olarak seçme ya da round-robin metotlarını kullanır. Daha sofistike load balancerlar sunucunun ilettiği en son yük durumu, en son cevap süresi, up/down durumu, aktif bağlantı sayısı, coğrafi konum bilgisi, trafik kullanım durumu, yeterlilik gibi bir çok faktörü değerlendirir.
ADC’lerin ortaya çıkış süreci
2000’lerin sonlarında web sunucuları sadece statik içerikleri değil, bazı uygulamaları da sağlar duruma geldiler. İşletmeler çalışanlarına, müşterilerine ve ortaklarına en kritik fonksiyonlarını sağlamak amacıyla web tabanlı uygulamaları kullanmaya başladılar. Basit load balancing işlemleri bu tip durumlarda dinamik ve gerçek zamanlı içeriklerin sağlanmasında yetersiz kalmaktaydı. Kullanıcılar, iş gereksinimlerine destek olmak için, policy ve ileri seviye application layer bilgisi ile birçok kriteri sağlayarak uygulama sunucusuna bağlanmak zorundaydı. Bir çok iç uygulamayı uyumlu hale getirmek, direk olarak üstünde bir değişiklik yapmadan dönüştürebilmek veya client talebinin içeriğini, sunucudan dönen cevabı yeniden yazmak ADC sayesinde mümkün olmuştur.
ADC’ler genellikle veri merkezlerinde firewall ile uygulama sunucularının arasına yerleştirilir. ADC sayesinde kullanıcılar, spesifik ihtiyaçlarına göre uygulamaya ulaşırken; network ve uygulamaların da güvenliğinin sağlandığından emin olabiliriz. ADC uygulamaların nasıl çalıştığını anlayarak spesifik trafikleri derinlemesine inceleyebilir ve akıllıca kararlar alabilir. İşlem yoğunluklu bir çok görevi azaltarak, CPU kullanımını arttıran ve dar-boğaz oluşturan işlemleri yaparak uygulama sunucusu performansını optimize eder. ADC’ler bunlara ek olarak SSL offload, hızlandırılmış sıkıştırma, sanallaştırma farkındalığı ve TCP ve HTTP protokol optimizasyonu gibi ek özelliklere sahiptir.
ADC’ler sıkıştırma sayesinde maksimum bant genişliğinin kullanılmasını sağlar ve böylece daha çok trafiği aynı bant üzerinden sağlamış olur. Son zamanlarda ADC’ler içerik dönüştürme ve etkileşim teminatı gibi yeni protokol anlayışları ve servisler eklenerek geliştirilmektedir. ADC’nin bazı özellikleri şu şekildedir;
Asymmetric load – Bazı arka plan sunucularına, daha fazla yükü üzerine almasını sağlamak için, elle belli bir oran değeri (ratio) girilebilir. Sunucuların kapasiteleri farklı ise daha güçlü olanları daha fazla kullanmak için uygulanabilir.
Priority activation – Sunucu erişilebilirliği azaldığında / ya da üstlerindeki yük arttığında standby konumunda olan sunucular çevrim-içi hale getirilebilir. Bu da veri merkezindeki kaynaklarınızın daha verimli kullanılmasını sağlar.
SSL Offload and Acceleration – SSL taleplerindeki encryption işlemleri ve authentication gereksinimi web sunuculardaki CPU kullanımını büyük oranda arttırdığı için web sunucularında cevap süresi artmakta ve servisler yavaşlamaktadır. Bu işlemi web sunucu üzerinden alıp bir ADC üzerinde gerçekleştirebiliriz. Bazı ADC’ler SSL işlemleri için özel bir donanım da sağlamaktadır. Böylece uygulama performansını arttırabiliriz.
Distributed Denial of Service (DDoS) attack protection – Distributed denial-of-service attack (DDoS attack) kullanıcıların network kaynağına erişimini engellemek için uygulanan bir girişimdir. Protokol analizi ve içerik değiştirme gibi özelliklerini kullanan ADC, bu taleplerin tipine ve istenen içeriğe göre akışları birden çok sunucuya yönlendirebilir. Bu özellikler; uzun süren işlemlerin ve en az öneme sahip taleplerin kuyruğa alınmasını, ya da düzgün formda olmayan http taleplerini ve olmayan içeriklere gelen talepleri reddetme işleminin yapılmasını sağlar. Saldırılar ile sunucu arasında durduğundan, ADC istenmeyen talepleri bloklarken, kritik uygulamaların erişiminin düzgün şekilde çalışmasını sağlar.
HTTP compression – Tüm güncel tarayıcıların sahip olduğu Gzip ve Deflate sıkıştırmasını kullanarak HTTP öğeleri için gereken veri transferinin miktarını azaltır. Bu da round-trip sayısını azaltarak cevap süresini iyileştirir.
TCP offload – Üreticiler birbirinden farklı terimler kullansa da esas fikir şudur; normalde ayrı kullanıcılardan gelen her bir HTTP request ayrı birer TCP bağlantısıdır. Bu özellik, farklı kullanıcılardan gelen birden çok HTTP request’i birleştirip tek bir TCP soketi olarak arka planda çalışan sunucuya gönderir.
TCP buffering – ADC, sunucudan dönen yanıtlarda tampon görevi görür ve yavaş kullanıcılara giden veriyi yavaşlatır ve web sunucusunda kaynak tüketimini azaltır. Böylece daha çabuk verilmesi gereken cevaplar doğrudan yanıtlanarak gecikme yaşanmamış olur.
Health checking – ADC, yüksek erişilebilirlik için sunucuları application katmanında kontrol eder ve erişilemeyen sunucuları listeden çıkarır.
HTTP caching – ADC statik içerikleri depolayarak web sunucuya bağlanmadan bazı talepleri cevaplayabilir. Böylece sunucu meşgul olsa bile hızla cevap verebilir ve performansı arttırır.
Content filtering – Load balancer’lar akmakta olan trafik üzerinde değişiklik yaparak zararlı atakları engeller ve güvenliği sağlar.
HTTP security – ADC’ler HTTP hata sayfalarını gizleyebilir, sunucu tanımlarını içeren headerları HTTP yanıtlarından çıkarabilir ve cookielere encrypt işlemi yaparak son kullanıcıların manipüle etmesini engelleyebilir.
Priority queuing – Rate shaping olarak da bilinen bu özellik farklı trafik türlerine öncelik atayabilir.
Content-aware switching – ADCler, URL’e bakarak taleplerin HTTP mi HTTPS mi olduğuna karar vererek sadece istenenleri farklı sunuculara yollayabilir.
Client authentication – Websitelerine erişim iznini vermeden önce kullanıcıları,n farklı kaynaklar üzerinden authentication işlemini yapmalarını sağlar.
Bir sonraki yazımızda modeller, cihaz seçimi ve temel yapılandırmadan bahsedeceğiz.