Clustering Türleri III — Network Load Balancing

24 Eyl
2009

Cluster konulu makale serisinin son adımında Network Load Balancing’ten bahsedeceğim.

NLB bir quorum kullanmadığı için node’larda depolama ve ağ gereksinimlerine ihtiyaç duymaz. Cluster içindeki bir node çöktüğünde NLB otomatik olarak yeni gelen istekleri diğer node’lara yönlendirir. Eğer bakım için bir node’u devre dışı bırakırsanız NLB, node devre dışı olmadan önce var olan oturumların tamamlanmasına izin verir. Bu da son kullanıcıların bu durumdan zarar görmesini engeller. NLB aynı zamanda gelen istekleri uygun gördüğü tarafa yönlendirerek güçlü donanıma sahip sunucular ile yetersiz haldeki sunucuların bir arada kullanılabilmesini sağlar, eldeki tüm donanımların etkin kullanımına yardımcı olur.
 

NLB genellikle firewall’lar, proxy, FTP veya web sunucuları için sağlamlık ve ölçeklenebilirlik sağlamada kullanılır. NBL’yle cluster yapılan diğer uygulamalar sanal VPN noktaları, streaming media sunucuları ve terminal servisleridir. Her Windows 2003 sürümünde bulunur ve 32’ye kadar node’tan oluşan clusterlarda uygulanabilir.
 

NLB yapılandırması Network Load Balancing Manager snap-in’i veya wlbs.exe ya da nlb.exe adlı konsol araçlarıyla gerçekleştirilir.
 

Temel olarak, NLB açıldığında, NLB sürücüsü NIC sürücüsü ile IP protokolü arasına yerleşir ve tüm cluster node’larına gelen her paketi alıp inceler. Paket kablodan kümeye geldiğinde her node paketi alır, inceler ve cluster çapında belirtilmiş kurallara göre paketi üst katmanda bulunan IP protokolüne iletir veya paket daha NLB sürücüsündeyken dışarı atılır. Böylece trafik nodlar arasında paylaştırılır. Kısaca tüm node’lar clustera  gelen trafiği alır; ama bazıları cevap verir.
NLB clusterları iki farklı modda çalışabilir. Birincisi, aynı zamanda varsayılan mod olan Unicast Mode’dur. Unicast mode’da clusterı oluşturan node’larca kullanılan bir tek sanal MAC adresi vardır. Bu adres daima 02-BF ile başlar. Tüm cluster üyelerinin bu tek adresi NLB sürücüsü sayesinde kullanması ağ kartı üzerinden görüşebilmelerini engeller. Örneğin; node a node b’ye bir paket gönderirken hedef ve kaynak MAC adreslerini aynı yazar. Bu paketi alan nod b kaynak MAC adresi ile paketin 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 paketi atar. Sonuç olarak unicast mode’ta çalışan NLB kümesi üyeleri NLB çalıştıran ağ kartı üzerinden birbirleriyle görüşemezler. Bu sorunu ortadan kaldırmak için iki yöntem vardır. Birincisi node’lara ikinci bir ağ kartı takmaktır. İkinci ağ kartı NLB clusterıyla aynı ağa veya farklı ağa bağlı olabilir. Node’lar arasında ek bir bağlantı yapılması yeterlidir. İkinci çözüm ise Multicast mode’u kullanmaktır.

Multicast mode’dayken node’lar hem sanal MAC adresini hem de kendi MAC adreslerini kullandığından node üzerinde bir tek ağ kartının bulunmasına rağmen birbirlerine gönderdikleri paketleri işleyebilirler. Multicast mode’da paylaşılan ortak ve sanal MAC adresi daima 03-BF ile başlar.

