MSSQL Server’da Non Cluster AlwaysOn Yapısı

Bu makalede Non Cluster AlwaysOn kavramına değineceğiz. Herhangi bir cluster yapımız olmadan AlwaysOn işlemini ele alacağız.

Not: Sunucularımız aynı network üzerinde ise cluster olmadan SSMS üzerinden bağlantı gerçekleştirilir.

Non-Clustered AlwaysOn (AlwaysOn Availability Groups) terimi, SQL Server’da Availability Groups’ın, Windows Server Failover Clustering (WSFC) gerektirmeyen bir yapılandırmasını ifade eder. Burada aslında “Non-clustered” tabiri, WSFC’nin kullanımı yerine, AlwaysOn Availability Groups’ın standalone bir şekilde, ancak yine de yüksek erişilebilirlik (high availability) ve felaketten kurtarma (disaster recovery) sağlamak amacıyla kullanılabileceği bir durumu belirtir. Ancak, teknik olarak, AlwaysOn Availability Groups işlevselliği için Windows Server Failover Cluster (WSFC) gereklidir. Yani, AlwaysOn özelliği, Failover Clustering’in desteği ile çalışır.

Bu teknoloji aslında Database Mirroring’in yerine getirilmiş bir teknoloji.

Farklı subnetlerde olan AlwaysOn mimarisinde failover cluster bize sorun yaşatabiliyor. Bizde cluster’sız bir şekilde non clustered bir şekilde oluşturabiliyoruz.

Bu yapıda herhangi bir otomatik failover yapısı yok. Failover işlemini biz manuel bir şekilde yapıyoruz.

Non Cluster AlwaysOn  yapımızı kurabilmek için sql server configuration manager ekranından instance’ımızın olduğu servise gelip alwayson high availability sekmesinin aktif olduğuna bakmalıyız iki sunucumuzda. Cluster ismimizin görünmesi bir sorun teşkil etmez.

Elimde Adventureworks2012 database’i var bunun AlwaysOn’a dahil olabilmesi için recovery model full olması gerekmekte ve full backup’ının alınmış olması gerekmektedir. Çünkü secondary sunucusu ldf dosyasını referans alarak senkron olur ve full backup ilede kendini garanti altına almış olur.

Always On High Availability sekmesine gelinip New Availability Group Wizard sekmesine tıklanır.

Gelen ekranda AlwaysOn yapımıza  bir isim verdikten sonra Cluster type kısmında herhangi bir cluster mimarisi seçmiyorum. Bu yüzden NONE seçeneğini işaretliyorum.

Gereksinimleri karşıladığı için gelen ekranda ilgili veritabanımı seçiyorum Next diyiyorum.

 Gelen ekranda Add Replica deyip ikinci bir replicamı ekliyorum.

S2\TEST instance’ımı seçiyorum.

Replicamı ekledikten sonra failover mode kısmı sadece manuel modda kaldığını görmüş oluyoruz. Herhangi bir cluster yapısı olmadığı için  failover mode bu şekilde kalır.

Daha sonra üst kısımda bulunan endpoints kısmından veya backup references, listener  kısmında bir değişiklik yapmıyorum.

Listener kısmınada ne kadar listener tanımlasaktada listener kavramı bu yapıda çalışmıyor. Çünkü kendimiz elimizle manuel bir şekilde değiştirmiş olacağız. Listener neydi son kullanıcının hangi sunucu primary ise o sunucuya bağlanmasını sağlıyordu. Peki listener hangi sunucunun primary olduğunu failover listener konuşmasından öğrenmiş olur. Bu yapımızda Cluster olmadığını manuel listener ip güncellenmesi gerekmektedir.

Dns’e bir kayıt giriyoruz. Bu listener’a primary makinamızın ip adresini giriyoruz. Bir sıkıntı anında S1\test instance’ımda listener dns kaydına gidip ikinci makinenin ip’sinin manuel bir şekilde yazılması gerçekleşmektedir. Bu işlem manuel bir şekilde gerçekleşir.

Bu açıklamayı yaptıktan sonra Next deyip bir sonraki aşamaya geçiyorum.

Database küçük olduğu için automatic seeding modunda kalabilir.

Next deyip bir sonraki adıma geçiyorum.

Kontrolleri tamamladıktan sonra Next deyip bir sonraki aşamaya geçip kurulumu sonlandırıyorum.

Close deyip ekranı kapattıktan sonra Primary sunucumda kurulumun başarılı bir şekilde olduğunu görmüş oluyoruz.

İkinci sunucumuz olan S2\TEST’de de AG yapımızın geldiğini görmüş oluyoruz.

Kullanıcılarımız veritabanlarına bağlanmak için bir listener olmadığı için bir Dns Name’e ihtiyaç vardır. Active Directory kurulu olduğu AD sunucusunda Windows arama yerine Dns yazarsak Dns arayüzüne bağlanmış oluruz.

Bağlandıktan sonra  domain’e almış olduğum sunucu adlarım cluster ismim ve farklı kurmuş olduğum cluster always on yapısı için oluşturduğum LISTENER isminde listener adı ve yapılarını Dns Manager ekranında  görmüş oluyoruz.

