0

Bu yazımızda SQL Server 2008 üzerinde Yüksek Erişilebilirlik (High Availability) çözümlerini tek bakışta inceleyip, alternatif çözümlerin gerek performans gerekse işlevsellik olarak karşılaştırmasını yapacağız.Öncelikle yüksek erişilebilirliğin neden önemli olduğunu tartışalım.

Günümüz dünyasında sayısı milyonlara varan, üyelere anlık hizmetler sunan birçok kritik uygulamalar geliştiriyor ve kullanıyoruz. Birçok uygulama için birkaç dakikalığına bile erişilemez olmak milyonlarca liralık zararla ölçülebilir. Bu nedenle hassasiyeti yüksek sistemlerin yüksek erişilebilir olması ve oluşabilecek donanım veya yazılım sorunlarına ve hatta doğal afetlere karşı otomatik veya manuel (otomatik tabi ki tercih edilendir) devreye girme operasyonu ile kullanıcılara hiçbir şey hissettirmeden uygulamaya devam edilmesi gerekmektedir.

Bu doğrultuda SQL Server 2008 ile High Availability çözümlerini incelememiz doğru olur.

1) Server Clustering

Bir veya daha fazla sunucunun hard diskleri paylaşıp, dışarıdan tek bir sunucu olarak göründüğü ve temelini işletim sisteminin cluster (küme) servisinden alan yapıdır. Her bir sunucuya düğüm (node) adı verilir ve aktif durumdaki sunucunun gelen taleplere cevap vermesi sağlanır. Eğer aktif düğüm fail olursa, yani sorunla karşılaşıp cevap veremez hale gelirse bir başka düğüm görevi devralır ve sistemin kesintiye uğraması engellenir. Birden fazla fiziksel sunucunun tek bir sanal sunucu gibi davrandığı bu sistemde hata durumunda aktif düğümlerden birinin otomatik devreye girmesine automatic failover (otomatik hata giderme) ve kurulan bu cluster yapısına da failover cluster yapısı denir. Bu işlemle yüksek erişilebilirlik sağlandığı halde disk hatasından (disc failure) koruma mekanizması sağlanmaz. Windows 2003 üzerinde Enterprise veya Datacenter Edition’lar kullanarak 2,4 veya 8’e kadar çıkan düğüm sayısı tercih edebilirsiniz.

Windows üzerinde küme (cluster) yapılandırması tamamlandıktan sonra, SQL Server 2008’i küme üzerinde kurarken sanal sunucu (Virtual server) adı belirlendikten sonra kurulum tüm düğümler üzerine otomatik olarak yapılacaktır.

2) Database Mirroring

Database mirroring, mantık olarak aktif bir SQL Server’ın bir sunucuda çalışırken, bir başka sunucunun da bu SQL Server’ı senkron bir şekilde takip ederek aynı işlemleri kendi üzerinde de yapması esasına dayanır. Böylece aktif SQL Server’ın hata sonucu cevap veremez hale gelmesi durumunda senkron olan diğer SQL Server’ın devreye girmesi ve sistemin canlı olarak devam etmesi sağlanır. Database mirroring modelindeki sunucuların rollerini ve özelliklerini inceledikten sonra gerek maliyet gerekse işlevsellik olarak tespitlerde bulunalım.

Principal Server: Aktif veritabanının bulunduğu sunucudur. Üzerine gelen tüm transaction’ları mirror sunucuya yönlendirir.
Mirror Server: Mirror veritabanının bulunduğu sunucudur. Aktif sunucu ile senkron çalışır.
Witness Server: Seçime bağlı olarak kullanılacak olan tanık – izleyici sunucudur. Eğer automatic failover yani otomatik devreye girme mekanizması kullanılacaksa kullanılmalıdır. Hem principal server’ı hem de mirror server’ı sürekli izler ve principal server’da hata tespit ederse rolleri değiştirmek suretiyle mirror server’ı otomatik devreye sokar.

Witness server kullanılıp kullanılmamasına göre ve transaction’ların gönderilme şekillerine göre farklı mirroring şekilleri (modes) kullanılabilir.

High Availability Mode (Yüksek Erişilebilirlik) : Witness server kullanır, tüm transaction’lar principal server’la birlilkte aynı anda mirror server’da da uygulanır.
High Protection Mode (Yüksek Koruma) : Tüm transaction’lar yine principal server’la birlilkte aynı anda mirror server’da da uygulanır. Fakat witness server kullanma zorunluluğu olmadığı için otomatik devreye girme özelliği yoktur.
High Performance Mode (Yüksek Performans) : Transaction’lar önce principal server’da, daha sonra mirror server’da uygulandığından full transaction safety sağlanmaz. Fakat daha yüksek performans ile çalışır

Mirroring genel olarak server clustering’e göre daha az yönetici eforu ve daha az donanım maliyeti gerektirir. Tercih edilecek kullanım şekline göre otomatik veya elle devreye girme seçimi yapılarak, maliyetler belirlenebilir.

3) Log Shipping

Aktif veritabanı sunucusundan öncellikle bir full backup alınıp ikinci bir yedek sunucuya bunun uygulanması sonrasında periyodik olarak (örneğin 1 dk’da bir) transaction log’ların ikinci sunucuda da uygulanması esasına dayanır. Standart donanımlarla ve oldukça düşük maliyetlerle bir yedek sunucu (stand-by server) tutma esasına dayanan fakat otomatik devreye girme (automatic failover) gibi bir özelliğin desteklenemediği bir yöntemdir. Ayrıca kullanılabilecek bir monitor server ile progamlanabilir bir otomatik devreye sistemi geliştirilebilir, yine de cluster veya mirroring’in sağladığı automatic failover gibi bir nitelik değildir.

4) Peer – to Peer Replication

Aslında erişilebilirlik konusundan çok alternatif bir replikasyon yöntemi olarak tartışılsa da uç uca replikasyonun sağladığı önemli fayda tüm transaction’ların bir uçtan bir uca tüm server’larda uygulanmasıdır. Network trafiğini kontrol ederek load balancing (yük dengeleme) yapabilen bu yöntemin yüksek performans ve ölçekleme (scalability) sağlayabilmesi yanında bu yapıda kontrol edilmesi gereken önemli konu özellikle identity özelliği taşıyan alanlarda tutarsızlıkların oluşmaması ve transaction’ların sağlıklı işlerliğinin devamı için düzenli kontroller yapılması durumudur.

İncelemiş olduğumuz tüm bu yüksek erişilebilirlik çözümlerinin kendi içlerinde ve aralarında gerek performans gerekse çalışma, yönetim ve donanımsal maliyet ve işlevsellik olarak farklı özellikleri vardır. Her sistemin kendine has doğası ve ihtiyaçları olduğu düşünülürse bu çözümlerden en uygun olanın tercih edilmesi gerekmektedir.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

2002 yılından bu yana yazılım danışmanı ve eğitmen olarak çalışmaktadır. Uzmanlık alanları; Azure, SQL Server, Web Programlama, Backend Programlama, Proje Yönetimi ve Kurumsal Uygulamalar’dır. SQL Server - MVP, MCT, MCLC, Azure Data Engineer, Azure Data Scientist, Microsoft PowerBI Data Analyst, Azure Database Administrator, Azure DevOps Engineer Expert, Azure Developer, PMP ve MCSD ünvanlarına sahiptir. 10.000 saatin üzerinde eğitim tecrübesi bulunmaktadır; eğitimlerinde katılımcılarının bilgi düzeylerini artırmayı hedeflemekte ve öğrenme metodolojileri üzerine geliştirmeler yapmaktadır.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir