Oca 17

Microsoft Clusterlarda Quorum kullanılır, bu tam olarak nedir? 

Klasik ve basit cluster yapısı iki server dan oluşur, bunlara node denilir. Nodelar arası iletişim için bir private network vardır (heartbeat) ve cluster dışı iletişim için bir public network mevcuttur. Ayrıca her node un erişebileceği bir storage vardır. Storage üzerindeki cluster kullanımı için olan bütün diskleri her node görür. Burada shared nothing modeli uyarlanmaktadır; nodeların hepsi bütün diskleri görse de bir anda bir diske sadece bir node ulaşabilir. Mesela highly available bir yazılımınızı çalıştırıyorsunuz. Bu yazılımın kullandığı disk cluster ın shared disklerinden biri olur ve o an o yazılım hangi node da çalışıyorsa o node da o diskin sahibidir. Yazılımda çalıştığı node da IP sini bind eder ve pulic network üzerinden hizmet verir. Private network üzerinden de node lar aralarında statü bilgilerini iletirler.

Yazılımınız, onun dedike kullandığı disk ve IP mesela Resource lardır. Bunları grup olarak toparlarız ve bu grublarda nodelar arası hareket etirebiliriz. Yazılımımız mesela bir node da sorun oluştuğu için çalışamıyorsa cluster o yazılımı başka bir node da başlatır.

Bir split brain senaryosu oluştuğunu varsayalım, yani nodelar arasında hiçbir iletişim yok. Private ve Public bağlantılar üzerinden nodelar aralarında görüşemiyorlar.  Durum çok kritik, çünkü her node un bakış açısından temel problem resource lar (mesela yazılımımız) ne durumda ve diğer node (lara) güvenebilir miyim?  Diskimizi yalnız kısa bir an kaybedebiliriz, belki hatta daha yazılımızı bile etkilenebilir (Bu Windows Server 2008 öncesi için geçerli):  Eğer yazılımımız başka bir node da çalışıyorsa biz bu durumda bir scsi bus reset göndeririz ve başka bir node diske sahiplenecek mi diye bekleriz. Sahiplenen olmaz ise diski biz alırız, elbette network sorunumuz olmadığını biliyorsak. Ve yazılımı ayağa kaldırırız. Başka bir node diske sahiplenirse onu ele geçirmeyi denemeyiz ve başka bir node un resource u sahiplendiğini varsayarız. Yani biz o an yazılımı çalıştırıyorsak, başka bir node diski elimizin altından çekebilecek mi diye bir kontrol yapar ve bizde diski geri alırız. Bütün bunlar şart ki bir split brain senaryoda yazılımımızın çalıştığını mümkün olduğunca garantileyebilmek için.

image

Windows Server 2008 den itibaren scsi bus resetleri kullanılmıyor. Scsi 3 serial persisten reservation mantığı uyarlanılıyor. Çünkü adı üstünde bus reset den sadece o disk değil aynı bus üzerindeki bütün diskler etkilenebiliyor ve konfigürasyona bağlı olarak her disk için her node dan bir bus reset gönderiliyor olabilir. Cluster o zaman epey bir zamandan sonra kendisini toparlayabiliyor yada resourceları manuel online çekmeniz gerekebiliyor. 

Quorum da Cluster ın kendisi için kullandığı disk.  Quorumu tutan node cluster grubunu da ayağa kaldırır. Bir node hiç Quorum a ulaşamaz, diski göremez ise cluster servisi durdurulur ve konfigürasyona göre node reboot edilebilir.  Quorumun kendisi de yine aynı her türlü problem durumu mantığı çerçevesinde cluster konfigürasyonu tutar. Yani kritik bir durumdan sonra bir node Quorum a sahiplenirse son konfigürasyonda yapılmış olan değişiklikleri de böylece senkronize edebilir. Bütün bunlar ama Quorum u kullanan cluster lar için geçerlidir.

