SQL Server Failover Cluster Kurulumu

1 Kas by NURULLAH ÇAKIR

SQL Server Failover Cluster Kurulumu

Makalelerimin çoğunda olduğu gibi bu makalemde de SQL Server 2014 kullanacağım. Diğer sürümleride benzer şekillerde kurabilirsiniz.

 

SQL Server Failover Cluster, Always ON teknolojisi gelmeden önce çok kullandığımız bir HA(High Availability) çözümüydü. Kısaltma olması amacıyla bu makalenin devamında SQL Server Failover Cluster’a SSFC demeyi tercih edeceğim. Fakat Always ON’un geldiği günden beri şahsen benim hiç tercih etmediğim bir teknoloji haline geldi. Bunun birçok sebebi var.

 

Bu sebepleri ve bu teknolojiler arasındaki farkları anlatan “SQL Server Failover Cluster, Database Mirroring, Always ON,Replication ve Log Shipping Farkları” isimli makalemi okumak isteyebilirsiniz. Bu makalede sadece SSFC kurulumuna değineceğim.

 

2 node’lu bir SSFC kurulumuna başlayalım. Kuruluma başlamadan önce aşağıdaki gereksinimleri karşılamalıyız.

 

  • SSFC kurabilmek için bu sunucuların aynı windows cluster’da olması gerekir.
  • Storage üzerinde Quorum ( Witness ) için iki sunucunun da görebileceği bir disk,
  • Storage üzerinde Distributed Transaction Coordinator ( DTC ) için iki sunucunun da görebileceği bir disk,
  • Storage üzerinde SQL Server veritabanı dosyalarını tutmak için iki sunucunun da görebileceği bir disk(Data dosyalarını ve log dosyalarını ayrı disklere koymak için iki tane shared disk tanımlamanızı tavsiye ederim),
  • Kullanılmayan bir IP ve sanal sunucu ismi,
  • Bu 2 sunucuda kurulmuş olan Windows Cluster Account’a(Windows Cluster’ın ismi) bu 2 sunucunun Active Directory’de bulunduğu OU(Organization Unit)’da Create Computer Object yetkisinin verilmesi gerekiyor. Kurumunuzdaki Active Directory uzmanı ile konuşup SQL Server Sunucularınız için bir OU oluşturmanızı tavsiye ederim. OU oluşturduktan sonra bu OU’ya uygulanacak policy’leri de belirlemelisiniz.(Active Directory’de policy’ler OU bazında basılabilir. Yani OU(Organization Unit) bir grup diyebiliriz. SQL Server’ın kendisine ait bir OU’sunun olmasının sebebi diğer genel policy’lerden etkilenmeden kendine özel policy’lerin bulunduğu OU’da basılmasını sağlamaktır.)
  • Tempdb için gerekli lokal diskleri 2 sunucu üzerinde de oluşturmalısınız. Buffer Pool Extension kullanacaksanız yine lokal disk kullanmalısınız. Buffer Pool Extension ile ilgili detayları “Buffer Pool Extension Nedir” isimli makalemizde bulabilirsiniz.
  • Kurulum yapacağınız kullanıcının active directory kullanıcı olmasına(domainisminiz\kullanıcıisminiz)dikkat edin ve bu kullacıyı failover cluster kuracağınız iki sunucuda da administrator grubuna ekleyin.

 

Kurulum adımlarına geçiyoruz,

 

1.Sunucu üzerinde Setup.exe dosyasına sağ tıklayarak Run As Administrator diyerek SQL Server Kurulumunu başlatıyoruz.

 

Installation sekmesine gelip New SQL Server failover cluster installation diyoruz.

 

 

Bir sonraki ekranda kurulumun sağlıklı bir şekilde gerçekleşebilmesi için gerekli genel kuralları kontrol ediyor. Eğer bir hata verirse önce o hatayı düzeltip sonra kuruluma devam edebilirsiniz. Bizim kurulumumuzda herhangi bir hata vermedi. Aşağıdaki gibi bütün gerekliliklerin tamam olduğunu görebilirsiniz.

 

 

Bir sonraki ekranda kurulum dosyamız ile ilgili bir güncelleme varsa yüklenip yüklenmeyeceğini soruyor. Aşağıdaki ekranda göründüğü gibi “Use  Microsoft Update to check for updates(recommended)” seçeneğini seçerseniz gerekli güncellemeleri yapıyor. Bu güncellemeleri kurulum bittikten sonra da uygulayabilirsiniz. Ben şimdilik bu seçeneği seçmeden next diyerek devam ediyorum.

