Bu makale önceki Failover Cluster Kurulum makalelerinde alt yapısını hazırlanmış olduğum Failover Cluster’ın son aşaması olan Sql server failover cluster kurulumunu ele almış olacağım. Failover clusterın ne olduğunu dair küçük bilgilendirme yaptıktan sonra uygulamalı bir şekilde makalemizi tamamlayalım. Failover cluster AlwaysOn teknolojinden önce kullanılan bir High Availability çözümüdür. Minumum 2 node’la oluşan bu yapı sunucuların birinde donanımsal ve yazılımsal olarak herhangi bir hata anında sistemin kendini sağlıklı olan sunucuya devretmesi işlemidir. Bu failover işlemi sonrasında kullanıcının geldiği dns name’in ip adresi sağlıklı olan sunucu ip adresi ile değiştirilmesi sonucu sistem kaldığı yerden devam etmesi sağlanır. Bu yapı sistemimizde kısa süreliğinede olsa kesintiye sebep olmaktadır. Zaten AlwaysOn mimarisi failover clusterdaki manuel bir şekilde müdahaleden dolayı geliştirilen yeni bir high availability çözümüdür.
Cluster ve sunucu bazlı çoğu işlemlerin aynı AlwaysOn kurulum adımları içinde gerekmekte. Sıfırdan AlwaysOn kurulum makalelerinde oluşturulan sql user’ın local bilgisayarlarda administrator gurubuna eklenmesi gerekmektedir.
Kurulum işlemine geçmeden önce Alwayson yapısıyla failover cluster yapısını karşılaştıralım. Şimdi bu adımları görelim.
- Always On AG‘de, ikincil (secondary) replikalar salt okunur modda yapılandırılıp raporlama ve yedekleme işlemleri için kullanılabilir. Failover Cluster‘da bu özellik yoktur. Cluster’a bağlı bir SQL Server failover edildiğinde, ikincil sunucu pasif durumdadır ve kullanılamaz.
- AG, 3 veya daha fazla replika (Primary + Secondary’ler) ile çalışabilirken, geleneksel Failover Cluster genellikle aktif-pasif (2-node) yapıdadır.
- Always On AG, Read-Only Routing ile salt okunur iş yükünü ikincil replikalara yönlendirebilir. Failover Cluster bu özelliği desteklemez, çünkü tüm SQL Server instance’ı failover eder, tek tek veritabanları değil.
- Alwayson yapısında oluşturulan login secondary sunucusunda da aynı SID ile oluşturulması gerekmektedir. SQL Server Failover Cluster Instance Login’ler instance seviyesindedir, veritabanı değil. Cluster failover olduğunda login’ler otomatik taşınır (çünkü tüm SQL instance’ı taşınır). Ek bir işlem gerekmez, login’ler master DB’de tutulduğu için yeni node’da da geçerlidir. Ancak, SID (Security Identifier) eşleşmesi gerekir.
1. Failover Cluster Yapısında Otomatik Taşınan Öğeler (Instance Seviyesinde)
- SQL Server servisi ve konfigürasyonu (Tüm instance ayarları)
- Login’ler (sys.sql_logins) (Master DB’de saklandığı için)
- SQL Agent Jobs (msdb’de saklanır)
- Linked Server tanımları (Master DB’de)
- Server-level triggers
- Credentials ve Proxy’ler (SQL Agent ile ilişkili)
- Resource Governor ayarları
Node seviyesinde tüm işlemler taşınmaz.
Sql Server Failover Cluster Kurulum işlemlerine başlayabiliriz.
Sunucumun içerisine kopyalamış olduğum sql server’ı açıyorum setup dosyasına sağ tıklayıp yönetici olarak çalıştırıyorum.

Installation bölümüne gelip New SQL Server failover cluster installation diyoruz.

Aşağıdaki ekranda ekranda specifiy a free edition veya elimizde herhangi bir lisans varsa enter the product key bölümünü seçiyoruz. Benim elimde bir lisans anahtarı olduğu için enter the product key bölümünü seçip next diyiyorum.

Gelen ekranda I accept the license terms diyiyoruz ve Next deyip bir sonraki adıma geçiyorum.

Test ortamında olduğumuz için ben güncellemeleri çekmeden Next ile ilerliyorum. Production ortamlarda güncellemelerin yapılması önemlidir. Use Microsoft Update to check for updates(recommended) seçeneğini seçerseniz gerekli güncellemeleri yapıyor.

Güncelleme işlemi yapmadığım için gelen uyarıyı Next ile geçiyorum.