Quorum diski ama single point of failure dır. Yani quorum diski kaybedersek bütün clusterı kaybederiz ve Quorumsuz çalıştırabilmek için müdahale etmemiz gerekir. Tek node lu cluster da lokal quorum oluşturulur. (W2k3)

Ayrı bir mantık da Majority Node Set (MNS) dir. Eğer örneğin bir geo clusterınız var ise, yani node lar arasındaki mesafe mesela sigorta şirketinizin poliçesi veya doğal felaket gereği, birkaç yüz metre veya onlarca kilometre olabilir. Bu sefer ortak storage ve özellikle Quorum u belki sadece pahalı storage çözümleri ile uyarlayabiliyorsunuzdur veya tamamen imkânsızdır.  Bu durumda MNS ideal bir çözüm olabilir. MNS demokratik bir sistemdir. Quorum da sadece bir oy var ise ve buna sahiplenen cluster a sahiplenebiliyorsa, MNS de çoğunluk cluster a sahiplenir. Mesela 5 node lu cluster da split brain senaryosu yaşanırsa her node toplam kaç node ila haberleşebildiğine bakar. Bir node iki node ile haberleşebiliyorsa, 3 node 5 nodedan çoğunluğu oluşturur ve cluster a shiplenir. Diğer iki node azınlıkta olduklarını anlar ve diğer 3 node un haberleşebildiğini varsayarlar. Çift rakam node sayısı pek mantıklı değildir. Mesela 2 node da split brain olursa çoğunluğu elde etmek imkânsız olduğundan cluster ı yine kaybederiz.  Diyelim ki bir Fabrika alanın bir köşesine bir node diğer köşesine de ikinci node umuzu koyacağız ve Quorum diskini uyarlayamıyoruz. Sadece tek rakam olsun diye eşit bir sunucu donanımı almak eğer bu ekstra performansa ihtiyacınız da yoksa pahalı olabilir. Bu durumda File Share Witness (FSW) kullanabiliriz. Bu MNS in bir türevi ve sadece 2 node unuz var ise yapabileceğiniz bir çözüm.  MNS de her node un aslında bir quorum, bir oy hakkı var ve çoğunluk oylarını toplayan node grubu cluster ın sahibi ve ondan sorumlu. FSW de herhangi bir üçüncü sunucu da oy olarak bir paylaşıma açılmış klasör kullanıyoruz. Split brain de network den share e ulaşabilen node çoğunluğu oluşturmuş oluyor. İki node un share e ulaşma şansı çok az, çünkü o zaman muhtemelen zaten birbirleri ile görüşüyor olurlardı.  Windows Server 2008 ile yeni bir Quorum modelimiz de var (Node and Disk Majority), bu sefer Quorum diskin kullanımı biraz farklı oluyor: Quorumu node sayısı ile beraber bir oy hakkı olarak kullanıyoruz. Yani MNS gibi, ama 2 den fazla nodelu clusterlar için ve FSW yerine ortak bir disk kullanıyoruz. Yani 4 nodelu bir cluster da 3 node a veya 2 node a artı diske ulaşabilen grup cluster ı alıyor. Diske de artık Quorum demiyoruz , witness disk olarak geçiyor.

Windows Server 2008 R2 ile de yepyeni özellik geliyor: Cluster Shared Volume (CSV). Bu bir diskin her node dan aynı anda erişebilinmesini mümkün kılıyor ve shared nothing modelini bitiriyor. File seviyesinde artık node lar kapışabiliyor, disk seviyesinde değil. Şimdilik sadece Hyper-V in sanal makineleri için destekleniyor. Yani diğer tip resource lar hala shared nothing üzerinden yürüyor.

Kaynak : Başar Güner

Yazar ceyhun çamlı \\ tags: , , , , ,

Eyl 24

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.

Yazar ceyhun çamlı \\ tags: , , , , ,

Eyl 23

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.

Yazar ceyhun çamlı \\ tags: , , , ,

Eyl 17

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.

Yazar ceyhun çamlı \\ tags: , , ,