SQL

SQL 2014 AlwaysOn

Merhaba bu makalede Server 2012 R2 yapısı üzerinde SQL Server 2014 AlwaysOn kurulumunu ve yapısını sizlerle paylaşacağım.

Peki nedir ? SQL AlwaysOn

Kabaca Exchange Server’da kullandığımı DAG teknolojisinin SQL’e uygulanmış hali diyebiliriz.

AlwaysOn Availability Groups Mirroring işlemine bir alternatif olarak gösterilebilir. Fakat AlwaysOn Availability Groups ile Mirroring ile yapamadığımız birden fazla Secondary Server kullanabilme ve kullanılan Secondary Serverların da aynı anda aktif olarak çalışma işlemlerini Mirroring ile yapamıyorduk. Fakat AlwaysOn Availability Groups teknolojisi ile artık böyle bir kullanıma gerek kalmıyor. Ayrıca AlwaysOn Availability Groups özelliği Mirroring işleminin avantajlarından olan hem otomatik hem de Manuel Failover yapısını desteklemektedir.

Firmaların ve IT’lerin başarısı hizmetin ve verilerin kesintisiz olması ile doğru ilgilidir. SQL 2012 öncesindeki sürümlerinde hem High Availability hem de Disaster Recovery sağlamak için Failover Clustering, Mirroring, Log Shipping ve Replikasyon gibi teknolojiler kullanılabiliyordu. Her bir teknolojinin kendine has avantajlarının ve dezavantajlarının olması sebebiyle genelde HADR (High Availability ve Disaster Recovery) sağlamak adına bu teknolojiler beraber kullanılıyordu. SQL Server 2012 ile beraber tanıtılan AlwaysOn özelliği ile önceden birkaç teknolojiyi beraber kullanarak elde ettiğimiz HADR seviyesini artık sadece AlwaysOn kullanarak elde edebililir.

AlwaysOn Availability Groups Gereksinimleri

  • AlwaysOn Availability Groups kurulumuna geçmeden önce sistemimizin bazı gereksinimleri karşılıyor olması gerekmektedir.
  • AlwaysOn Availability Groups içindeki tüm Serverlar aynı domain içinde olmalıdırlar.
  • AlwaysOn Availability Groups içindeki tüm Serverlar Windows Server Failover Cluster yapısına eklenmelidir.
  • AlwaysOn Availability Groups içindeki tüm Serverlarda Always On özelliği aktif edilmelidir.
  • AlwaysOn Availability Groups içinde bulunacak tüm veritabanları Full Recovery modda olmalıdır.
  • Kurluma başlamadan Primary Server üzerindeki AlwaysOn Availability Groups içinde bulunacak veritabanlarının Full backupları alınarak Replikalar üzerinde Restore edilmelidir.
  • AlwaysOn Availability Groups içindeki herhangi bir Server Domain Controller olmamalı yani diğer bir değişle hiçbir Serverın üzerinde Active Directory Domain Services rolü bulunmamalıdır.

Özelliklerden bahsettikten sonra artık Bu testi yapacağımız ortam hakkında bilgi vermeye geçelim

1     adet     AD/DC – Server 2012 R2 Standart
3    adet     Server 2012 R2 Standart – SQL 2014

Kuracağımız bir ortam’ımız var.

Local Network’ümüz 192.168.200.x/24
Cluster Network’ümüz 10.0.0.x/24
Cluster Ip adresimiz 192.168.200.254 şeklinde

Topoloji bilgisinide verdikten sonra hızlıca adımlara geçelim

Bu labı yapacağımız ortamda özellikle SQL NOD’larının bulunduğu serverların update’lerinin aynı olması önemli.3 Adet Server’ımız domain’de ekli durumda.


AD üzerinde Ayrı bir OU açıp Cluster sunucularını,grubunu ve servis hesabını bu OU altında topluyoruz.

Oluşturacağımız servis hesabı bu tip projelerde çok önemlidir.Bu tip servisler kurulurken rollerin içerisine admin hesabı şifresi girmek ilerleyen zamanlarda sorunlara neden oluyor ilerleyen süreçlerde admin şifresi değiştiğinde servisler içerisinde güncellenmediği zaman sorunlar yaşanıypr. bu tip durumların olmaması için önceden servis hesabı oluşturup bu hesap üzerinden yetkilendirme ve kayıtları yapıcaz.


