MSSQL SERVER ALWAYS_ON KURULUMU-2

Bu makale AlwaysOn Kurulumu makalesinin ikinci bölümü olarak Devam etmektedir.

Sql Server AlwaysOn yapısının kurulması için sql server enterprice sürümünün olması gerekmektedir. Burada sürüm derken enterprice core based sürümünü kullanmazsanız tüm cpu değerlerini kullanamazsınız. Bunun için microsoft veya başka bir siteden bu sürümü indirebilir deneme sürümü olarak kullanabilirsiniz. Ben Sql Server 2017 enterprice core based sürümünü kullanacağım.

SIFIRDAN HyperV-Windows Server-Active Directory-Failover Cluster-AlwaysOn KURULUMU makalesinde detaylı bir şekilde kurulum işlemlerini görebilirsiniz.

Sunucumun içerisine kopyalamış olduğum sql server’ı açıyorum setup dosyasına sağ tıklayıp yönetici olarak çalıştırıyorum.(13. Madde)

Aynı işlemleri S2 sunucusundada koordineli bir şekilde yapıyorum. Daha sonra önümüze gelen ekranda installation bölümünde New SQL Server stand-alone installation or add features to an existing installation kısmına tıklıyorum. Sıfırdan sunucu üzerinde instance kuracağımız için seçiyoruz.

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.

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.

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 server 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. Başka bir makalede bu konuya değinmiş olacağız. Aşağıdaki ekran görüntüsündeki açıklamaları ilgili makalede bulabiliriz.

İnstance root directory instanceların kurulumunun yapılacağı disk uzantısı görülmektedir. Bu bölümün C diski altında olmasında bir sakınca yoktur.

Next deyip bir sonraki ekran geçtiğimizde önümüze 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.

Grant Perfom Volume Maintenance.. bu alanda sql server yazacağı alanları kendi yönetiyor seçmemizde fayda vardır.

Not: Grant Perform Maintenance Task Privileges.. bölümü SQL Server’ın kurulum sürecinde belirli bir kullanıcıya veya gruba, bakım görevlerini gerçekleştirme yetkisi verme işlemidir. Bu seçeneğin amacı, bakım görevleri için gerekli olan izinleri vermek ve veritabanı yöneticilerinin (DBA) ya da başka bir kullanıcının SQL Server üzerinde belirli bakım işlemleri yapabilmesini sağlamaktır.

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. Ben herhangi bir account name belirlemiyorum. Şimdi oluşturmayıp ilerleyen aşamalarda Sql Server Configuration Manager ekranından yapmış olacağız.(ortak bir servis hesabının tanımlanmaması AlwaysOn kurulumunda hata mesajıyla karşılaşacağız.)

Bu işlemlerden sonra Services Accounts’ın yanından bulunan Collation kısmına geliyoruz bu yapı sql server’ın hangi dil yapısına göre sıralanacağını belirtiyoruz. Bu bölüme girdikten sonra Customize bölümünden hangi dil yapısını seçmek ve ne gibi ayarlamaların olmasını istersek onu seçebiliriz. Kuracağımız sql server için default dil seçeneğidir.

Bu işlemlerden sonra Next deyip bir sonraki aşamaya geçiyorum. Aynı işlemleri ikinci sunucum içinde yapıyorum.

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 sunucumu add current user diyerek ekliyorum. 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.

Kullanıcımızı ekledikten sonra şimdi ise Data Directories kısmına geçebiliriz. Bu ekranda system dosyalarının nerde oluşturulması gerektiğini ve herhangi bir database oluşturacağımız zaman mdf ldf ve backup’ların default olarak nereye alınacağını belirleyebiliriz. Büyük sistemlerde  bu yapı veritabanları restore edileceği veya backup alınacağı zaman elle farklı disk yolları belirtilebilir. Ben oluşturmuş olduğum disk yapılarını seçip next deyip ilerliyorum. Kısaca açıklayalım.

Data Root Directory: SQL Server’ın kurulacağı path. Default olarak Windows işletim sisteminin C’de olduğunda C’de olması tavsiye edilir. C diskinin ilgili system dosyaları yüzünden diskin şişmesi işletim sisteminin tamamen çalışmasını engelleyeceği için tercih edilmemelidir.

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

Performans açısından bu disk’lerin farklı disk yollarından şeçilmesi tavsiye edilmektedir.

Amaç yazma okuma işlemlerini ayrı diklere bölerek performans sağlamaktır. Fazla bir IO elde etmektir. Aynı disk üzerinde olsaydı yavaşlığa sebep olacaktı.

Bir sonraki kısım olan TempDB bölümüne geçiyoruz. Tempdb için diskimde yer olmadığı için tanımlayamadım default olarak bırakıyorum. Geçici olarak tablolar  ve memory üzerinde yapılmayacak büyük işlemlerin tutulduğu alandır.

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

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

Kurulum işlemim başladı bitmesini bekliyorum. Aşağıda bulunan ini uzantısından yapılan tüm işlemler görülebilir.

Kurulumum bittikten sonra sql server’ımın başarılı bir şekilde kurulduğunu görmüş oldum.

Sql server congifuration manager bölümünden sql server’ın kurulduğunu görmüş oluyoruz. Ayrıca sunucumuzda services bölümünden servisleri görebiliriz.

Kurulum işlemini bitirdikten sonra Sql Server’a bağlanabilmem için  SSMS arayüzünü kuruyorum. Bu arayüz microsoft’un sayfasındada indirilebilir ya da sql server’ı kuracağımız zaman installation ekranından da indirilebilir. Install SQL Server Management Tools bölümü bizi microsoft’un sayfasına yönlendirir.

Microsoft’un sayfasından indirim işlemlerini yaptıktan sonra SSMS kurulumuna geçiyorum. Install deyip kurulumuma başlıyorum.

Kurulum biraz uzun sürmekte.

SSMS kurulumu tamamlandı şimdi SSMS’den sql server’a bağlanalım.

Sql server kurulumunda S1\administrator’ı Windows login olarak eklediğimiz için onunla giriş yapabiliriz.

S2 sunucusunda da başarılı bir şekilde bağlanmış olduk. Koordineli bir şekilde yaptığımı en başta söylemiştim.

Şimdi sunucularımın arasında SSMS’den diğer sunucuya  bağlantı sağlaya biliyormuyum onu test edelim.

S1 sunucusundaki SSMS’den S2 sql server’a bağlanmaya çalışalım bağlanma sağlanacak mı.

Connect dedikten sonra bağlantının gerçekleştiğini görmüş oluyoruz. Sunucularımızın aynı cluster içerisinde olması şart değil. Zaten ilerleyen makalelerde failover cluster olmadan always on kurulumunu görmüş olacağız. Failover cluster işlemi herhangi bir sorun anında herhangi bir manuel bir müdahaleye gerek kalmadan sistemin kendini ikinci sunucuya devretmesi işlemidir. Bu yapı olmadan manuel bir şekilde yönlendirme işlemi gerçekleşmesi gerekmektedir.

Şimdi bir özet olarak S1 ve S2 sunucularımda sql server kurulumunu gerçekleştirdim AlwaysOn’a detaylı geçmeden önce hızlı bir şekilde failover cluster kurulumu yapayım failover cluster alwayson için şart olan bir durum. İki sunucumdada önceden failover cluster role’ün eklenmesi gerekmektedir. Ben role’leri Add roles and features kısmından ekledim sadece bu makalede failover cluster kurulumu yapacağım. Sıfırdan kurulum makalesi ve failover cluster makalesinde detaylı bir şekilde failover cluster role nasıl eklenir okumalısınız. Başta kurulum için yazmış olduğum maddelerden 11. Maddeyi gerçekleştiriyorum.

Sağlıklı bir failover cluster kurulumu için Failover Cluster Manager ekranında sağ tarafta bulunan  validate configuration bölümüne tıklamalıyız. Ben önceden test işlemlerimi yaptığım için  create cluster diyerek işlemlerime başlıyorum.

Failover cluster manager bölümüne gelip Create Cluster kısmını tıklıyorum.

Create Cluster Wizard ekranı açıldıktan sonra next deyip ilerliyorum.

Browse sekmesinden cluster’a dahil olacak sunucularımı seçiyorum. Aslında browse tıklamadan direk sunucu adlarımı enter server name kısmına yazıp add dersek selected server kısmında eklendiğini görmüş oluyoruz

Browse sekmesine tıkladıktan sonra önümüz gelen ekranda locations bölümünden domain yapımı seçiyorum.

Domain controler’ımı seçiyorum.