Dns Manager ekranına boş bir alana tıkladıktan sonra  New Host diyerek bir kayıt oluşturuyorum.

Gelen ekranda Host’uma bir isim veriyorum ve primary makinamın ip adresini giriyorum.

Add Host dedikten sonra Yeni Host’umun oluşturduğunu görmüş oluyorum.

Hostumuzu oluşturduktan sonra bu yeni host kullanıcılarımın connection string’ine yazacağı Dns Name olacak artık.

Primary makinamda herhangi bir sıkıntı olduğunda mevcut availability group’umu hemen failover işlemi yapıp Dns Manager ekranından LISTENER2 hostumun üzerine sağ tıklayıp properties’dan ip adresini ikinci sunucumuzun ip adresi yapmamız yeterli.

Failover yapmadan önce otomatikmen  listener’a vermiş olduğumuz primary makinenin ip adresini çözer.

Daha sonra sunucularımın arasında AG bazlı bir failover işlemi yapalım.

Bir Data kaybı olacağını söylüyor Çünkü asenkron modda olduğu için.

Gelen ekranda Next deyip bir sonraki aşamaya geçiyoruz.

Primary olacak yeni replica sunucum olan S2\TEST makinasına bağlanıyorum.

Next deyip gelen ekranda finish dedikten sonra işlemlerimi tamamlıyorum.

Failover işlemini yaptıktan sonra secondary makinamız Not Sychronizing durumda bunun için secondary sunucusunda Availability Databases altına gelip ilgili database’i resume yapmak gerekiyor. Aşağıdaki resim failover işlemi yapmadan önceki S1 sunucumun durumu.

Resimde görüldüğü gibi secondary sunucusunda database durmuş durumda Resume deyip işlemlerimi tamamlıyorum.

Not: AG yapımız asenkron modunda olduğu için veritabanını Resume yapmamız gerekiyor.

Database’i AG altında senkron  yaptıktan sonra Active Directory’de Dns Manager’e gelip LISTENER2 ip değişikliğini yeni primary sunucumuz yapmamız gerekiyor.

Dns ip’sini manuel bir şekilde değiştirdikten sonra cmd komut satırında ipconfig/flushdns yapıp Dns’in ön belleğinde yer alan verileri sıfırlayarak temizliyorum.

Yukarıdaki resimde görüldüğü gibi işlemlerimizi başarılı bir şekilde yapmış olduk.

Non Cluster AlwaysOn Yapısının:

Faydaları:

  • Failover Clustering’in karmaşıklığından kaçınılır ve hızlı bir yapılandırma sağlar. Kurulum işlemleri daha kolaydır.
  • Her bir replica kendi depolama alanını kullanır, bu da sanal ortamlar ve bulut tabanlı altyapılarla uyumlu olmasını sağlar.
  • Primary ve secondary replika arasında veri replikasyonu ile yüksek erişilebilirlik sağlanır. Asenkron commit modunda bile failover yapılabilir.
  • Senkronize commit veya asenkron commit seçenekleri ile esnek bir yapı sağlanır. Coğrafi olarak uzak sunuculara veri replikasyonu yapılabilir.
  • Windows Server Failover Clustering (WSFC) kullanımı gerektirmez, bu da ek yazılım ve yapılandırma gereksinimini ortadan kaldırır. Yöneticiler için yükü azaltır.
  • Replikalar üzerinden yedekleme ve kurtarma işlemleri yapılabilir, esnek çözümler sunar.

Zararları:

  • Asenkron commit kullanıldığında, veriler gecikmeli aktarılabilir ve veri kaybı yaşanabilir. Senkron commit kullanılmazsa verilerde tutarsızlık olabilir.
  • Failover clustering olmadığı için otomatik failover desteği sınırlıdır. Failover işlemi için manuel müdahale gerekebilir.
  • Failover Clustering’in sunduğu yönetim araçları ve izleme özellikleri kullanılamaz, bu da ek yönetimsel çaba gerektirir.
  • Ağ bağlantısındaki kesintiler veya ağ gecikmeleri, replikasyonun düzgün çalışmamasına yol açabilir. Düşük ağ performansı, senkronizasyon sorunlarına neden olabilir.
  • Felaketten kurtarma senaryolarında Failover Clustering’in sunduğu kolaylıklar eksiktir. Felaket durumunda secondary replica’nın devreye girmesi için daha fazla manuel müdahale gerekebilir.
  • Ağ üzerinden yapılan replikasyon, yüksek trafik veya ağ gecikmesi durumunda performans sorunlarına yol açabilir. Asenkron commit kullanıldığında senkronizasyon hızı düşük olabilir.
  • Paylaşılan disk olmayan yapılar felaket senaryolarında daha büyük veri kaybı riski taşıyabilir. İkincil replikada veriler tam olarak güncellenmeyebilir.

Bu makalede Non Cluster AlwaysOn yapısını ele almış olduk. Başka bir makalede görüşmek dileğiyle.

*Göklerde ve yerde ne varsa hepsi Allah’ındır. Allah’ın ilmi ve kudreti her şeyi kuşatmıştır. Nisa-126*

Author: Yunus YÜCEL

Bir yanıt yazın

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