Kurulum öncesi gereksinimler denetlendi. Eğer herhangi bir şey fail ederse ilgili hatayı düzeltip Re-run diyebilirsiniz. Sadece bir uyarımız var. Bunun nedeni ise testimizi sanal platform üzerindeki sunucular üzerinden yapmamızdan kaynaklı. Fiziksel sunucular kullanmanız durumunda, network kartlarından kaynaklı olan bu uyarıyı almayacaksınız. Next deyip bir sonraki aşamaya geçiyoruz.

Asıl bizim için önemli olan sql server yapısının şekillendiği aşağıdaki bölümde ihtiyaçlarınıza göre seçim yapmak gereksiz olan sunucularınızda kullanmayacağınız özelliklerin seçilmemesi gerekmektedir.
Burada karşımıza instance features kısmı ve shared features kısmı gelmekte.
İnstance features kuracağımız her instance için teker teker ayarlamalarımız yaptığımız kısım(instance bazlı bir özellik) ama shared features kısmı ise her instance’da ortak bulunmasını istediğimiz alan bu tamamen sizin sistemdeki ihtiyaçlarınıza göre şekillendirmeniz gereken bir yer. Shared features Sunucu bazlı kurulur. İnstance features ise sql bazlı yapılır. Herhangi bir instance features kısmında herhangi bir özelliğe tıkladığımızda sağ üst tarafta açıklaması gözüküyor.
Ben sadece sql server kurulumu yapacağım için sadece Database Engine Services bölümünü seçerek ilerliyorum daha sonra herhangi bir özelliğe ihtiyacımız olduğu zaman ekleme imkanı bize sunuyor sql server.
Database Engine Services, Sql Server Replication, Full Text and Semantic Extractions For Search, Data Quality Services bileşenlerini database engine services servisini seçtiğimizde geliyor.
Next deyip bir sonraki aşamaya geçiyoruz.

Gelen ekranda aşağıda görüldüğü gibi Network ismini ve Instance ismini soruyor.
Network ismine SQL-FL 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. AlwaysOn yapımızda Listener ip ve port numarasına bağlantı sağlanmaktadır.
Instance‘ın default instance adımı yoksa bizim belirlediğimiz özel bir instance adımı olması gerektiğini söylüyor biz burada named instance seçeneğini seçerek işlemlerimizi yapacağız. Ben named instance seçeneğini aktif ederek ismini TEST olarak belirliyorum. Next deyip bir sonraki adıma geçiyorum.

Cluster Resource Group ekranında herhangi bir değişiklik yapmadan Next ile sonraki adıma ilerliyoruz.

Cluster Disk Selection ekranında SQL Server Failover Cluster yapımızda kullanılabilir diskler görüntülenmekte. Failover Cluster yapımız için Quorum için ayırdığımız disklerimiz dışında SQL Server 2019 için 19 GB boyutunda SQLDISK diye ayrı bir volume oluşturmuştuk ve 9 GB boyutunda LOG diye ayrı bir volume atamıştık. Quorum disk dikkat edersek herhangi bir işlem yapmamıza izin vermiyor. Eğer disklerimiz tanımlanmamış tanımlayıp Refresh yaptığımızda aşağıdaki yapı gibi disklerimizin geldiğini görmüş olacağız. Aşağıdaki disklerimizi seçerek Next deyip bir sonraki adıma geçelim.

Next deyip bir sonraki aşamaya geçiyoruz. Next demeden önce hangi cluster yapısının iletişimde kullanıldığını görelim. Cluster and Client yapısı failover cluster, kullanıcı istekleri ve sunucuların ayakta olup olmadığını kontrol eden trafik, HBML ise sadece sunucuların ayakta olup olmadığını kontrol ettiği quorum disk yapımızın olmuş olduğu ikinci bir Ethernet adresi olarak karşımıza çıkmaktadır.

Gelen ekranda Cluster Network 1 ethernetimizin, yukarıda Failover cluster ve kullanıcılarımız için olduğunu söylemiştik. Aşağıda görmüş olduğumuz ip konfigürasyonu SQL-FL olarak cluster’a vermiş olduğumuz network name için kullanılmayan bir ip adresinin girilmesi gerekmektedir. Aşağıda cluster’a vermiş olduğumuz ip clusterdaki sunucularla aynı network’de olması gerekmektedir. Bu işlemleri tamamladıktan sonra Next deyip bir sonraki aşamaya geçiyoruz.

SQL Server Agent ve SQL Server Database Engine servislerinin sql server için güvenli bir şekilde çalışması için account name’lerinin active directory tarafında oluşturulan bir user olarak belirlenmesini bu user’ın sadece sql server servisleri için atanması gerekmektedir. Alwayson veya failover cluster gibi high availability seçeneklerini kullanacaksak yapının bu şekilde olması Microsoft tarafından önerilen yöntemdir. High availability seçeneklerini kullanmayıp sadece localde bir kurulum yapacaksanız bu servis yapıları önemsenmeden Next denilip bir sonraki aşamaya geçilebilir. İki sunucumunda ortak görebileceği bir account oluşturuyorum active directory sunucumda.

