Quorum
Microsoft Cluster larda Quorum kullanilir, ama bu tam olarak nedir? Kelime manasi olarak Türkçe ‘’Oy’’ veya ‘’Oy hakki’’ demektir. Her cluster quorum kullanmaz, sadece failover/server cluster olarak adlandirdigimiz clusterlarda bulbiliriz. Klasik ve basit cluster yapisi iki server dan olusur, bunlara node denilir. Nodelar arasi iletisim için bir private network vardir (heartbeat) ve cluster disi iletisim için bir public network mevcuttur. Ayrica her node un erisebilecegi bir storage vardir. Storage daki cluster kullanimi için olan bütün diskleri her node görür. Burada yalniz bir shared nothing modeli uyarlanmaktadir; nodelarin hepsi bütün diskleri görse de bir anda bir diske sadece bir node ulasabilir. Mesela highly available bir yaziliminizi çalistiriyorsunuz. Bu yazilimin kullandigi disk cluster in shared disklerinden biri olur ve o an o yazilim hangi node da çalisiyorsa o node da o diskin sahibidir. Yazilim da çalistigi node da IP sini bind eder ve pulic network üzerinden hizmet verir. Private network üzerinden de node lar aralarinda statü bilgilerini iletirler. Yaziliminiz, onun dedike kullandigi disk ve IP mesela Resource lardir. Bunlari Grup olarak toparlariz ve bu Grublarda node lar arasi hareket etirebiliriz. Yazilimimiz mesela bir node da sorun olustugu için çalisamiyorsa cluster o yazilimi baska bir node da baslatir. Simdi bir split brain senaryosu olustugunu varsayalim, yani nodelar arasinda hiçbir iletisim yok. Private ve Public baglantilar üzerinden nodelar aralarinda görüsemiyorlar. Simdi durum çok kritik, çünkü her node un bakis açisindan temel problem resource lar (mesela yazilimimiz) ne durumda ve diger node (lara) güvenebilir miyim? Mesela Public üzerinden default gateway e ulasabiliyor muyuz diye bakabiliriz. Ulasabiliyorsak networksel açidan hizmet verebilecegimizi var sayabiliriz. Diskimizi yalniz kisa bir an kaybedebiliriz, belki hatta daha yazilimizi bile etkilenebilir (Bu Windows Server 2008 öncesi için geçerli): Eger yazilimimiz baska bir node da çalisiyorsa biz bu durumda bir scsi bus reset göndeririz ve baska bir node diske sahiplenecek mi diye bekleriz. Sahiplenen olmaz ise diski biz aliriz, elbette network sorunumuz olmadigini biliyorsak. Ve yazilimi ayaga kaldiririz. Eger ama baska bir node diske sahiplenirse onu ele geçirmeyi denemeyiz ve baska bir node un resource u sahiplendigini varsayariz. Yani biz o an yazilimi çalistiriyorsak, baska bir node diski elimizin altindan çekebilecek mi diye bir kontrol yapar ve bizde diski geri aliriz. Bütün bunlar sart ki bir split brain senaryoda yazilimimizin çalistigini mümkün oldugunca garantileyebilmek için. Windows Server 2008 den itibaren scsi bus resetleri kullanilmiyor. Scsi 3 serial persisten reservation mantigi uyarlaniliyor. Çünkü adi üstünde bu reset den sadece o disk degil ayni bus üzerindeki bütün diskler etkilenebiliyor ve konfigürasyona bagli olarak her disk için her node dan bir bus reset gönderiliyor olabilir. Cluster o zaman epey bir zamandan sonra kendisini toparlayabiliyor yada resourcelari manüel online a çekmeniz gerekebiliyor. Simdi, Quorum da Cluster in kendisi için kullandigi disk. Quorum u tutan node cluster grubunu da ayaga kaldirir. Bir node hiç Quorum a ulasamaz, diski göremez ise cluster servisi durdurulur ve konfigürasyona göre node reboot edilebilir. Quorumun kendisi de yine ayni her türlü problem durumu mantigi çerçevesinde cluster konfigürasyonu tutar. Yani kritik bir durumdan sonra bir node Quorum a sahiplenirse son konfigürasyonda yapilmis olan degisiklikleri de böylece senkrinize edebilir. Bütün bunlar ama Quorum u kullanan cluster lar için geçerlidir. Mesela tek node lu cluster da yapabilirsiniz. Neden? Resource kontrolü için mesela: yaziliminiz ile ilgili herhangi sorunlar olusursa cluster yazilimi restart edebilir. Default konfigürasyonda da bir node bir resource u restart etmeye çalisir ve son hamle olarak baska bir node a verir. Quorum diski ama single point of failure dir. Yani quorum diski kaybedersek bütün cluster i kaybederiz ve Quorumsuz çalistirabilmek için müdahale etmemiz gerekir. Tek node lu cluster da lokal quorum olusturulur.
Ayri bir mantik da Majority Node Set (MNS) dir. Eger örnegin bir geo clusteriniz var ise, yani node lar arasindaki mesafe mesela sigorta sirketinizin poliçesi veya dogal felaket geregi, birkaç yüz metre veya onlarca kilometre olabilir. Bu sefer ortak storage ve özellikle Quorum u belki sadece pahali storage çözümleri ile uyarlayabiliyorsunuzdur veya tamamen imkânsizdir. 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 çogunluk cluster a sahiplenir. Mesela 5 node lu cluster da split brain senaryosu yasanirsa her node toplam kaç node ila haberlesebildigine bakar. Bir node iki node ile haberlesebiliyorsa, 3 node 5 nodedan çogunlugu olusturur ve cluster a shiplenir. Diger iki node azinlikta olduklarini anlar ve diger 3 node un haberlesebildigini varsayarlar. Çift rakam node sayisi pek mantikli degildir. Mesela 2 node da split brain olursa çogunlugu elde etmek imkânsiz oldugundan cluster i yine kaybederiz. Simdi ama diyelim ki bir Fabrika alanin bir kösesine bir node diger kösesine de ikinci node umuzu koyacagiz ve Quorum diskini uyarlayamiyoruz. Sadece tek rakam olsun diye esit bir sunucu donanimi almak eger bu ekstra performansa ihtiyaciniz da yoksa pahali olabilir. Bu durumda File Share Witness (FSW) kullanabiliriz. Bu MNS in bir türevi ve sadece 2 node unuz var ise yapabileceginiz bir çözüm. MNS de her node un aslinda bir quorum, bir oy hakki var ve çogunluk oylarini toplayan node grubu cluster in sahibi ve ondan sorumlu. FSW de herhangi bir üçüncü sunucu da oy olarak bir paylasima açilmis klasör kullaniyoruz. Split brain de network den share e ulasabilen node çogunlugu olusturmus oluyor. Iki node un share e ulasma sansi çok az, çünkü o zaman muhtemelen zaten birbirleri ile görüsüyor olurlardi. Windows Server 2008 ile yeni bir Quorum modelimiz de var (Node and Disk Majority), bu sefer Quorum diskin kullanimi biraz farkli oluyor: Quorumu node sayisi ile beraber bir oy hakki olarak kullaniyoruz. Yani MNS gibi, ama 2 den fazla nodelu clusterlar için ve FSW yerine ortak bir disk kullaniyoruz. Yani 4 nodelu bir cluster da 3 node a veya 2 node a arti diske ulasabilen grup cluster i aliyor. Diske de artik Quorum demiyoruz , witness disk olarak geçiyor. Windows Server 2008 R2 ile de yepyeni b'r özellik geliyor: Cluster Shared Volume (CSV). Bu bir diskin her node dan ayni anda erisebilinmesini mümkün kiliyor ve shared nothing modelini bitiriyor. File seviyesinde artik node lar kapisabiliyor, disk seviyesinde degil. Simdilik sadece Hyper-V in sanal makineleri için destekleniyor. Yani diger tip resource lar hala shared nothing üzerinden yürüyor.
Server clustering high availability ve disaster recovery çözümleri için mantiklidir. Bunlar ilginizi çekti ise Server/Failover Cluster bazinda çalisan Exchange cluster konfigürasyonlarini da inceleyebilirsiniz. Bularin disinda Microsoft un Network Load Balancing (NLB) ve High Performance Computing (HPC) cluster lari vardir. NLB çok yaygin farkli Tier yapilarinda front end olarak veya Terminal Server lar için kullanilir. HPC de temelinde çok zaman alacak hesaplamalarin süresini azaltmak için bunlari bölerek çok sayida node a dagitir.
Basar Güner