NETWORK LOAD BALANCING SERVICES
Şirket web serverının performansı seni tatmin etmiyor, proxy arrayin isteklere yeterince hızlı cevap vermiyor terminal services server’ın client yoğunluğundan yavaşlamaya başladı.Bu sorunların hepsinin tek bir çözümü olabilir, Network Load Balancing (NLB). NLB üyeleri arasında IP trafiğini bölüştürerek her üyesine tek başlarına bulundukları durumdan daha az network yükü binmesini sağlayan bir microsoft teknolojisidir.NLB bunu birkaç serverı bir araya getirip bunlardan bir NLB cluster’ı oluşturarak başarır. NLB cluster’ı maksimum 32 node’dan oluşabilir ve Windows 2000 Advanced Server , Windows 2000 Datacenter ,Windows Server 2003 Standard Edition ,Windows Server 2003 Enterprise Edition ,Windows Server 2003 Datacenter Edition işletim sistemlerini gerektirir.
Peki NLB bunu nasıl yapar.Temel olarak NLB açılınca NLB sürücüsü NIC sürücüsü ile IP protokolü arasına yerleşir ve böylece tüm NLB kümesi üyelerine gelen her paketi alıp inceler.Paket kablodan Cluster’a geldiğinde her node pakedi alır ve inceler ve cluster çapında belirtilmiş kurallara göre pakedi üstkatmanda bulunan IP protokolüne iletir veya paket daha NLB sürücüsündeyken atılır.Böylece trafik node lar arasında paylaştrılır.Kısaca tüm nodelar Cluster’a gelen trafiği alır ama tüm nodelar cevap vermez.
Şekil 1- Temel Network Load Balancing süreci
NLB kümeleri iki farklı mode da çalışabilir.Birincisi aynı zamanda varsayılan mode olan Unicast Mode ‘dur.Unicast mode da clusterı oluşturan nodelarca kullanılan bir tek sanal MAC adresi vardır.bu adres daima 02-BF ile başlar.Tüm küme üyelerinin bu tek adresi kullanması onların bu adresi kullanan (NLB sürücüsü çalışan) network kartı üzerinden görüşebilmelerini engeller.Örneğin nodeA nodeB ye bir paket gönderirken hedef ve kaynak MAC adreslerini aynı yazar.Bu pakedi alan node B kaynak MAC adresi ile pakedin hedefi olan kendi MAC adresini karşılaştırınca bunların aynı olduğunu görüp bir hata oluştuğunu düşünerek pakedi atar.Sonuç olarak unicast mode çalışan bir NLB kümesi üyeleri NLB çalıştıran network kartı üzerinden birbirleriyle görüşemezler.Bu sorunu ortadan kaldırmak için iki yöntem vardır . Birincisi nodelara ikinci bir network kartı takmaktır.Bu network kartı NLB kümesi aynı networke veya farklı network’e bağlı olabilir.Nodelar arasında ilave bir bağlantı sağlaması yeterlidir.İkinci çözüm ise ikinci NLB cluster mode‘u olan multicast mode’u kullanmaktır. Multicat mode da NLB cluster üyeleri hem sanal Mac adresini Hemde kendi MAC adreslierini kullanırlar .Bu mode da paylaşılan MAC adresi (sanal MAC) daima 03-BF ile başlar.Üyeler bu modeda NLB kurulu ve çalışan Network kartı üzerinden birbirleri ile görüşebilirler.Bu küme üyelerinde tek network kartı olduğu durumlarda tavsiye edilen Cluster mode’udur.
Peki NLB cluster üyelerinin birbirleri ile görüşmesi şartmıdır? Evet NLB cluster üyeleri “Convergence” sağlamak zorundadır.Convergence NLB cluster durumunun belirlenmesi ve yükün dağıtılması sürecidir.Kısacası NLB algoritması node sayısı ,varsa belirlenen port kuralları ve cluster IP lerinin de alınması ile bir hesaba dahil eder ve bu hesap sonucuna göre üyeler clustera IP’sine gelen tarafiği kabul eder veya reddederler.
NLB cluster üyeleri için convergence süresi 3 saniyedir. Yani bir NLB cluster üyeleri devre dışı kaldığında diğer üyelerin bunu farkettikten sonra tekrar yük dağılımını düzenlemesi 3 saniye sürer. Örneğin üç üyeli bir NLB cluster’a gelen trafik 33% olarak paylaştırılırken , bir node devredışı kalınca 3 saniye’de “converged” olur ve trafiği 50% olarak paylaştırmaya başlar.
NLB ile ilgili diğer bir kavram “Heartbeat” dir.Heartbeat bir NLB üyesinin diğer üyelere devrede olduğunu söyleme sistemidir .Bu sayede birbirlerinin durumundan haberdar olurlar .NLB clusterına bir node eklenince , bir node devre dışı kalınca veya bir node yeniden devreye girince bunu tesbit etmelerini sağlayan Heartbeat paketleridir. Heartbeat NLB enable edilmiş network kartı üzerinden yapılan bir broadcast dir. Heartbeat NLB üyesinin üzerinde bulunan ilave network kartlarından yapılmaz .Her NLB cluster üyesi 1,5 KB lik bu heartbeat mesajlarını saniyede 1 kere gönderir.Bu gönderilme aralığı registeryden değiştirilebilir . Fakat bu ayar tüm üyelerde aynı olmalıdır.
Varsayılan olarak bir node arka arkaya 5 heartbeat kaçırırsa ,diğer NLB cluster üyeleri o node’un cluster’dan düştüğüne karar verirler.Böylece yeni üye sayısı ile birlikte NLB algoritması yeniden çalışır.Convergence başlar. Ne kadar Heartbeat mesajı kaçtıktan sonra o node devredışı kabul edileceğide registry’de modifiye edilebilir.( bu ayarda tüm üyelerde aynı olmalıdır.)
Sonuç yeni bir node eklenirse bunun tesbit edilip yükün tekrar dağıtılması 3 saniye sürer.Bir node devredışı kalırsa bunun diğer nodelarca farkedilmesi ve convergence’a başlanması için 5 saniye gereklidir (Yani arka arkaya 5 heartbeat kaçırma ) convergence 3 saniye süreceği için yükün tekrar paylaştırılması toplam 8 saniye sürecektir.
NLB ile ilgili bir diğer önemli kavram ise Affinity’dir. Affinity aslında NLB nin nasıl çalışacağıdır yani bir üye NLB kümesine gelen IP paketlerini kabul edecekmi etmeyecekmi bu affinity ‘ye bağlıdır. None , Single ve Class C olmak üzere 3 tip affinity vardır . Affinity None olarak ayarlanmışsa gelen paketler kaynak port ve kaynak IP bazında hashlenir.Örneğin web server NLB kümesi oluşturmak istiyorsan kullanacağın Affinity bu olmalıdır böylece küme sanal IP adresine gelen trafik tüm üyelerce eşit şekilde paylaşılır.Bir client örneğin bir web server NLB kümesinin sanal IP adresine geldiğinde küme üyelerinden biri tarafından kabul edilir . Client tekrar bağlandığında rasgele başka bir üye tarafından kabul edilir ve bağlantı kurulur.
Single Affinity ise kaynak IP adresine göre NLB kümesine gelen trafiği dağıtır.Basit bir örnekle açıklarsak 2 terminal serverda oluşan bir NLB kümesinde sanal IP adresini yazarak bir terminal bağlantısı kurduk ve küme üyelerinden node A tarafından kabul edilidik diyelim. Bu server üzerine bize ait oturumla çalışırken bağlantı kesilirse ve ben tekrar bağlantı kurmak için NLB kümesine gidersem NLB beni belki node B ye yönlendirir ve bu durumda node A da beni bekleyen oturumuma (yani açık olan dokümanlar , progamlar vs.) ulaşamam.Dolayısıyla benim clientın tekrar node A ya bağlanmasını istiyorsam kullanmam gereken affinity Single’dır.Single Affinity sayesinde tekrar bağlandığımda node A ya ulaşır ve beni bekleyen oturumuma ulaşırım.
Son affinity tipi olan Class C Affinity ise aslında Single Affinity benzeri bir NLB yöntemidir . Single Affinity ye göre daha az kısıtlayıcıdır .Kısaca aynı Class C subnetten gelen hostlar hep aynı küme üyesi tarafından karşılanır.Fazla kullanışlı görünmemesine rağmen özellikler Proxy serverların Load balancing’i için kullanılabilir.
Network Load Balanacing yönetimi için temel olarak Network Load Balancing Manager snap-in kullanılır.Bununla birlikte network kartı özellikleri penceresinden de NLB ayarları yapılabilir.NLB ayarları yapılırken Network Load Balanacing Manager snap-in ve network kartı özelliklerinin birlikte kullanılması bazı tutarsız sonuçlara yol açabilir .
Şekil 2 – Network Load Balancing Manager snap-in
Bunun dışında komut satırından NLB konfigürasyonu yapmak için wlbs ve nlb gibi toollarda mevcuttur.
Şekil 3 - Network kartı üzerinden NLB ayarları
Network Load Balancing ayarları üç temel bölümden oluşur.
•
Cluster Parameters
•
Host Parameters
•
Port Rules
Bu ayarlardan Cluster Parameters tüm NLB kümesi üyelerinde aynı olmalıdır.Cluster parameters sekmesini kısaca incelersek .Cluster IP configuration kısmında NLB kümesine atanacak sanal IP adresi bunu alt ağ maskesi ile kümenin FQDN’i ve kümenin sanal MAC adresi ayarları bulunur.
Şekil 4 - Cluster Parameters Sekmesi
Cluster Operation Mode kısmında daha öncede bahsettiğimiz cluster calışma mode’u ayarlanabilir. Son bölüm olan remote control ksımında ise NLB kümesinin uzaktan yönetimine izin verilebilir ve bu uzaktan yönetim için password belirlenebilir.
Host Parameters sekmesinde küme üyelerinin herbiri için spesifik olan ayarlar yapılabilir.İlk değişken olan Priority 1-32 arası değerler alır ve Priority değeri 1 olan NLB kümesi üyesine Default Host denir . NLB kümesine bir Port Rule tarafından belirlenmemiş bir trafik ulaşırsa bunun kimin tarafından işleneceğini belirleyen bir değerdir.Aslında default olarak tüm portları kapsayan bir rule olduğu için Priority’nin değeri bu Port Rule silinmeden bir anlam taşımaz. Dedicated IP kısmında sadece o küme üyesine ait olacak ve ona ulaşılırken kullanılabilecek bir IP adresi belirtilebilir.
Şekil 5 – Host Parameters sekmesi
Host Parameters kısmındaki bir diğer ayar olan Initial Host State ise küme üyesi olan makina restart ettikten sonra NLB servisinin durumu ne olacak bunu belirtir.Varsayılan değer olan “Started” makina açıldığına NLB servisinin tekrar çalışmasını ve bu üyenin tekrar NLB kümesine dahil olmasını sağlar.
NLB ayarları içinde belkide en önemlisi olan Port Rule yani Port kurallarının yapıldığı bölümdür .Daha önce bahsettiğimiz Affinity ayarlarınında yapıldığı yer burasıdır.
Şekil 6 - Port Rules Sekmesi
Burada ilk gördüğümüz varsayılan olarak gelen bir kuraldır . Bu kural tüm port ve protokolleri içeren ve bu trafik için Single Affinity uygulayan ve bunuda eşit bir şekilde tüm küme üyelerine dağıtan bir kuraldır.Kural içeriğini görmek için kural seçiliyken Edit demek yeterlidir.
Şekil 7 - Port kurallarının değiştirlmesi
Buradaki ayarlardan ilki olan Cluster IP address NLB kümesinin hangi IPleri için bu kural geçerli olacak bunu belirler.Bunun altındaki Port Range kuralın hangi portları içeren bir kural olacağını Protocols ise hangi protokollerle gelen trafiğin NLB sürecine dahil edileceği ayarlanır.
Filtering Mode kısaca yük dengeleme trafik birkaç üye arsında dağıtılacakmı ve bu dağılım (Affinity) nasıl yapılacak bunu belirler.Üç Affinity tipide burada görülmektedir .Yük üyeler arasında eşit dağıtılabileceği gibi oranlı bir şekilde de dağıtılabilir .Bunu için Equal tıkı kaldırılmalı ve üyeler arasında toplam 100 olacak şekilde istenilen değerler verilmelidir.Bir örnekle açıklarsak trafiğn 80% kısmını Node A karşılasın , geri kalan trafikde Node B tarafından alınsın istiyorsak , Node A için Load Weight kısmına 80 , Node B için 20 yazmam yeterli olacaktır. Filtering Mode kısmındaki bir diğer seçenek olan Single Host seçeneği ise kümeye gelen trafiği tek bir küme üyesinin karşılaması prensibiyle çalışır.Burada ayırıcı olan kriter Handling Priority’dir. Handling Priority değeri düşük olan NLB kümesi üyesi bu kural tarafından belirtilen trafiğin tek hedefidir.Bu üye devredışı kalırsa trafik bir diğer üyeye yönlendirilir.
Son ayar olan Disable This Port Range ise aslında TCP/IP filtering’den farksızdır. Kısaca kural tarfından belirlenen portları kapatır.
Kısaca toparlarsak Network Load Balancing sadece TCP ve UDP trafiğini desteklemez GRE trafiği içinde yük dengelemesi yapabilir .Bununla birlikte 2003 NLB servisi VPN bağlantısı için PPTP ile birlikte IPsec protokollerinide destekler .Yanlız kümeye yeni üye eklenmesi durumunda bazı client bağlantıları kesilebilir.(Bu sorun XP SP1 ve 2003 için giderilmiştir.) Son olarak NLB ve Microsoft Server Clustering Services aynı makinaya kurulamazlar.