Bunun için şimdi active dirictory sunucumuzda bir kullanıcı oluşturalım. AD sunucuma giriyorum. Windows arama kısmına active directory users and Computers yazıyorum işaretlenmiş kısma tıklıyorum.

Gelen ekranda yunusyucel.com aktif dizinime tıklıyorum users>New>User sekmelerine tıklıyorum.

Gelen ekranda kullanıcımı oluşturuyorum ve next diyiyorum.

Kullanıcı şifresini belirledikten sonra next deyip bir sonraki adıma geçiyorum. Normalde sql agent ve database engine için farklı user’lar oluşturulması tavsiye edilir ama ben bir user oluşturuyorum.

Next finish deyip kullanıcımı oluşturuyorum. Artık SqlUser user’ımı oluşturdum. Şimdi tekrar sql server kurulumu yaptığım sununuculara gidip bu kullanıcı adı ve şifresini tanımlamakta. Bu user sadece sql server servisleri için var. Başka bir iş için kullanılmaz.
Kurulum ekranına tekrardan gelip browse tıkladıktan sonra active directory’de oluşturduğumuz kullanıcı ve şifremizi yazıp işlemlerimizi tamamlarız.

Aşağıdaki resimdeki collation bölümünden database engine için hangi dil yapısını seçmek ve ne gibi ayarlamaların olmasını istersek onu seçebiliriz. Dil uyumluluğu diyebiliriz.

Bir sonraki ekranda server configuration, data directories, TempDB ve FILESTREAM bölümlerini görmekteyiz. Bu bölümlerin ne işe yaradığını ne gibi konfigürasyonları yapmamız gerektiğini açıklayarak gidelim.
Hem Windows Authentication modda hem de sql Authentication modunda girmesini istiyorsak mixed modu seçmemiz gerekiyor. Ben kuracağım sql server Windows Authentication modundan hemen bağlanmak için S1 sunucumun şifresini girerek sql server map ediyorum. Mixed modda belirlediğimiz şifre kurulacak instance’daki sa şifresi. Bunu yapmazsak sql server’a SSMS üzerinden giriş yapamayız. Bu ekranda add current user bölümünde active directory’deki oluşturduğumuz bir kullanıcıyı veya S1 sunucusunda oluşturduğumuz local bir kullanıcıyada Windows modunda girmesi için ekleyebiliriz.

Data Directories tabına gelelim. Data Directories tabında log, db ve bileşenlerin kurulacağı yerler belirlenebilmektedir. Cluster kurulumu yaptığımız için buradaki bütün yollar otomatik olarak cluster diski üzerine konumlandı. Biz 2 disk kullanıyoruz normalde ideal olanı log, backup, db, temp gibi dosyalar için farklı diskler kullanmaktır.
Volume2 data dosyalarımızın oldu disk alanı. Volume1 de log alanı. Kendisi standart olarak belirlediğim volume altında geliyor benim birden fazla olduğu için ilgili volume altında oluşturabiliriz ben o yapıda oluşturdum.
Not:
Data Root Directory: SQL Server’ın kurulacağı path.
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.
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.
Backup directory: Veritabanı backup’ı almak istediğinizde default olarak çıkacak path bilgisi. Bunun shared disk olmasına gerek yoktur.
Sql server failover cluster yapımız için tüm yolların shared disk yapısı olması gerekmektedir.
Performans açısından bu disk’lerin farklı disk yollarından seçilmesi tavsiye edilmektedir.

Tempdb bölümünde ise disk yolumuzun belirtilmesi gerekiyor. Tempdb yapısında shared disk yapısının belirtilmesi şart değildir. Tempdb local disktete belirtilebilir. Sadece iki sunucuda da aynı disk altında aynı klasörün olması gerekmektedir. İkinci sunucumuzda local disk altında aynı yapıda temp klasörü oluşturduktan sonra sql server servis hesabının minumum okuma yazma yetkisinin ikinci sunucuda verilmesi gerekmektedir.

FILESTREAM tabında herhangi bir işlem yapmayıp next deyip bir sonraki adıma geçiyoruz.

Bu ekranımızda yapılacak olan işlemlerin bir özeti karşımıza geldi. Bu ekranda alt kısımda yer alan “Configuration file path” yolundaki .ini dosyasına erişerek bu kurulumlar sırasında hangi komutların işletileceğini görebiliriz. Bunlar otomasyonel kurulumlarda işimize yarayabilmektedir. Install butonuna tıklayarak kuruluma başlayalım.


Kurulum işleminin başarılı bir şekilde oluştuğunu görmüş oluyoruz.

