Ana içeriğe atla

Cluster ve clustering nedir? Cluster oluşturmanın faydaları nelerdir? (Bölüm I)

Cluster, basit anlamda benzer bir amaç için belirli bir konfigürasyon yapılarak aynı görevi birlikte ya da yedekli çalışmasını sağlayan servistir. Cluster farklı amaçlarla oluşturulabilir fakat son kullanıcı tarafından her zaman tek bir bilgisayar gibi gözükecektir. Bir cluster oluşturmak için en azından iki adet sunucuya ihtiyaç vardır ve bir cluster içindeki her bir sunucu “node” olarak adlandırılır. İhtiyaç olan hizmete göre çeşitli sayıda nodelar bir araya gelerek clusterları oluşturmaktadır. Bir cluster oluşturmak için gerekli sebepler daha fazla performans ihtiyacı, yüksek erişilebilirlik (high availability) ya da her ikisi birlikte olabilir.
Şimdi cluster çeşitlerini çok fazla ayrıntıya girmeden biraz daha yakından inceleyelim.
Yüksek erişilebilirlik (High-availability) clusterları
Bu tip cluster yapısında öncelik erişilebilirliği arttırmadır. Bunu tek bir sunucunun görevini herhangi bir donanım yada yazılım problemi oluştuğunda diğer bir sunucunun otomatik olarak devralması olarak özetleyebiliriz. Böylece özellikle kritik önem içeren hizmetler (örn: veritabanı yada web servisleri) kesintisiz yada min. kesinti süresiyle hizmet vermeye devam edecektir. Cluster içindeki arızalı sunucuya müdahale edilip tekrar cluster ortamına dahil edilebilmesi sırasında hizmet kesintisiz olarak devam edecektir. Bu özelliği failover olarak adlandırıyoruz.

