16 Mart 2019 Cumartesi

SQL Server 2017 Yüksek Erişilebilirlik Çözümleri - 2 (High Availability Solutions)

Serinin bir önceki yazısında da belirttiğimiz gibi; ihtiyaç duyduğumuz hizmetlerin her an erişilebilir olması son derece önemlidir. Özellikle kurumsal firmalar müşteri memnuniyeti, kurumsal imaj, rekabet ve karlılık gibi daha bir çok nedenden dolayı hızlı ve sürekli erişebilir olmaktan vazgeçemezler.

Sürekli erişilebilir olmak sizin için önemliyse ve olası bir felakette hizmet kesintisini saniyeler, hatta mili saniyeler seviyesinde tutmak isterseniz; yüksek erişilebilirlik - HA çözümlerine odaklanmanız gerekir.

SQL Server 2017 ile birlikte felaket öncesi alınabilecek önlemler (Yüksek Erişilebilirlik Çözümleri) şunlardır:

  1. AlwaysOn Failover Cluster (Uzun zamandır var. Bazı versiyonlarda geliştirildi.)
  2. AlwasyOn Availabilty Groups (SQL Server 2012 ile birlikte geldi ve her versiyonda geliştirildi.)
  3. Database Mirroring (Uzun zamandır var. Yeni versiyonlarda görmeyebiliriz.)
  4. Basic Availability Groups (Mirroringin yerini alıyor. Standart editionda 2 Server 1 DB için kurulabilir.)
  5. Clusterless Availability Group (Yüksek erişilebilirlik çözümü sayılmaz. DB kopyası oluşturur.)
  6. Log Shipping (Uzun zamandır var. Backup-restore ile DB kopyası oluşturulur.)
Serinin bir önceki yazısına şu linkten ulaşabilirsiniz:

Bu yazımızda SQL Server 2017 ile birlikte kullanılabilen Yüksek Erişilebilirlik - HA çözümlerini karşılaştıralım ve temel topolojilere bir göz atalım.

SQL Server 2017 Enterprise ve Standart Editionda desteklenme durumu şöyle demiştik:


SQL Server 2017 editionları ve desteklenen özellikleri aşağıdaki linkten inceleyebilirsiniz:

HA çözümleri birlikte kullanılarak farklı topolojiler elde edilebilir. Biz özetle temel topolojilere ve çözümlerin avantajlı-dezavantajlı yönlerine odaklanacağız.

AlwaysOn Failover Cluster


Uzun zamandır var olan bir teknolojidir. Bazı versiyonlarda bir takım geliştirmeler yapıldı ancak temel mantık aynı. Öncelikle sunucularda arasında Windows Failover Cluster kurulur. Hemen ardından bir sunucuya SQL Server kurulumu yapılır ve diğer sunuculara da SQL Server kurulumları Cluster olarak eklenerek yapılır.

Bu çözüm servis seviyesine odaklanır. Bir aktif sunucu olur ve bu sunucuda yazma okuma yapılabilir. Bir felaket anında pasif sunucular elle veya otomatik olarak aktif hale gelebilir. pasif sunucular aktif olana kadar atıldır. Çapraz şekilde aktif-aktif olacak bir tasarım yapılabilir. Ancak pasif kalan makine üzerinden aynı veritabanı yazma/okuma amaçlı kullanılamaz. 

Sunucular ortak diske baktığı için disk bazlı bir felaket olduğunda bu çözüm işe yaramaz.

Temel topolojisi:
Avantajlar:
  • Standart editionda 2 makine desteklenir.
  • Windows Cluster alt yapısı kullanılır ve Clientlar Public IP üzerinden eriştiği için yük devri (failover) sonrası uygulama tarafında değişiklik gerekmez.
  • Saniyeler/dakikalar (20 sn + Recovery süresi kadar) içerisinde diğer makineye otomatik yük devri (failover) yapılabilir.
Dezavantajlar:
  • SQL Server 2012 sonrası kullanımı azaldı. Yerine AlwaysOn Availability Group trend oldu.
  • Pasif nodelar üzerinden okuma yapılamaz. Pasif nodelar tamamen atıl kalır.
  • Pasif nodelarda veritabanı kopyası (replica) yoktur.
  • Nodelar (sunucular) ortak disk kullandığı için disk hatalarına karşı veri korunmaz. Veritabanı değil servis seviyesinde erişilebilirlik sağlar.


AlwasyOn Availabilty Groups


SQL Server 2012 ile birlikte geldi. Her versiyonda geliştirildi ve yeni özellikler eklendi. Bir çok açıdan güçlü ve başarılı bir çözüm. Eskiden beri kullanılan Database Mirroring ve Log Shipping'in iyi tarafları birleştirilmiş ve Windows Failover Cluster alt yapısı üzerine inşa edilmiş bir çözüm. Database Mirroring gibi senkron/asenkron veri aktarımı yapılabilir. Felaket anında bir kaç saniyede görevi diğer sunucuya otomatik olarak devredebilir. Log Shipping gibi birden fazla sunucu/veritabanı için kurulabilir. Hatta pasif olan nodelardaki veritabanları özel bir çaba gerektirmeden veri okuma ve backup alma amaçlı kullanılabilir.

Primary node üzerinden yazma okuma taleplerinize cevap bulabilirsiniz. Secondary nodeları da raporlama ve yedekleme amaçlı kullanabilirsiniz. Bu şekilde 8 nodeu birden fazla veritabanı için yüksek erişilebilirlik kapsamına alabilirsiniz.

Öncelikle Windows Failover Cluster kurmanı gerekir. Sonra sunuculara ayrı ayrı SQL Server  Enterprise kurulumları normal şekilde yapılır. Hemen ardından SQL Server Database Engine servislerinden AlwaysOn Availability Group aktif edilir ve Availability Grouplar arayüzlerden veya scriptler yardımıyla oluşturulur.

Temel topolojisi:
Avantajlar:
  • Senkron ve asenkron çalışabilir. 10 saniyeden kısa sürede otomatik yük devri (failover) yapılabilir.
  • Senkron olduğunda veri kaybı sıfırdır.
  • Pasif nodelarda veritabanı kopyaları (replica) oluşur.
  • Primary nodea yazma/okuma diğer nodelarda sadece okuma yapılabilir. Pasif nodelar raporlama ve backup amaçlı kullanılabilir.
  • Birden fazla veritabanı tek bir availability group altınta toplanabilir. Felaket anında tüm veritabanları için yük devri (failover) yapılır.
  • Windows Failover Cluster alt yapısı kullanılır ve istemciler listener adı ile erişim sağladığı için failover sonrası uygulama tarafında değişiklik gerekmez.
  • Pagelerde oluşan tutarsızlıklar pasif nodelara düzeltilerek aktarılır.
Dezavantajlar:
  • Enterprise edition gereklidir.
  • Veritabanlarının diğer nodelar üzerinde kopyası (replica) olduğu için daha fazla disk alanına ihtiyaç duyulur.
  • Server seviyesinde tanımlanan nesneler (job, login vs.) diğer nodelarda da tanımlanması gerekir.
  • Secondary sunucular primary sunucu kadar güçlü olmazsa senkron modda ciddi yavaşlıklar oluşur.
Serinin bu yazısında bir biri ile karıştırılan iki farklı çözümü ele aldık. Diğer çözümlere sonraki yazımızda odaklanacağız.

Hiç yorum yok:

Yorum Gönder