Ayrıca Cluster OU muzun yukarıda basılan bir Policy’den etkilenmemesi için Block Inheritance özelliğini kullanacağız.


Block Inheritance yaptıktan sonra yeni bir tane GPO oluşturuyoruz.


GPO muza isim verdikten sonra Edit liyoruz.


Kullanıcımız’a herhangi ek Domain yetkisi vermeye gerek yok Domain User seviyesinde olan bu kullanıcı hesabı her bir SQL Server sunucusu için o sunucuda Local Admin yetkisine sahip olması yeterli. Bu işlemi Group Policy ilkesini kullanacağız.

Computer Configuration >Preferences> Control Panel Settings >Local Users and Groups alanına geliyoruz ve Local Users and Groups a sağ tıklayarak New> Local Group diyoruz.


Action : Mecvuttaki kullanıcının yetkilerini güncelleyeceğimiz için Update

Group Name : Administrator seçiyoruz Admin yetkisine sahip olması için

Add : Bölümünden de hangi kullanıcının bu yetkiyi alacağını belirliyoruz.


Bu adımda Domain User’ımızın yetkilerini düzenleyeceğiz. Userımız Cluster işlemleri için bazı ayrıcalıklara ihtiyacı bulunmaktadır. Bunlardan ilki ilgili hesabın Cluster üyesi sunucularda Local Admin yetkilerine sahip olması bu hesabın sahip olması gereken diğer ayrıcalıklar ise kendi OU’su altında Computer Objesi yaratabilme ve yine aynı OU da tüm özellikleri okuma yetkisine sahip olmasıdır

Cluster OU su altında yer alan Servers OU suna gelip Sağ tıklayıp Properties diyoruz

ve Security tabına geçiyoruz. Security tabından Advanced a geliyoruz.

Kullanıcımız için Read all Properties ,Create Computer Object ve Delete Computer Object yetkilerini atıyoruz ve AD üzerindeki ayarlarımızı tamamlıyoruz.


 

SQL Nodeları tarafında yapılması gereken işlemlere başlaya biliriz. Cluster işlemine başlanılmadan önce her Node için tüm Windows Updatelerinin alınması çok önemli.

Failover Clustering
.NET sürümlerinin de
(3.5 ve diğer sürümler)
Multipath I/O ( İhtiyaca İstinaden )
Telnet Client ( Cluster için şart değildir)


Features ları sunucularda yüklüyoruz.

NOT : Her iki SQL Node’unda da Updateler aynı olmalıdır. Herhangi bir Storage gereksinimiz olmadığı için Multipath I/O bileşenini ne temelde ihtiyacımız yok

Bütün NODE larımıza Cluster servis’ini kurduktan sonra sıra geldi Cluster ın Validate işlemlerine.


Cluster Node’larımızı ekliyoruz.

Hangi serverlarda hangi testlerin uygulanacağını belirtiyor.

Storage ile ilgili bir işlem yapmadığımız için listeden çıkartıyorum.

Herhangi bir sorun bulunmuyor.

 

Cluster üyesi Nodları tanımladıktan sonra artık Cluster servisini ayarlaya biliriz.


Cluster Name : Cluster’a vereceğimiz ismi belirtiyoruz.NetBIOS isminin 15 karakterden uzun olmamasına dikkat etmemiz gerekmektedir.

Network Configuration : Cluster’a ait olacak IP adresini belirtiyoruz.


Eğer ortamda kullanılabilir Storage var ise Clustera eklemek için Add all eligible storage to the cluster seçeneğini işaretleyebiliriz. Biz daha önceki adım’da storage bölümünü es geçmiştik konumlandırmada storage planı şimdilik yapmadığım için es geçiyorum.

Bu aşamada bir storage eklememiz gerekiyor bunun için Quorum konfigürasyonu yapıcaz. Quorum bilgilerini Network paylaşımında tutacağız. Quorum için bir dosyayı NAS sunucuda veya başka bir paylaşımlı alanda tutacaksak paylaşmış ve yetkilendirmeleri yapmış olmamız gerekli.