Yine görüyoruz ki cluster ortamında ne kadar çok node olur ise sağlanılan hizmette ya da serviste kesinti olabilme ihtimalinin de o denli düşeceğidir. Bu cluster yapısında en yaygın olan konfigürasyon iki node ile oluşturulan clusterdır. Aktif-pasif şekilde çalışır. Bu demektir ki bir sunucu sürekli hizmet sağlarken diğeri pasif bir biçimde birinci sunucuda oluşabilecek olası bir soruna karşı arka planda beklemektedir.
Bir sunucunun sürekli bir şekilde pasif halde beklemesi pahalı bir çözüm gibi görülebilir fakat olası bir hizmet kaybında ne kadar sürede sunucu tekrar devreye alınabilir ve bu süre kaybı ilgili kuruluşta yaratacağı maddi ve müşteri gözünde itibar kayıpları ne olacaktır, bunların değerlendirmesi dikkatli bir biçimde yapılmalıdır.
Yük dağıtımlı clusterlar (Load-Balancing clusters)
Bu tarz clusterlarda ise yine birden fazla sunucu belirli bir servis ya da hizmeti oluşan işlem yükünü ortak bir biçimde paylaşarak kullanırlar. Örneğin özellikle microsoft server işletim sistemlerinin desteklediği webserverlar üzerinde kullanılan NLB (network load balancing) örnek olarak gösterilebilir. Burada aynı web hizmetini veren birden fazla sunucu NLB ile sanal bir ip adresi oluşturularak ortak bir havuzda toplanır ve bu ortak ip adresine gelen tüm web istekleri NLB tarafından havuzdaki sunuculara yönlendirilir.
Sıradaki isteğin havuzda bulunan hangi sunucuya ileteceğine NLB karar verir. Web sunucumuz şu anda tüm isteklere karşılık verebilecek kadar güçlüde olsa sonuçta bir tek fiziksel bileşeni temsil ettiğinden oluşabilecek herhangi bir problemde web hizmeti dağılımı hem de failover yapabilmeniz hizmet kalitenizi büyük oranda arttıracaktır. Burada yine sunuculardan birinin devre dışı kalmasını, son kullanıcılarınız fark etmeyecektir.
Diğer cluster türleri
Yukarıda açıklamış olduğumuz cluster yapılarına benzer fakat farklı amaçlar için oluşturulan cluster yapıları da dünyada mevcuttur. Örneğin Formula 1 ya da uçak firmalarının özel simülasyon programlarının yüksek ihtiyaçlarını karşılamak için oluşturduğu cluster yapıları da bulunmaktadır. Ya da daha insani amaçlar için (kanser, aids vb tedavileri) ortak bir merkezde kurulan ve sizin bilgisayarınıza bir client yazılım indirerek çok büyük bir araştırmanın üzerinde işlem yapılmasına ihtiyaç duyulan küçük parçalarını bilgisayarınıza çekerek gerekli hesaplamalar tamamlandıktan sonra tekrar ana merkeze gönderen clusterları da bu yelpazeye ekleyebiliriz. Buradaki amaç bu şekilde dünyanın her yanında ev bilgisayarlarından bir cluster oluşturarak işlem gücü çok yüksek bir süper bilgisayar oluşturmaktır.
Clustering farklı mimariler ve işletim sistemlerinde mümkün olan bir hizmettir fakat bu makalede Microsoft Server ailesi üzerinde clustering yapısına değineceğiz.
Windows server 2008 clustering ile gelen yenilikler
Windows server 2008 ile birlikte cluster yapısında ve kurulumunda önceki işletim sistemlerine göre birçok yenilik ve farklılık gözümüze çarpmakta. Bunlardan ilki artık cluster hizmetinin windows server 2003’te olduğu gibi hazır kurulu şekilde gelmediği. Sunucumuz üzerinde cluster kurmak istiyorsak bunu add feature sihirbazından eklememiz gerektiğidir. Ayrıca cluster hizmetinin yeni kurulum dizini windows klasörü altında cluster dizini olarak değiştirilmiştir.
Diğer yeni bir özellik ise gelişmiş cluster kurulum sihirbazı olarak adlandırılabilir. Bu sihirbaz sayesinde kurulum öncesi işlemci, ağ yapısı, disk konfigürasyonları vb donanım uyumluluğunu test edebilir, clusterınızı oluştururken adım adım nodelar ekleyebilir ve önceden konfigürasyonunu tamamladığınız diskleri kullanmak istediğiniz hizmet yada servis için ekleyebilirsiniz. Aynı zamanda yine bu sihirbaz ile gerek kurulum öncesi gerekse kurulum tamamlandıktan sonra clusterınız hakkında yapılan testlerin sonucunu görebilir microsoftun önerdiği çözümleri ya da tavsiyeleri görebilirsiniz.
Burada alacağınız hata mesajlarının tümü cluster kurulumuna engel olmayacaktır fakat gerçekleştirdiğiniz çözüm Microsoft tarafından önerilmeyebilir. Bir örnek vermek gerekirse eğer cluster için hazırlamış olduğunuz nodelarda sadece tek ethernet kartı mevcutsa bu çift ethernet kartı ile kurulması yönünde uyarı gelecek fakat kuruluma devam edilebilecektir.
Ayrıca güvenliğin arttırılması adına windows server 2008 cluster nodeları server 2003 ve öncesi işletim sistemlerinden oluşan bir cluster içerisine dahil olamamaktadır. 2003 server işletim sistemlerinden oluşan clusterlar server 2008 cluster management içerisindeki migration tool ile server 2008’e güncellenebilmektedir.
Yine ek bir güvenlik özelliği olarak cluster servisi artık domain admin hesabı değil local admin hesabı üzerinden çalışmaktadır. Authentication işlemi ise active directory üzerinde oluşturulan sanal cluster bilgisayar hesapları ile NTLM yerine Kerberos üzerinden denetlenmektedir. Burada özellikle varolan domain controllerınız server 2003 ise çeşitli problemlere karşılaşabilirsiniz. Yazının ikinci kısmı olan kurulum ve konfigürasyon makalesinde özellikle R2 versiyonuda dahil tecrübe edindiğimiz sorunları ve çözümleri sizlerle paylaşacağız.
Server 2003’ten bu yana eklenen yeni bir özellik ise 2003’te bir cluster maksimum 8 node destekleyebilirken server 2008 x64 platformunda bunun 16node a çıkarılmış olmasıdır. Bu özellik, tahmin edebileceğiniz üzere büyük ölçekli kurumsal çözümler için hayati bir önem taşımaktadır.
Yine server 2008 ile artık Windows clusterlar için IPv6 desteği eklenmiştir.
Cluster içerisinde nodeların birbirleriyle habeleşmesini sağlayan heartbeat interface’in haberleşme yapısı broadcastten unicast’e çevrilmiştir. Bu da nodeların farklı ip bloklarında olabilmesini sağlamaktadır. Ayrıca DHCP üzerinden IP adresi alabilme opsiyonu eklenmiştir. Fakat şahsi görüşüm yinede hiçbir sunucunuzu çok özel bir konfigürasyon nedeniniz olmadıktan sonra static ip olucak şekilde configure etmenizdir. Ayrıca heartbeat interface için alive check değeri değiştirilebilir hale gelmiştir bu şekilde bu değer arttırılarak daha yavaş bağlantılar üzerinde bulunan sitelardaki cluster yapılarında da nodeların fail duruma düşmemesi sağlanabilir.
Server 2008 ile gelen bir sürpriz bir değişiklik de artık cluster üzerinde fiziksel disk kullanamamanız. En azından bir adet SAN (Fiber,SAS,iSCSI) diski eklemeniz zorunludur. Bu disk ise clusterın bilgilerinin tutulduğu eski adı quorum yeni adı ile witness disk olarak adlandırılmaktadır. Tavsiye edilen boyut 512Mb-1Gb dır. Ayrıca bir sql server cluster ortamı yaratmak istiyorsak bunun için yine ilgili boyuttaki data disklerininse sql kurulum öncesinde ayarlanması ve server 2008 içerisindeki iscsi initiator kısayolundan server üzerine eklenmesi gerekmektedir. Ayrıca depolama alanında server 2008le birlikte gelen GPT partition tablolama desteği ile 2 terabyte a kadar partition desteği gelmekte.
Referanslar
  • Microsoft clustering white paper