Aşağıdaki resimde görmüş olduğumuz gibi Selected servers or a Cluster  kısmından sunucularımı seçmiş oluyorum.

Next deyip ilerliyorum. Gelen ekranda failover cluster’a bir isim ve kullanılmayan bir ip vermek gerekiyor.

Cluster kontrollerimi yaptıktan sonra next deyip ilerliyorum.

Cluster kurulumuma başlamış oldum.

Kurulumum tamamlanmış oldu. Finish deyip işlemlerimi bitiriyorum.

Cluster’ın oluşturulduğunu başarılı bir şekilde görmüş olduk.

Aşağıdaki resimde oluşturmuş olduğumuz cluster’daki Nodes bölümünde sunucuları görmekteyiz.

Active directory’de oluşturduğumuz cluster objesininde geldiğini görmüş oluyoruz.

Daha sonra bu objeleri başka bir obje altına taşımış olacağız cluster’ın OU üzerinde yetkilendirme işlemini yapmış olacağız.

Yukarıdaki işlemleri yapmayıp hemen AlwaysOn kurulumuna geçebilirdim. Sizin de bazı adımları görmeniz ve önceki makaleleri okumadığınızı düşünerek başlangıç adımlarından bazılarını  yapmaya çalıştım Şimdi ise asıl konu başlığımız olan AlwaysOn kurulumuna.

Şimdi Always on Konfigürasyonuna geçmeden önce bazı ayarlamalar yapalım. Başlangıç bölümünde 3. Madde de Windows Server ve cumulative update güncelleştirmelerin yapılmasını söylemiştik. Sunucunun windows arama bölümünden aşağıdaki bölüm açılır kontrol işlemlerinin yapılması gerekmektedir. Ben windows güncelleştirmelerimi yapmadım.

Cumulative Update’lerin kontrol edilmesi lazım.

Eğer sql server sürümü aynı değilse aynı sürüme  getirilmesi gerekmektedir. Aynı olmamasıda bir sıkıntı teşkil etmez. Canlı sistemde sql 2016-2019 sürümlerinin senkron bir şekilde çalıştığını görmüş oldum. Microsoft’un sayfasında sql server CU’nun indirilmesi gerekmektedir. İndirdikten sonra indirdiğimiz uzantıyı çalıştırmak veya kurulum ekranından’dan yapabiliriz.

Not: Sql server’ın iso doyasında ilk kurulan sürümü RTM(Released To Manufacturing) sürümüdür. Service pack’lerinin yüklenmeden önceki halidir.

Kurulum adımlarının 16. Maddesindeki Active Directory üzerinde OU oluşturulması, SQL Serverların ve Cluster Account’un ilgili OU altına taşınması ve cluster objesinin OU üzerinde yetkilendirilmesi işlemini yapalım. Bu adımda teker teker yetkilendirme yerine delagasyon yapılması gerekmektedir. İlerleyen makalelerde bu yapıyı görmüş oluruz.

Domain controller üzerinde bir OU oluşturalım.

OU altına  tüm user’ları, sunucuları, cluster objemizi ve listener objemizi ekleyebiliriz.(Sunucularımızı, cluster objemizi ve oluşturacağımız listener’ı çek bırak yöntemiyle ilgili OU altına taşınabilir.)

Admin haklarına sahip olmayan sadece makinelerde local admin olmaya sahip olan bir hesap oluşturalım. Böyle kurulum yapılması tavsiye edilmektedir.

Başta database engine ve sql agent için bir user oluşturuyorum sonradan kullanmak için. Bu servis kullanıcısını S1 ve S2 sunucularıma administrator olarak ekliyorum.

Yukarıdaki kavramların ne olduğunu açıklayalım.

  • User must change password at next logon: Bu seçenek işaretlendiğinde, kullanıcı bir sonraki oturum açışında parolasını değiştirmek zorundadır.
  • User cannot change password: Bu seçenek işaretlendiğinde, kullanıcı kendi parolasını değiştiremez.
  • Password never expires: Bu seçenek işaretlendiğinde, kullanıcının parolası süresiz olarak geçerli kalır ve süresi dolmaz.
  • Account is disabled: Bu seçenek işaretlendiğinde, kullanıcı hesabı devre dışı bırakılır ve kullanıcı oturum açamaz.

Oluşturmuş olduğumuz user’ın sadece domain user olması tercih edilir.