Bir sonraki ekranda failover cluster kurulumu için gerekli kuralları kontrol ediyor. Eğer herhangi bir şey fail ederse ilgili hatayı düzeltip Re-run diyebilirsiniz.

 

 

Test için yaptığımız kurulumda 3 tane warning aldık. Bunlardan bizim için en önemli olanı DTC. Aldığımız uyarı aşağıdaki gibi. Hatada da görüldüğü gibi failover cluster kurulumu için MS DTC şart değil fakat kurulum sonrasında cluster’a dahil edeceğini bir uygulama MSDTC kullanacaksa MSDTC servisini cluster hale getirmelisiniz. “MS DTC ‘nin Cluster’a Eklenmesi” ve “MS DTC ile SQL Server’a bağlanmak isteyen bir uygulama için gerekli ayarları yapmak”  isimli makalelerimi  okuyabilirsiniz.

Bu warning’ler için bir şey yapmadan next diyerek ilerliyorum. Bir sonraki ekranda product key girmemizi ya da ücretsiz sürümlerden birini kullanmamız için karşımıza bir seçenek çıkıyor. Evaluation’ı seçerseniz 180 günlük bir deneme sürümünü yüklemiş olursunuz. Product key’i girerek devam ediyoruz.

 

 

Bir sonraki ekranda I accept the licence terms’i seçerek next diyoruz. Bir sonraki ekranda aşağıdaki gibi SQL Server Feature Installation’ı seçiyoruz ve next diyoruz.

 

 

Bir sonraki ekranda kurmak istediğimiz özellikleri seçiyoruz. Bu özellikleri nasıl seçeceğimize “SQL Server Kurulumu” isimli makalemi okuyarak karar verebilirsiniz. Belirttiğim makalede her özelliğin detaylı açıklamasını bulabilirsiniz. Biz aşağıdaki gibi seçimimizi yaparak ilerliyoruz.

 

 

Bir sonraki ekranda aşağıda görüldüğü gibi Network ismini ve Instance ismini soruyor.

Network ismine SQLCluster diyoruz. Bu ismi sanal isim gibi düşünün. Uygulamacılar sadece bu ismi ya da bu isme ait IP’yi bilecekler. Veritabanı hangi fiziksel sunucuda çalışırsa çalışsın veritabanlarına bağlanmak için bu ismi ya da bu isme ait IP’yi girdiklerinde bu isim uygulamayı ya da uygulamacıyı veritabanı o anda hangi fiziksel sunucuda aktifse o sunucuya yönlendirme işlemini yapacak.

Örneğin SQLNODE01 ve SQLNODE02 isimlerinde 2 sunucunuz üzerinde windows cluster var ve SSFC kurdunuz. SQL Cluster’ınızın adı aşağıdaki gibi SQLCluster olsun.  Veritabanının T anında SQLNODE01 üzerinde olduğunu düşünelim. Uygulamacı veritabanına bağlanırken ServerName kısmına SQLNODE01 ya da SQLCluster yazarsa veritabanına bağlanabilecektir. Fakat T+1 anında Instance SQLNODE01 üzerinden SQLNODE02’ye failover olursa SQLNODE01 ile veritabanına artık bağlantı sağlayamayacaktır. SQLCluster ile bağlanan uygulama ya da uygulamacı failover işleminden etkilenmeden veritabanına bağlanabilecektir.

Instance name olarak default instance seçebilirsiniz. Default Instance her sunucuda bir tane kurulabilir. Daha önce default instance kurulumu yaptıysanız named instance’ı seçip instance’ına bir isim vermelisiniz. Default instance kurulumu sonrası SQL Server’a bağlanırken  Server Name kısmına sadece sunucu ismini yazarak SQL Server’a bağlanbilirsiniz.

Named  Instance bir sunucuda birden fazla kurulabilir. Named Instance’a bağlanırken  Sunucuİsmi\Instanceİsmi ya da Sunucuİsmi,port(örnek:SQLNODE01,1435 ya da 156.43.56.71,1435) şeklinde bağlanabilirsiniz.

Biz instance’ımıza INCLS ismini verdik ve next diyerek devam ediyoruz.

Bir sonraki ekranda cluster resource group oluşturacağız. Failover cluster bileşenleri cluster resource group içersinde yer alacak. Otomatik olarak Instance’ımızın ismini içeren bir cluster resource group ismi geldi. Next diyerek ilerliyoruz.

 

 