Failover Cluster Manager ı açıyoruz Action > More Action > Configure Cluster Quorum Settings


Advanced Quorum Configuration and Witness Selection seçeneğini işaretleyip Next diyoruz.

Bu adımda Cluster için Witness Configurationları tanımlıyoruz.Witness bilgilerimizi

Domainde yer alan ve Share edilmiş bir File’da
Domainde yer alan ve Share bir diskte Yada witness Configurationl’ını es geçebiliriz.

Biz Configure a file share witness seçeneğini işaretliyoruz

Benim paylaştığım alan AD üzerindeki Z partition’unun doğrudan kendisi (Bu alanda bir folder’da seçebilirsiniz benim yapmış olduğum Disk paylaştırmak gibi düşüne bilirsini) .Bu alanda sadece Services ve Administration hesaplarının yetkileri mevcut.


Yaptığımız işlemlerin kısa bir özetini görüyoruz.


Witness alanımızı aşağıda görebiliyoruz.


Altyapı ve servis tarafındaki işlemlerimiz böylece tamamlandı.

AlwaysOn SQL Server  2012 ile gelen bir özellik olup yalnızca Enterprise sürümünde desteklenen bir özelliktir. Bu sebepten dolayı SQL sunucumuzun sürümü Enterprise olması gerekmektedir. Standalone bir SQL Server kurulumu yapıyor olacağız.

Bu bir test ortamı olduğu için Evulation olarak kuruyoruz.

Lisans sözleşmesini kabul edip ilerliyoruz.
SQL server’ımızı Feature olarak kurucaz.

Kuracağımız rolleri seçiyoruz.
SQL’imize farklı bir Instance name vermek istersek burdan yapabiliriz ben değiştirmiyorum.
Servis hesabı olarak açmış olduğumuz kullanıcıyı belirtip şifresini giriyoruz.Böylece SQL servisleri için yetkili hesap bizim belirlemiş olduğumuz servis hesabı olacak ileride çıkabilecek şifre değişikliği gibi sorunlardan uzaklaşmış olacağız.

Bu bölümde SA hesabına şifre veriyoruz isterseniz Windows Authentication mode diyip AD yetkisi de verebiliriz ama ben SA hesabını ayırmaktan yanayım. SQL server Administrator hesabı olarak services kullanıcısını belirliyoruz

Kısa bir özet geliyor ve yüklememiz başlıyor.

Kurulumumuz başarı ile tamamlanıyor.


Evet bu zamana kadarki adımları şöyle bir hatırlıyacak olursak; Cluster servisimizi kurduk,Cluster configration yaptık,SQL server Stand Alone olarak kurduk burdandan sonra artık AlwaysOn ayarlarına geçebiliriz.Temel ayarlar için http://technet.microsoft.com/en-us/library/hh510230.aspx linkini inceleyebilirsiniz.

SQL AlwaysOn özelliğinin kullanıla bilmesi için sunucunun bir cluster üyesi olması gerekir. SQL Configration Manager‘ı açıyoruz.


SQL Server Services bölümünden SQL Server ( MYSQLSERVER) ‘a gelip sağ tıklayıp Properties diyoruz.

AlwaysOn High Availability bölümüne gelip Enable AlwaysOn Availability Groups‘u işaretliyoruz.

Bu işlemi yaptıktan sonra servis’i restart etmenizi ister.


Eğer Servis’i AlwaysOn High Availability işlemleri sırasında aşağıdaki gibi bir sorun ile karşılaşırsınız.


İşlemleri eksiksiz ve doğru olarak yaptıysanız AlwaysOn High Availability a sağ tıklayıp New Availability Group diyerek devam ediyoruz.


AlwaysOn grubumuza bir isim veriyoruz


Aşağıda gördüğünüz gibi 2 adet DB ekli benim SQL’ime bir DB’in daha önceden Full Backup’ı alınmış diğeri ise alınmamış durumda.Full Backup‘ı alınmayan DB’i dahil edemeyiz.Öncelikle full backup alınmış olmalı.


 