Bora ENGİN

Yorumlar

  1. Abicim.ellerine saglik cok guzel bir anlatim olmus.dusunuyorum ki sen bu konuda ustasin.Ben seninle nasil irtibata gece bilerim.Her zaman senin gibi problemlerimi sora bileceyim insana ihtiyacim vardir.Eger mumkunse bana mail at.benim mailim: forgetpasword[at]mail[dot]ru

    YanıtlaSil
  2. Çok güzel bir çalışma. Baştan sona okudum. Teşekkür ederim.

    YanıtlaSil
  3. Çok teşekkürler. Başarılı bir çalışma elinize sağlık.

    YanıtlaSil

Yorum Gönder

Bu blogdaki popüler yayınlar

UML ve Modelleme – Bölüm 4 (Class (Sınıf) Diyagramları)

Bir önceki makalemizde UML modellemede kullanılan ilk diyagram olan Use Case diyagramını incelemiştik. Bu makalemizde nesne tabanlı programlamada kullanılan sınıflar ve sınıfların arasındaki ilişkileri modelleyebileceğimiz diyagramlar olan Class(Sınıf) diyagramlarını inceleyeceğiz. UML’de sınıflar, nesne tabanlı programlama mantığı ile tasarlanmıştır. Sınıf diyagramının amacı bir model içerisinde sınıfların tasvir edilmesidir. Nesne tabanlı uygulamada, sınıfların kendi özellikleri (üye değişkenler), işlevleri (üye fonksiyonlar) ve diğer sınıflarla ilişkileri bulunmaktadır. UML’de sınıf diyagramlarının genel gösterimi aşağıdaki gibidir. Şekil 1. Class Diyagram Şekil1’de görüldüğü üzere bir dikdörtgeni 3 parçaya bölüyoruz. En üst bölüm sınıf adını, orta kısım özellik listesini (üye değişkenler) ve en son kısım, işlev listesini (üye fonksiyonlar) göstermektedir. Çoğu diyagramlarda alt iki bölüm çıkarılır. Genelde tüm özellik ve işlevler gösterilmemektedir. Ama

Yazılım Maliyet Tahmineleme Tecrübeleri

Yazılım mühendisliğinde maliyet hesabı her zaman problem olmuştur. "Bu iş kaç Adam/Gün tutar?" sorusuyla sıkça karşılaşıyoruz. Adam/gün veya Adam/ay ölçütleri bir kaynağın/kişinin belirtilen zaman dilimindeki iş gücü anlamına gelir. Tabi bu noktada yine kafa karışıklıkları başlar. 6 A/G'lik bir işi hızlandıralım diye 2 kişi ile yapmaya çalışsak ve kaynak/kod, modül, altyapı, insan vb. her bir şeyi bir kenara bıraksak, matematiksel basit formülle 6/2=3 A/G'de biter? Gerçek hayat böyle değil, öncelikle bunu anlamamız lazım. Hep şu örnek verilir; "Aynı bebeği 2 kadın birlikte daha kısa sürede doğurur mu?" Eğer bunun cevabı "Evet" ise (veya bir gün böyle bir durum ortaya çıkarsa), yazımı değiştirmem gerekecek:) Mevzu gerçekten derin...Maliyet hesabı; bulunduğunuz firmanın yazılım süreçlerini hangi methodlarla uyguladığına, ilgili işin o dönemdeki aciliyetine, (şirket yönetiminin baskısına:)) vb. bir çok duruma bağlı olabilir. Örneğin; bizim firmada e

UML ve Modelleme – Bölüm 3 (Use Case Diyagramlar)

Önceki iki makalemizde ( 1 , 2 ) UML’e genel olarak değinip ve modellemede kullanacağımız dokuz diyagram hakkında bilgiler vermiştik. Bu makalemizde Use Case diyagramından detaylı bahsedeceğiz. Öncelikle, genel Use case diyagramının tanımını hatırlayalım. “Bir kullanıcı ve bir sistem arasındaki etkileşimi anlatan senaryo topluluğudur.” Ivar Jacobson Senaryo tanımı için der ki: “Aktörle sistem arasında gerçekleştirilen, sonucunda aktöre farkedilir getirisi/ faydası oluşan etkileşimli diyalogdur. ” UML Use Case Diyagramları  sistemin işlevselliğini açıklamak amacıyla kullanılır. Sistemin birbirinden ayrı özelliklerinin detaylarını göstermekten ziyade, Use Case Diyagramlar, tüm mevcut işlevselliği göstermek için kullanılabilir. Buradaki en önemli noktalardan biri,   Use Case Diyagramlar temelde sequence diyagram ve akış diyagramlarından farklıdır. Use Case diyagramlar dört ana elemandan oluşmaktadır. Aktörler , Sistem (Proje kapsamını belirtir) , Use Caseler ve bunlar ara