Quorum Nedir ?

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.

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.

Referans: Başar Güner

2 thoughts on “Quorum Nedir ?

  1. Pingback: 2010 in review « Hakan Yuksel Blog

Leave a comment