Bu adımdan sonra Replica sunucularımızı ekliyoruz.


Eklediğimiz replica lardan birini Secondary olarak atıyoruz.


EndPoint‘lerimizi belirliyoruz burada önemli nokta Endpoint portunun Firewall‘a takılamaması yada başka bir yerde kullanılmaması.


Backup Preferances ayarlarını yapıyoruz. Prefer Secondary olarak seçiyorum. Bu şekildeyken Secondary sunucum aktif ise yedekler bu sunucu üzerinden eğer kullanılabilir durumda değil ise yedekler Primary sunucum üzerinden alınacaktır.


SQL sunucularınıza Cluster servisinin IP veya Hostname’i ile değilde farklı bir IP veya Hostname ile SQL sunucularınıza erişmek istiyor iseniz Listener tanımlamanız gerekmektedir. Ben böyle bir şey istemiyorum o yüzden es geçiyorum bu adımı ilerleyen zamanlarda da bu tanımı yapabiliriz.


Not: Listener’ın sorunsuzca oluşturulabilmesi için Cluster’a ait Computer objesinin bulunduğu Container içerisinde Computer Objesi Create etme yetkisine sahip olması gereklidir.,

Senkoronizasyon metot ‘unu belirliyoruz. Yani burdan backup’ını aldığımız db’in diğer replica’lara nasıl dağıtılacağını belirliyoruz.Burada belirlediğimiz alanda yazma yetkisi olması çok önemlidir. Belirlediğimiz alana db’in full backup’ı ve transaction log bu paylaşıma kopyalanır burdan karşı tarafa gönderilir.


Kurulum öncesi son kontrolleri yapıyor.


Kurulum başarı ile tamamlandı.

SQL üzerinde AlwaysOn High Availability bölümünde Primary ve secondery sunucularımız ve Db’lerimiz görünmektedir.



AlwaysOn yapımıza yeni DB ,yeni replica eklemek yada Failover yaptırmak için AlwaysOn High Availability bölümüne gelip yapmış olduğumuz Availability Group a sağ tıklıyoruz


Örneğin Manuel Failover yapalım Failover bölümüne geliyoruz ve yeni Primary sunucumuzu belirliyoruz.


Yeni sunucumuzun hesap bilgilerini yazıyoruz.


Failover işlemi başarı ile tamamlanıyor.


SQL1 sunucumuz artık Secondary durumda

Yazar Hakkında

Kerem Şuğle

Solution Architect

Yorum Ekle

  • […] AlwaysOn Availability Groups Mirroring işlemine bir alternatif olarak gösterilebilir. Fakat AlwaysOn Availability Groups ile Mirroring ile yapamadığımız birden fazla Secondary Server kullanabilme ve kullanılan Secondary Serverların da aynı anda aktif olarak çalışma işlemlerini Mirroring ile yapamıyorduk. Fakat AlwaysOn Availability Groups teknolojisi ile artık böyle bir kullanıma gerek kalmıyor. Ayrıca AlwaysOn Availability Groups özelliği Mirroring işleminin avantajlarından olan hem otomatik hem de Manuel Failover yapısını desteklemektedir. Firmaların ve IT’lerin başarısı hizmetin ve verilerin kesintisiz olması ile doğru ilgilidir. SQL 2012 öncesindeki sürümlerinde hem High Availability hem de Disaster Recovery sağlamak için Failover Clustering, Mirroring, Log Shipping ve Replikasyon gibi teknolojiler kullanılabiliyordu. Her bir teknolojinin kendine has avantajlarının ve dezavantajlarının olması sebebiyle genelde HADR (High Availability ve Disaster Recovery) sağlamak adına bu teknolojiler beraber kullanılıyordu. SQL Server 2012 ile beraber tanıtılan AlwaysOn özelliği ile önceden birkaç teknolojiyi beraber kullanarak elde ettiğimiz HADR seviyesini artık sadece AlwaysOn kullanarak elde edebililir. Yazının devamı için: https://www.ksugle.com/sql-2014-alwayson/ […]

Leave a Comment