Bir sonraki ekranda failover cluster’ın kullanacağı diski ya da diskleri seçmemiz gerekecek. Bizim ekranımızda kullanabileceğimiz bir shared disk’imiz olmadığı için aşağıda gördüğünüz gibi bir şey çıkmadı.

 

 

diskmanagement’a gelerek her 2 sunucu üzerinden görülebilecek, data,log ve backup dosyalarımız için kullanacağımız diske bir harf verelim. diskmgmt.msc yazarak disk management’a giriyoruz. Öncelikle sistem ekibinin tanımladığı disk’e sağ tıklayıp Online’a alıyoruz ve aşağıdaki gibi unallocated yazan yerde sağ tıklayıp new simple volume diyoruz.

 

 

Next Next diyerek ilerliyoruz ve aşağıdaki ekran geldiğinde istediğimiz ve her 2 sunucu üzerinde de kullanılmayan bir harf’i seçiyoruz.

 

 

Bir sonraki ekranda diskimizi formatlayacağız. Aşağıdaki gibi File system’i NTFS olarak seçiyoruz. Allocation unit size’da sql server için tavsiye edilen best practice 64K’dır. Volume label’ına da bir isim veriyoruz.

 

 

Eğer data ve log dosyaları için ayrı diskler kullanacaksanız her 2 sunucununda görebileceği 2 tane disk tanımlamanız ve yukarıdaki işlemleri yapmanız gerekecektir. Bu işlemler bittikten sonra failover cluster manager’a gelerek aşağıdaki gibi Storage->Disks->Add Disk diyoruz.

 

 

 

Karşımıza 2 sunucu üzerindende görülebilecek disk çıkıyor ve ok’e tıklayarak diskimizi cluster’a ekliyoruz.(Bu disk biraz önce tanımladığımız disk)

 

Kuruluma geri dönerek biraz önce boş gelen Cluster Disk Selection sayfasında refresh diyoruz ve cluster’a eklediğimiz diskin seçili ve yeşil olarak geldiğini görüyoruz.

 

Bir sonraki ekranda IPv4’ü seçiyoruz Address kısmına network grubundan istediğimiz başka bir uygulama tarafından kullanılmayan IP’yi giriyoruz. Unutmayın bu IP kurulumun başında SQLCluster isminde tanımladığımız networkname’in (virtual name de diyebilirsiniz.) IP’si. Bu IP’ye de sanal IP(virtual IP) diyebilirsiniz. IP’nizin fiziksel IP’lerle aynı subnette olması gerekir. Örneğin SQLNODE01’in IP’si 156.34.231.11 ise virtual IP’niz 156.34.231.16 olabilir ama 156.34.240.16 olamaz. Sadece son hane farklı olabilir. Network grubunuz gerekli ayarlamaları yapacaktır. Next diyerek ilerliyoruz.

 

 

Bir sonraki ekranda SQL Server Agent ve SQL Server Database Engine’in kullanacağı servis hesaplarını belirleyeceğiz. Cluster kurulumu yapacağımız için active directory’de tanımlı bir kullanıcıyı yetkilendireceğiz. Örneğin “domainismi\kullaniciismi”. Aşağıdaki gibi SQL Server Agent için ve SQL Server Database için Browse diyerek active directory’den ilgili kullanıcıyı seçiyoruz. Startup type’larını otomatik olarak ayarlamanız gerekiyor.

 

 

Service Accounts sekmesinin hemen yanında Collation sekmesine geçip istediğimiz collation’ı seçiyoruz. Collation ile ilgili detaylı bilgilere “Veritabanı Oluşturmak Deyip Geçmeyin!” isimli makalemden erişebilirsiniz. Daha detaylı bilgi için sitemizde arama kısmına collation yazmalısınız. Genelde Turkish_CI_AS set edilir. Aşağıdaki şekilde set edebilirsiniz.

 

 

Next diyerek ilerliyoruz.

 

Bir sonraki ekranda veritabanına bağlantı şeklini ayarlayacağız. Karşımıza iki seçenek çıkacak.

 

Windows Authentication mode: Sadece active directory kullanıcısı ile ya da lokal sunucuda tanımlı bir windows kullanıcısı ile giriş yapılabilir. SSMS’i açmak için bağlandığınız sunucu ya da client’a hangi kullanıcı ile giriş yaptıysanız o kullanıcının SQL Server’a şifresiz bir şekilde girebilmesidir. Tabi sunucuya giriş yaptığınız kullanıcının SQL Server üzerinde yetkilendirilmiş olması gerekir. SQL Authentication ile giriş yapılamaz. SQL Authentication’da bir kullanıcı adı ve parola belirleyerek active directory ya da lokal sunucudaki kullanıcılardan bağımsız olarak SQL Server üzerinde oluşturulan bir kullanıcının sql server’a bağlanma şeklidir.

 