Bu ayarlamaları yaptıktan sonra windows üzerinde local user add groups bölümüne girip S1 ve S2 sunucularında bu servis hesabını administrator olarak ekliyorum.

Bu servis hesabına  Local admin yetkisi veriyorum. Kurulum adımlarındaki 10. Madde 

Bu işlemlerin iki makine içinde yapılması gerekmektedir. Database engine ve agent için. Kurulum adımlarındaki 10. Madde 

Yukarıdaki işlemleri iki sunucum içinde yapıyorum.

Daha sonra domain controllera geliyorum oluşturmuş olduğum SQL OU içerisine computer sekmesinden önceden oluşturmuş olduğum cluster yapısını computer sekmesi altından çek bırak ile SQL OU içine taşıyorum.

Sunucularımı aynı OU altına koymam gerekiyor çünkü herhangi bir politika basımında tüm computerlar içerisinde sql computerlarımızında olmaması için. Policylerin sql server sunucularımıza basılmasını istemeye biliriz. Bu yüzden aşağıdaki yapı uygulanmaktadır.

Database engine ve sql agent için vermiş olduğum AlwaysonServis kullanıcısına Cluster Name(SQLCLS) üzerinde yetki veriyorum.

Kısacası AlwaysonServis servisi sql server üzerinde yetkili(sql configuration manager) ayrıca sql server kurulu olduğu bilgisayarlarda local admin yetkisi var ve aynı zamanda oluşturulan Cluster Name(SQLCLS) üzerinde yetkisi var.

Failover cluster oluşturmadan SQL adında olan OU üzerinde bulunan SQLCLS cluster ismine sağ tıklayıp properties kısmında bulunan security kısmında Add bölümüne tıklayarak sql server servis hesabının cluster üzerinde tam yetki verilmesi gerekmektedir.

Servis hesabının cluster üzerinde full control yetkisi verilmesi gerekmektedir.

Mevcut Cluster’ımızın(SQLCLS) OU üzerinde full control yetkisi verilmesi gerekmektedir. OU üzerine sağ tıklanır properties’dan  security tabına gelinir cluster ismi seçilir. Gerçek sistemlerde bu işlem OU üzerinde delegation yapılarak bu işlem tüm yetkilendirmeler yapılmaktadır.

Bu işlem yapılmasaydı listener oluştururken aşağıdaki gibi hata mesajıyla karşılaşabilirdik.

The WSFC cluster could not bring the Network Name resource with DNS name ‘AG_NAME’ online. The DNS name may have been taken or have a conflict with existing name services, or the WSFC cluster service may not be running or may be inaccessible. Use a different DNS name to resolve name conflicts, or check the WSFC cluster log for more information.

The attempt to create the network name and IP address for the listener failed. The WSFC service may not be running or may be inaccessible in its current state, or the values provided for the network name and IP address may be incorrect. Check the state of the WSFC cluster and validate the network name and IP address with the network administrator. (Microsoft SQL Server, Error: 19471)

Sql configuration manager ekranından alwayson’un aktif edilmesi, yukarıda kurmuş olduğumuz cluster ismimizin görülmesi gerekmektedir. Bir iki kurulumda hata aldığım için ben failover cluster’ı sql server’dan önce kuruyorum.

NOT: AlwaysOn’da AG’yi sildikten sonra AG altında tanımlı bir listener varsa dns management’dan listener obje’sininde silinmesi gerekmektedir.

Bu makaleden sonra SIFIRDAN ALWAYS_ON KURULUMU-3 makalesini okumalısınız.

“O, Kur’ân-ı Kerîm’i sana gerçeğin ta kendisi ve önceki ilâhî kitapları doğrulayıcı olarak parça parça indirmiştir. Tevrat ve İncil’i de indiren O’dur. Daha önce bu kitapları insanlara doğru yolu göstermek için, toptan indiren O’dur. Böylece O, hakla bâtılı ayıran bütün delilleri indirmiştir. Allah’ın âyetlerini inkâr edenler yok mu, onlar için şiddetli bir azap vardır. Allah, kudreti dâimâ üstün gelen ve haksızlardan inti­ka­mını alandır.”Âl-i İmrân3-4

Author: Yunus YÜCEL

1 thought on “MSSQL SERVER ALWAYS_ON KURULUMU-2

Bir yanıt yazın

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