Sistemdeki sürekliliğin sağlanması için cluster node’larının birbirleriyle sürekli haberleşmesini sağlamak gerekir. NLB algoritması clusterdaki node sayısı, varsa belirlenen port kuralları ve cluster IP’lerini göz önüne alarak hesaplamaları yapar ve gelen trafiğin node’lar tarafından kabul veya red edilmesini sağlar. Bu hesaplama sürecine Yakınsama (Convergence) adı verilir. Yakınsamada Heartbeat (nabız) denilen paketler kullanılır. Bu paketler her node’ta yalnızca NLB çalıştıran ağ kartı tarafından saniyede bir kez atılan 1,5 kb’lık broadcast paketleridir. Bu süre registry’den değiştirilebilir ancak tüm node’larda aynı olmalıdır. Varsayılan ayarlara göre eğer node arka arkaya 5 heartbeat kaçırırsa clusterdaki diğer üyeler o node’un devre dışı olduğuna, kümeden düştüğüne karar verirler. Ardından yeni üye sayısına göre NLB algoritması yeniden hesaplanır, yakınsama başlar ve 3 saniye sürer. Bu değer de registry’den değiştirilebilir ancak her node’ta aynı olmalıdır.

Özet olarak, clustera yeni bir node eklendiğinde bunun tespit edilip gelen yükün clustera tekrar paylaştırılması 3 saniye sürer. Bir node devre dışı kaldığında ise bunun diğer node’larca fark edilmesi ve yakınsamaya başlanması için 5 heartbeat yani 5 sn. daha geçer. Toplamda 8 sn. sonunda yakınsama tamamlanacak ve sistem yeni yapısına göre hareket etmeye başlayacaktır.

NLB’nin yakınsama hesaplamasında bir diğer önemli etken ise affinity yani eğilim ayarıdır. None, Single ve Class C olmak üzere 3 seçeneği olan affinity değerine bakarak NBL; node’lara gelen IP paketlerinin kabul edilip edilmeyeceğine karar verir. Affinity ‘None’ olarak ayarlandığında gelen paketler kaynak port ve kaynak IP’lerine bakılarak işlenir. Web sunucusu çalıştıran clusterlarda  bu ayar kullanılır. Single affinity ise gelen trafiği sadece kaynak IP adresine göre dağıtır ki bu tür terminal sunucular için en uygunudur. Son seçenek olan Class C ayarında ise aynı C sınıfı alt ağındaki IP adresine sahip kaynaklardan gelen tüm paketler aynı node’a yönlendirilir. Bu da genellikle proxy sunucuların yük dengelemesinde yarar sağlamaktadır.

Cluster makalelerinin sonuna geldik. Bu seride uygulama yapmak yerine daha çok teorik adımlardan bahsettim. Sizden gelen istekler doğrultusunda Server Cluster ya da Network Load Balancing konularında uygulamalarda gerçekleştirebilirim. Umarım yararlı bir seri olmuştur. herkese iyi çalışmalar.

Clustering Türleri II – Server Cluster

23 Eyl
2009

Bir önceki makalemde cluster nedir ve cluster türleri nelerdir bunlara değinmiştim. Bu makalemde ise cluster türlerinden Server Cluster’ı anlatacağım. Server Cluster’da önce cluster içinde node yani birim olarak rol oynayacak olan 2 ila 8 arasında sunucu yapılandırılır. Ardından cluster yapılacak uygulamanın ihtiyaç duyduğu kaynaklar yapılandırılır. Bu kaynaklar ağ isimleri, IP adresleri, uygulamalar, servisler veya disk sürücüleri olabilir. Sonuç olarak cluster çalışmaya başlar ve gelecek istekleri işlemeye başlar.

Çoğu cluster yapılmış uygulama ve onlara bağlı kaynaklar tek bir zamanda sadece bir cluster node’una işlenmek üzere atanır. Eğer Server Cluster ilk node’un bakım, çökme gibi herhangi bir nedenden ötürü devre dışı olduğunu belirlerse yedekteki diğer node’ta uygulama çalıştırılır ve istek hemen bu yedekteki node’a aktarılarak hatanın önüne geçilir.

Cluster yapılan servislerin çoğu genellikle tek bir zamanda sadece bir node’ta çalıştırılmasına rağmen aslında bir cluster aynı anda birçok servisi donanımdan daha çok yararlanmak için çalıştırabilir. Microsoft SQL Server gibi bazı uygulamalar birçok cluster node’unda eş zamanlı olarak çalışabilmektedir.