Mixed Mode: Hem windows authentication hem de sql authentication ile giriş yapılabir anlamına geliyor. Bu seçeneği seçtiğinizde aşağıdaki ekran görüntüsünde gördüğünüz gibi bir parola girmenizi ve bu parolayı onaylamanızı istiyor. Bu parola kurulacak instance’ın sa şifresi olarak belirlenecek. Biraz altta ise Specify SQL Server Administrator yazan yerde Add Current User’a tıklamanız gerekiyor. Bu işlem kurulumu yaptığınız kullanıcı için kurulacak olan instance üzerinde sysadmin(instance üzerinde herşeyi yapabilme yeteneğine sahip kullanıcı) hakkı verilmesini sağlayacak.

 

 

Next demeden önce Data Directories tab’ına geçmeniz gerekiyor.

 

Data Root Directory

SQL Server’ın kurulacağı path. Default olarak gelen değerde bırakmanızı tavsiye ederim. Tabi işletim sistemi crash olursa sistem veritabanlarınız gidecektir. Bu yüzden muhakkak backup’larınızı düzenli olarak almalı ve backup alınamadığında haberiniz olmasını sağlayan bir sistem kurmalısınız. Bazı kişilere göre Data Root Directory’i işletim sisteminden farklı bir diskte oluşturmak daha mantıklı gelebilir.Ama zamanla kullandığınız storage değişebilir(Çok sık başıma gelen bir olay) ve sizin sistem veritabanlarınızı taşımanızı gerektirebilir. Bu yüzden ben burda default ayarları kullanarak geçiyorum.

User database directory

Veritabanlarınızın mdf uzantılı data dosyalarını ilk oluşturulma esnasında default olarak nerede oluşturulacağı path’in bilgisini içeriyor. Burda yazan değer yeni veritabanı oluşturma esnasında otomatik olarak gelecektir fakat veritabanı oluştururken manual değiştirme şansınız da olacak. Burada DataDisk(F:)’yi seçmelisiniz. Çünkü SQL Server Failover Cluster’da data dosyalarının shared diskte durması gerekir.

User database log directory

Veritabanlarınızın ldf uzantılı log dosyalarını ilk oluşturulma esnasında default olarak nerede oluşturulacağı path’in bilgisini içeriyor. Burda yazan değer yeni veritabanı oluşturma esnasında otomatik olarak gelecektir fakat veritabanı oluştururken manual değiştirme şansınız da olacak.

Burada DataDisk(F:)’yi seçmelisiniz. Çünkü SQL Server Failover Cluster’da log dosyalarının shared diskte durması gerekir.

Temp DB directory

Tempdb’nin data dosyalarının nerede tutulacağını belirten path bilgisi

SQL Server Failover Cluster’da Tempdb lokal diskte tutalabilir. Bizde öyle yapacağız.

Temp DB log directory

Tempdb’nin log dosyalarının nerede tutulacağını belirten path bilgisi

SQL Server Failover Cluster’da Tempdb lokal diskte tutalabilir. Bizde öyle yapacağız.

Backup directory

Veritabanı backup’ı almak istediğinizde default olarak çıkacak path bilgisi

 

Aşağıda nasıl set ettiğimizi görebilirsiniz. “F:\” bizim DataDisk ismiyle yukarda tanımladığımız disk.

 

 

Tempdb ile ilgili aşağıdaki gibi bir uyarı veriyor.

 

You have specified a local directory C:\Tempdb as the tempdb data or log directory for a SQL Server cluster. To avoid possible failures during a failover, you must make sure that the same directory exists on each cluster node and grant read/write permission to SQL server service.

 

 

Bu uyarıda tempdb dosyalarının lokal bir disk üzerinde tanımlandığını ve 1 sunucudan diğer sunucuya failover işlemi gerçekleşirse diğer sunucuda da aynı path’in olduğundan ve bu path üzerinde sql server servis hesabının read ve write yetkisinin olduğundan emin olun diyor.

 

Bu yetkiyi aşağıdaki şekilde verebilirsiniz.

 

Tempdb klasörüne sağ tıklayarak properties diyoruz.

 

 