Birinci sunucuda kurulumu tamamladıktan sonra failover cluster manager ekranından ilgili role’ün eklendiğini görüyoruz.

Bu işlemleri bitirdikten sonra şimdi sıra ikinci sunucumuz üzerinde bu kurulumu yapmada. S2 sunucumun içerisine kopyalamış olduğum sql server’ı açıyorum setup dosyasına sağ tıklayıp yönetici olarak çalıştırıyorum.
Installation sekmesine gelip aşağıdaki gibi Add node to a SQL Server failover cluster’a tıklıyoruz.

Benim elimde bir lisans anahtarı olduğu için enter the product key bölümünü seçip next diyiyorum.

Gelen ekranda I accept the license terms diyiyoruz ve next deyip bir sonraki adıma geçiyorum.

Bir sonraki ekranda Use Microsoft Update to check for updates seçeneğini seçmeyip next deyip ilerliyorum.

Aşağıdaki ekranda herhangi bir değişiklik yapmayıp next deyip ilerliyorum.

Gelen ekranda kurulum için başlangıç adımlarının doğru yapılıp yapılmadığına dair özet bir ekran geliyor. Uyarı verilen veya çarpı işareti gördüğümüz yerler için özel önlem alıp düzenleme yapabiliriz bende herhangi bir sorunla karşılaşmadığım için next deyip ilerliyorum.

Aşağıdaki resimde görüldüğü gibi ilk sunucumda kurmuş olduğum sql server failover cluster’ın otomatik geldiğini görmüş oluyoruz. Manuel olarak herhangi bir şey eklemedim.

Cluster Node Configuration ekranın da gerekli yapılandırmayı kontrol ettikten sonra Next diyerek devam ediyoruz. Aşağıdaki alan kendisi otomatik geliyor.
Cluster Network Configuration ekranın da ilk sunucuda tanımlamış olduğum ip adresini seçiyorum.

Aşağıdaki resimde SQL Server Agent ve SQL Server Database Engine servislerinin sql server için güvenli bir şekilde çalışması için account name’lerinin active directory tarafında oluşturmuş olduğum user’ımı tanımlıyorum. Service account’u ilk sunucumda da yapmıştım. Next deyip bir sonraki aşamaya geçiyorum.

Özet ekranı görüp inceledikten sonra install deyip kurulum işlemlerime başlıyorum.

Kurulum işlemimiz başlamış oldu.


Kurulum işlemimiz tamamlandıktan sonra Şimdi SSMS arayüzünde yapımızın oluşup oluşmadığını kontrol edelim.

Şimdi failover cluster yapısında bir database oluşturalım disk yollarını mdf ldf ve ikinci nodda nasıl bir senaryo alıyor ve data ve log’ları nereye alıyor bunu kontrol edelim.

New Database ekranın da Database name bölümünde oluşturacağımız Veritabanına bir İsim veriyoruz.

Database files bölümünde Patch kolonunda YUNUSYUCEL isimli Database Failover Cluster yapısı kurulumu sırasında yapılandırmış olduğumuz Cluster Shared Volume dizini üzerinde yapılandırma bilgisini görüyoruz.

Cluster instance’ın altında YUNUSYUCEL veritabanının oluştuğunu görmüş bulunmaktayız.

Volume2 Cluster Shared Volume dizini üzerinde YUNUSYUCEL isimli Data dosyasını görüyoruz.

TEST instance’ında Volume2 altında kurulduğunu görmekteyiz.

SQL-FL\TEST yapısında oluşturmuş olduğumuz database’in ilgili volume altında olduğunu görmüş oluyoruz.


S2 sunucusunda volume3 altında log dosyasını görebiliriz. S2 sunucusu shared volume üzerinde oluşan mdf ve ldf’i kendine restore eder.

Failover Cluster Manager ekranından hangi Node üzerinde cluster aktif onu görelim.

Herhangi bir failover anından sistem kendini S2 sunucusuna atmaktadır. DNS Manager kısmından SQL-FL ip adresinin manuel bir şekilde failover’dan sonra değiştirilmesi gerekmektedir.

Failover cluster kurulumunu başarılı bir şekilde gerçekleştirmiş olduk. 5 makaleden oluşan Failover Cluster makalelerimizde sıfırdan sunucu kurulumu, ikinci bir Ethernet ile sunucuların disk sunucusu ile konuşması, Quorum disk yapılandırılması, iSCSI disk yapılanması ile shared disk oluşturma ve sql server failover cluster kurulumu ile makaleleri sonlandırmış oldum. Başka bir makalede görüşmek üzeri.
İnkar edenler için çetin bir azap vardır. İman edip salih ameller işleyenler için ise bir bağışlanma ve büyük bir mükafat vardır. Fâtır-7
1 thought on “MSSQL Server Failover Cluster Kurulumu-5”