Cluster’daki node’lar cluster yapılmış uygulamanın kime ait olduğunu izlemek için bir quorum kullanır. Quorum cluster işlemine tabi tutulmuş bir uygulama için birincil node tarafından yönetilmesi zorunlu olan bir depolama aygıtıdır ve tek bir zamanda sadece bir node onu yönetebilir. Fail-over durumunda ise yedekteki node quorum’un yönetimini devralır. Tüm cluster node’ları tek bir depolama aygıtına bağlandığında quorum bu aygıt üzerinde yaratılır. Bu tür clusterlara Windows 2003’te single quorum device server cluster yani tek quorum’lu server cluster denmektedir.

Node’ların tek bir depolama aygıtına bağlanması verinin yönetiminin yedek node’a aktarılmasındaki zorluğun ortadan kalkmasını sağlar ancak bu yöntemin de zayıflıkları vardır. Eğer depolama aygıtı bozulur veya çökerse tüm cluster çöker. Aynı şekilde storage area network (SAN) yani depolama alanı ağı çökerse tüm cluster çöker. Depolama aygıtı veya SAN; her ikisinin de asla çökmeyeceğini garanti etmeye kalksak dahi çökecek bir şey daha vardır o da sistemin bulunduğu ortamda meydana gelebilecek sel, yangın, deprem, elektrik kesintisi gibi felaketlerdir.

İşte bunun da önüne geçmek için Majority Node Set (MNS) server cluster adlı yapıya başvurulur.Quorum bu defa her bir node’da doğrudan yerel olarak bağlanır ve her bir node’taki quorum’da ağdaki replikasyon sayesinde aynı veriler depolanır. Şekilden de anlaşılabileceği üzere node’lar sadece tek bir ağa ihtiyaç duyduğu için ağ LAN, WAN veya uzak şehirlerdeki cluster node’larını cluster’a bağlayan VPN yapısına sahip olabilir, bu da clusterın coğrafik engelleri aşmasını sağlar. Bununla birlikte etkin bir fail-over başarımı için MNS yapısında clusterdaki node’ların en az yarısından çoğunun sürekli çalışır halde olma zorunluluğu vardır. Oysa single quorum device server cluster’da bir tane node’un çalışır olması yetmektedir.

Server Cluster makalesinin de sonuna geldik. Cluster türlerinden Network Load Balancing ile cluster makale serimi tamamlayacağım. İyi çalışmalar.

Clustering ve Türleri

17 Eyl
2009

Clustering yani kümeleme Türkçe çevirisinden de rahatça anlaşılacağı üzere bir araya getirilmiş, kümelenmiş belli sayıdaki bilgisayarın ortak uygulamaları birlikte çalıştırması, uygulamaya ya da istemciye kendilerini tek bir bilgisayarmış gibi göstermesidir. Ben cluster konusunu üç adımda anlatmayı planlıyorum ve ilk makalemde cluster’ın ne olduğunu anlatacağım.

Cluster işleminin üç temel amacı vardır.
 
Bunların başında süreklilik (continuity) gelir. Süreklilikten kast edilen hata toleransını (fault tolerance) bir başka deyişle sistemin her daim ayakta ve çalışır durumda kalmasını sağlamaktır. Dünya üzerindeki büyük internet sitelerini bir düşünün. Amazon, ebay, Google, Paypal gibi sitelerin down olması yani erişilemez hale gelmesi, çökmesi bu şirketlerin prestij kaybına uğramasının yanı sıra, çok büyük müşteri ve hesap sorunları ortaya çıkmasına sebep olacaktır.
 
Bir diğer amaç ise yük dengeleme yani load balancing’tir. Buradaki amaç eldeki bilgisayarlardan olabildiğince yararlanabilmek, işlerini daha hızlı görüp yanıtı daha hızlı gönderebilmelerini sağlamak için işin paylaşılması, gelen yüklerin cluster içindeki bilgisayarlara eşit oranda dağıtılmasıdır. Cluster içindeki 3 bilgisayardan 2’si başka işlerle meşgul olduğunda sistem yeni gelen yükü boşta olan bilgisayara yönlendirir.
Yüksek performansı amaçlayan cluster’lar ise adı üstünde çok yüksek hesaplama gücü gerektiren programlar, uygulamalar için hazırlanırlar.Örneğin; IBM’in Kasparov’a karşı hazırladığı Big Blue adlı süperbilgisayarı veya sağlık alanındaki genetik araştırmalarda milyarlarca olasılığı hesaplayan bilgisayar clusterları.
 