Sonra Security sekmesine gelip Edit diyoruz.

 

 

Bir sonraki ekranda aşağıdaki gibi Add diyoruz.

 

 

Bir sonraki ekranda öncelikle locations’a tıklayarak Entire Directory’nin altından kendi Active Directory’nizi seçmelisiniz. Örneğin “mydomain.lokal” kendi domainizi seçmelisiniz. Daha sonra enter the object names to select’in altındaki boşluğa active directory üzerinde tanımlı olan ve sql server servis hesabı yaptığınız kullanıcınızın adını girmelisiniz. Daha sonra checknames ve ardından ok’e tıklamalısınız.

 

 

Bir sonraki ekranda ilgili kullanıcınız seçili iken aşağıdaki ekrandan Read ve Write seçili iken ok’e tıklamalısınız.

 

 

Microsoft data,log ve tempdb dosyalarının ayrı diskte tutulmasını tavsiye ediyor. Ayrıca bazı veritabanları çok büyük olabilir ve daha fazla IO ihtiyacı olabilir. Bu yüzden veritabanını file group’lara ayırıp birden fazla data file oluşturup bu file’ları disklere yaymanız gerekebilir. “Veritabanı Oluşturmak Deyip Geçmeyin!” isimli makalemde ihtiyaca göre nasıl veritabanı oluşturulması gerektiği bilgisinin detaylarına ulaşabilirsiniz. Tempdb hakkında daha fazla bilgiyi de “Sistem veritabanları” isimli makalemde bulabilirsiniz.

 

Kuruluma geri dönerek Next ve Finish diyerek 1.sunucudaki kurulumu tamamlıyoruz ve 2.sunucuya geçiyoruz.

 

2.Sunucuda setup dosyasına sağ tıklayıp Run As Administrator diyerek kuruluma başlıyoruz.

 

Installation sekmesine gelip aşağıdaki gibi Add node to a SQL Server failover cluster’a tıklıyoruz.

 

 

Bir sonraki ekranda kurulum dosyasında bir güncelleme varsa yapıp yapmacağımızı soruyor. Use Microsoft Update to check for updates(recommended) yazan kısmı tıklarsak güncellemeleri kontrol eder. Biz kurulum yaptığımız sunucu internete kapalı olduğu için ve daha sonra da bu güncellemeyi yapabileceğimiz için tıklamadan next diyerek ilerliyoruz.

 

 

Bir sonraki ekranda gerekli kontrolleri yapıyor. İlk node’a kurulum yaparken aldığımız uyarıları alıyoruz. Next diyerek devam ediyoruz.

 

 

Bir sonraki ekranda product key’i soruyor. İlk sunucuda yaptığımız işlemi tekrarlıyoruz.

 

Bir sonraki ekranda I accept the licence terms’i işaretleyip next diyoruz.

 

Bir sonraki ekranda 1.sunucuda kurduğumuz cluster’a ait instance’ı aşağıdaki SQL Server instance name’den seçmemiz gerekiyor. Gerekli seçimi yaptıktan sonra next diyerek devam ediyoruz.

 

 

Bir sonraki ekranda karşınıza aşağıdaki gibi cluster network configuration gelecek. Sol taraftaki kutucuğu tıkladığınızda 1.sunucuda yaptığınız konfigurasyonu göreceksiniz. Next diyerek ilerlemeye devam ediyoruz.

 

 

Bir sonraki ekranda sql server servis hesaplarını belirleyeceğiz. SQL Server Database Engine ve SQL Server Agent servis hesapları için 1.sunucuda belirlediğimiz hesaplar listelenecek. Sadece password’lerini dolduruyoruz ve next diyerek ilerliyoruz.

 

 

Gelen son ekranda da install diyerek kurulumu tamamlıyoruz. “Yeni Kurulumda yapılması gereken konfigurasyonlar” isimli makalemdeki konfigurasyonları her iki sunucuda da gerçekleştirmelisiniz.

 

Fakat Configuration Manager’da portları set ederken yukarıdaki makaledeki gibi bütün IP’leri değil, sadece IPALL ve IPALL’un yukarısında set ettiğiniz IP’ye ait portu değiştirmelin ve servisi restart etmelisiniz.

 

Bu işlemler tamamlandıktan sonra sunucuismi\instanceismi ya da sunucuismi,port ya da IP\instanceismi ya da IP,port şeklinde bağlantı gerçekleştirebilirsiniz.

Loading

Bir yanıt yazın

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