Birçok proje kendi misyonuna göre bu amaçların belli bir kısmından faydalanır. Bazı clusterlar önceliklerinde sürekliliği en başa alırken bazıları yüksek performansı gözetmek durumundadır. Bu yüzden aşağıdaki cluster  türleri oluşmuştur:
 

  • High-availability clusters (yüksek-süreklilikli kümeler)
  • Load-balancing clusters (yük dengeleyici kümeler)
  • High-performance computing clusters (yüksek performanslı kümeler)
  • Grid clusters (şebekeli kümeler)

Yukarıda anlatılanlara ek olarak bir de şebekeli clusterlar vardır. Şebekeli clusterlar geleneksel clusterlarla aynı mantıkta çalışır ancak bariz farklılıkları vardır. Geleneksel clusterlar aynı ortamda bulundurulan bilgisayarları kullanırken şebekeli clusterlar coğrafik olarak birbirinden uzak ve birbirlerine tam olarak güvenmeyen, trust etmeyen bilgisayar gruplarından oluşturulurlar. Bu konudaki en büyük örnek SETI projesidir. Yeryüzünün her yanına dağılmış 3 milyon civarında ev bilgisayarı Arecibo gözlemevindeki radyoteleskoptan gelen verileri analiz ederek dünya dışı canlılara ilişkin kanıtların bulunması araştırmasına yardımcı olmaktadır.
 
İşletim sistemleri dünyası şu an hepimizin bildiği üzere Microsoft ile UNIX türevlerinin rekabetine sahne olmaya devam ediyor. Unix türevlerinden Linux’ın sunucu sistemlerinde Microsoft’a kafa tuttuğunu hatta önde olduğunu bile söyleyebiliriz. Birkaç yabancı devletin dahi maliyetinin ucuzluğundan ötürü geçtiğimiz yıllarda bilgisayar sistemlerini Linux’a geçirdiğine dair haberler vardır. Sonuçta biz olaylara Microsoft tarafından baktığımızdan Windows Server 2003’le birlikte gelen cluster sistemini inceleyeceğiz.  Araştırdığım kadarıyla dış şirketler tarafından Windows için geliştirilen 3. parti yazılımsal cluster çözümleri de bulunmaktadır.
 
MICROSOFT CLUSTER SERVER
 
İlk kez Windows NT’yle birlikte 1997’de duyurulan Microsoft’un kümeleme çözümü Microsoft Cluster Server “MSCS” bugün Windows Server 2003’te 1.2 versiyonuna ulaşmıştır.

 
Microsoft Cluster Servisi; Server Cluster ve Network Load Balancing (NLB) adı verilen iki teknolojiyi içerir.
Bu teknolojilerden Server Cluster çok kritik uygulamalar için hata durumlarında fail-over yaparak sistemin yüksek sürekliliğini sağlamayı öncelikli olarak hedefler. Fail-over durumunda çöken bilgisayardaki istemciye ait işlem cluster içinde sağlam durumdaki diğer bilgisayarlardan birine aktarılarak işlemin tamamlanması, gerekli yanıtın gönderilmesi sağlanır. Veritabanı, ERP/CRM, OLTP, dosya, yazıcı ve e-posta servisleri genellikle Server Cluster kullanılarak yapılandırılır.
 
NLB ise gelecek client/istemci isteklerini beklemekte olan web sunucusu, proxy sunucusu gibi servisler için cluster içindeki bilgisayarlara (node’lara) dağıtır.
Bu iki cluster işlemi farklı yöntemler kullandığından aynı sunucuda aynı anda kullanılamaz, birinin seçilmesi gerekir.
 
Özelliklerini bir tablo şeklinde özetleyelim:
 Genel olarak cluster yapısından bahsettiğim bu makalenin sonuna geldik. İkinci bölümde Server Cluster yapısını anlatacağım.