Merhaba bu makale serimizde SQL Server 2019 Cluster kurulum adımlarını işliyor olacağız. Makale serimizin başlangıç aşamasında genel olarak SQL Server yüksek erişilebilirlik terimlerini ele alacağız. Makalemizde uygulayacağımız test ortamının tanıtımını yapıyor olacağız ve bu adımlara göre makalemizin ilerleyen aşamalarını gerçekleştiriyor olacağız.
Öncelikle SQL Cluster mimarisi bir yüksek erişilebilirlik mimarisidir. Bunun altını çizmekte yarar var. Yüksek Erişilebilirlik artık günümüzün olmazsa olmaz mimarileri arasındadır. Kurumlar, kuruluşlar artık birçok iş yükünü bilgisayar ortamı üzerine aktarmış durumdadır. Bu sistemler olamadan bu kurum ve kuruluşların var olma sebebi ortadan kalkacak desek abartmış olmayız. Bu nedenle bu sistemleri yapılandırırken sistemlerin sürekliliğinin sağlanması hizmet kesintisi olmaması adına yüksek erişilebilirlik mimarisi çok önem arz etmektedir.
Yüksek Erişilebilirlikle birlikte Sistemsel, Donanımsal, Doğal Afet ( Sel, Yangın, Deprem),Terör eylemlerine karşın kesintisiz çalışma öngörülmüştür. Buradan da anlayabileceğimiz gibi yüksek erişilebilirlik için öncelikle gerekli alt yapının kurulması ve bu alt yapı üzerindeki üst yapının devreye alınması ve yükün değişik bölgelere dağıtımı önem arz etmektedir.
Örnek olarak bir bölgede meydana gelecek olan yangın esnasında bir DataCenter devre dışı kalacak olur ise sistemlerin bundan etkilenmeden çalışması için yüksek erişilebilirlik mimarisinin farklı lokasyonlar üzerine dağıtılması gerekmektedir. Bu bir bakımı sürekli olarak duyduğumuz Disaster Recovery teriminin karşılığıdır.
Sql Server üzerindeki mimariler üzerine daha önce makaleler ele almıştık. Bu nedenle Always On, Log Shipping, Mirroring gibi yüksek erişilebilirlik senaryolarını anlatmadan pas geçiyor olacağım.
Cluster, temel manada benzer, ortak bir amaç için bir konfigürasyon yapılarak aynı görevi birlikte ya da yedekli olarak çalıştıran bir servistir. Cluster oluşturmak için en azından iki adet fiziksel veya sanal sunucuya ihtiyaç vardır. İhtiyaç olan hizmete göre çeşitli sayıda node’lar bir araya gelerek clusterları oluşturmaktadır. Bu bağlamda SQL Cluster mimarisi en az iki sunucu ile kurulup sunuculardan biri üzerinde meydana gelebilecek olan bir failover durumunda sistemin aksamadan çalışması üzerine inşa edilmiştir.
Yüksek erişilebilirlik yapısında, mirroring, log shipping faiolver clustering ve Always On seçeneklerinin bulunduğunu belirtmiştik. Bu yapılarda en az iki Sql Server sunucu bulunduğundan, lisanslama maliyeti de en az iki katına çıkmaktadır. Failover yapılarında genel olarak bilinmesi gereken her iki Sql Server’ın da Software Assurance kapsamında lisanslanmasının gerekliliğidir. Ancak, ikinci sunucu pasif modda ve bu sunucuya clientlar erişemiyor ise, ikinci sunucu için Sql lisansına gerek yoktur.
Kurulum öncesinde ortamımızı tanıyalım ve genel sistem gereksinimlerini öğrenelim. İlk etapta testlerimizi yapabilmemiz için ortamımızda aşağıdaki bilgilere sahip 3 adet sunucumuz var.
No | Sunucu Görevi | Etki alanı | İp adresi | Hotbird İp Adresi |
1 | Domain Controller (DC) | Rizasahan.lokal | 10.81.2.250 | – |
2 | SQL Node1 (SQL-SERVER1) | Rizasahan.lokal | 10.81.2.251 | 10.10.10.11 |
3 | SQL Node2 (SQL-SERVER2) | Rizasahan.lokal | 10.81.2.252 | 10.10.10.12 |
Sunucularımızın üzerine mimariyi inşa edebilmek için kurulan bileşen ve sunuculara verilen görevler aşağıdadır. Cluster ortamı için gerekli olan (CSV) Cluster Shared Volume alanı için elimde bir storage olmadığı için DC görevi gören sunucum üzerinde bu rolü barındıracağım. İdeal yapılarda zaten ortamda bir Storage olması gerekli.
No | Sunucu Görevi | Görevi |
1 | Domain Controller (DC) | Sunucumuz Domain Controller görevi görmekte. Cluster kurulumu sırasında gerekli olan hizmet hesabı AD sunucumuz üzerinden kullanılmakta. Ayrıca testleri yapabilmek için SQL Management Studio programı bu sunucumuz üzerinde. Son olarak ise yukarıda belirttiğimiz gibi sunucumuz üzerinde bize cluster kurulumu için gerekli olan disk ihtiyacını karşılamak adına ISCSI Target rolü kurulu durumda. |
2 | SQL Node1 (SQL-SERVER1) | Sunucumuz üzerinde Failover Cluster rolü ve SQL Server 2019 Cluster Mimaride kurulu durumda. |
3 | SQL Node2 (SQL-SERVER2) | Sunucumuz üzerinde Failover Cluster rolü ve SQL Server 2019 Cluster Mimaride kurulu durumda. |
Şeklimize bakacak olduğumuzda tüm detay bilgiler görünmekte. Yukarıdaki bilgilere ek olarak kurulacak olan cluster isim ve bilgileri aşağıdaki tablomuzda yer almakta.
No | Rol Bilgisi | İp Adresi |
1 | SQL Cluster Objesi (SAL-HA) | 10.81.2.249 |
2 | Windows Failover Cluster Objesi (MSSQL-CLUSTER) | 10.81.2.253 |
Kurulum ve yapılandırma öncesinde NODE’lar üzerinde aşağıdaki gereksinimleri sağlıyor olmamız gerekmekte.
Sunucuların Bölge ve Dil ayarlarının English ( United States ) olarak yapılandırılması.
NODE’lar üzerinde User Account Control kapatılmalıdır.
NODE’lar üzerindeki Windows güncellemelerinin tam olarak yapılmış olması.
Sunucular üzerinde Windows Firewall’un kapalı duduma getirilmesi.
Virus programının devre dışı bırakılması mümkün ise kurulu olmaması.
Bu bilgilerden sonra makalemizin adımlarına geçebiliriz. Öncelikle hızlı şekilde ortamımıza tekrardan göz atalım. Windows Server 2019 Datacenter versiyonu ile kurulu olan bir Domain Controller sunucumuz var. DC ismi ile RIZASAHAN.LOKAL domainine üye yapılmış durumda.
Domain Controller sunucumuzun ip adresi aşağıdaki gibi.
SQL Failover Cluster mimarisinde kullanılacak olan sunucularımız domaine üye olmuş durumda.
Kurulum sırasında kullanılacak olan servis hesabımız yine aşağıdaki gibi tanımlanmış durumda.
SQL-Server1 isimli sunucumuz domaine alınmış durumda üzerinde Windows Server 2019 Datacenter versiyonu kurulu durumda. Tabi bu yapının kurulabilmesi için Windows Server 2019 sunucunun Datacenter olması şart değil Standart versiyonda işimizi görmektedir.
Sunucumuz üzerinde 2 adet ağ kartı bulunmakta. Bunlardan bir tanesi sunucu network bloğu ile iletişim kurarken Hotbird isimli ağ kartımız ise cluster sunucularımızın kendi arasında iletişim kurmasını sağlayacaktır.
SQL-Server1 isimli sunucumuzun sunucu network ip bilgisi aşağıdaki gibidir.
SQL-Server1 isimli sunucumuzun hotbird network ip bilgisi aşağıdaki gibidir. Dns üzerinde bu network ip bloğunun kayıt atmaması için Register this conenction’s addresses in DNS seçeneği onay kutusu işaretli olmamalıdır.
Sunucumuzda Windows Firewall kapalı durumdadır. Ben biraz uğraşacağım açık kalsın derseniz, gerekli port bilgilerini Microsoft üzerindeki dokümanlardan elde edip sadece gerekli portları açabilirsiniz.
SQL-Server2 isimli sunucumuz domaine alınmış durumda üzerinde Windows Server 2019 Datacenter versiyonu kurulu durumda. Tabi bu yapının kurulabilmesi için Windows Server 2019 sunucunun Datacenter olması şart değil Standart versiyonda işimizi görmektedir.
Sunucumuz üzerinde 2 adet ağ kartı bulunmakta. Bunlardan bir tanesi sunucu network bloğu ile iletişim kurarken Hotbird isimli ağ kartımız ise cluster sunucularımızın kendi arasında iletişim kurmasını sağlayacaktır.
SQL-Server2 isimli sunucumuzun sunucu network ip bilgisi aşağıdaki gibidir.
SQL-Server1 isimli sunucumuzun hotbird network ip bilgisi aşağıdaki gibidir. Dns üzerinde bu network ip bloğunun kayıt atmaması için Register this conenction’s addresses in DNS seçeneği onay kutusu işaretli olmamalıdır.
Sunucumuzda Windows Firewall kapalı durumdadır. Ben biraz uğraşacağım açık kalsın derseniz, gerekli port bilgilerini Microsoft üzerindeki dokümanlardan elde edip sadece gerekli portları açabilirsiniz.
Bir test işlemi yaptığımızda sunucularımız arasında kendi networkü ve hotbird networkü üzerinde iletişimde bir sorun yok.
Bu ön tanıtım ve gerekli anlatımlardan sonra bize gerekli olan storage diskleri için DC sunucumuz üzerinde ISCSI Target rolümüzü kurarak adımlarımıza başlayalım. Domain Controller sunucumuz üzerinde Server Manager konsolumuz açalım. Burada Manageà Add Roles and Features kısmına tıklayalım. Bunu aşağıdaki resimde görülen iki alana tıklayarak yapabilmekteyiz.
Açılan ekranımızda bizi klasik kurulum sihirbazı karşılamaktadır. Next ile ilerleyelim.
Role-based or feature-based installation seçeneği seçiliyken Next ile ilerleyelim.
Kurulum yapacak olduğumuz ortamda mevcut serverimiz olduğundan bu seçiliyken Next ile ilerleyelim.
Bu ekranımızda File and ISCSI Services altında yer alan bileşenlerden ISCSI Target Server ve ISCSI Target Storage Provider bileşenlerini seçelim. ISCSI Target Server ve ISCSI Target Storage Provider servisi uzak yönetim imkânı sağlayıp seçilmesi zorunlu olan bir bileşen değildir. Bileşenlerimizi seçtikten sonra bir Next ile bir sonraki ekranımıza ilerleyebiliriz.
Bir özellik eklemeyeceğimiz için bu ekranı Next ile geçebiliriz.
Şu anda seçtiğimiz ve yüklenecek olan rol bileşenlerini gösteren biz özet ekran karşımızda duruyor. Restart the destination server automatically if required seçeneği ile eğer yeniden başlatma gerekirse bunu bileşenleri yüklemesinden sonra yapmasını sağlayabiliriz. Seçimi yapıp gelen uyarıyı Yes ile geçelim.
Install butonuna tıklayarak rolün kurulumunu başlatalım.
Kurulum işlemi başladı.
Kurulum işlemi tamamlandı. Close ile ekranımızı kapatabiliriz.
Kurulum işlemleri sonrasında Server Manager üzerinden File and Storage Services kabını açalım. Ekranımızda görüldüğü gibi ISCSI kabımız eklendi. Bundan sonraki yönetim işlemlerimizi bu ekran üzerinden yapıyor olacağız. Öncelikle yukarıda bahsetmiş olduğumuz ISCSI Target ekleme adımını ve disk ekleme adımlarını gerçekleştireceğiz. Bu işlem için ekranda yer alan To create ISCSI virtual disk, start the New ISCSI Virtual Disk Wizard linkine tıklayalım.
Gelen ekranımızda öncelikle sanal disklerimizin tutulacağı alanı belirlememiz gerekmektedir. Browse ile disklerimizin tutulacağı alanı gösterelim.
Bu ekranımızda oluşturulacak olan diskimize isim ve açıklama vermemiz gerekiyor. Bu işlemleri de aşağıdaki gibi yaptıktan sonra Next ile ilerleyelim.
Oluşturulacak olan sanal diskimize bir boyut belirlememiz gerekmektedir. Ben bu diskimi Cluster yapısında Quorum disk olarak yapılandıracağım için 1 gb gibi küçük bir alan belirliyorum. Bu aşamada oluşturulacak olan disk türünü belirleme imkanına sahibiz. Bu kullanım amacına göre değişir ancak ben test ortamımda olduğundan dinamik olarak büyüme tipini değiştirmiyorum. Bu aşamadan sonra Next ile sonraki adıma ilerleyelim.
Bu disklerimizi bağlayacak bir target oluşturma adımı geldi. Bu ekranda farklı bir seçim yapamadığımız için tek seçim olan New ISCSI target seçimini seçerek Next ile ilerleyelim.
Target’imize bir isim verip Next ile ilerleyelim.
Bu ekranımızda Target erişimi sağlayacak olan öğelere izin vermemiz gerekmektedir. Bu nedenle Add butonu ile bu işlemlere başlayalım.
Burada birkaç seçeneğimiz olmasına karşın ben ip adresine göre sınırlama yapacağım ve bir sonraki makalemde bu özelliği kullanacağım için iki adet Host sunucu ip adresime target üzerine erişim yetkisi vereceğim. Bu nedenle Type kısmından IP Address seçimini yapıp Target yapısına erişim sağlayacak olan Host sunucularımın ip adresini girip işlemimi OK ile tamamlıyorum. Burada güvenlik kıstaslarına göre FQDN, Mac adresi gibi daha derin detaylara girmeniz mümkün.
Ben hostlarımı ve üzerinde rolümüzü kurduğumuz sunucumu test açısından izinli ip adresleri listesine ekledim. Next ile sonraki ekrana ilerleyebiliriz.
Bu ekranımızda erişim için ayrıca farklı authencation seçimleri yapabiliriz. Biz bu özelliği kullanmayacağımız için varsayılan ayarlara müdahale etmeden Next ile sonraki adıma ilerliyoruz.
Yaptığımız yapılandırmanın bir özeti karşımıza geldi. Şimdi Create butonu ile disk ve target oluşumunu başlatalım.
İşlemler başarı ile tamamlandı. Close ile ekranımızı kapatalım.
Target’imiz şu anda ISCSI kabında gözükmektedir. Status kısmında üzerinde hiçbir bağlantı olmadığı gözüküyor. Şimdi ise bize gerekli olan CSV alanı için bir disk ekleme işlemi daha yapalım. TASK butonuna tıkladıktan sonra açılan New iSCSI Virtual Disk… açılır menüsüne tıklayalım.
Biz diskimiz varsayılan yol üzerinde oluşturacağımız için bu ekranı direkt olarak Next ile geçiyoruz.
Diskimize bir isim ve açıklama tanımlayıp Next ile sonraki adıma ilerleyelim.
CSV alanı için 20 gb bir alan işimi göreceği için bu şekilde 20 GB tanımı yaparak Next ile sonraki adıma ilerliyorum.
Mevcut olan bir targetimiz olduğu için yeni bir target tanımı yapmadan diskimizi bu target’a bağlı olarak bırakıp Next ile sonraki adıma ilerliyoruz.
Yapılacak olan işlemlerin bir özeti geldi. Create ile diskimizi oluşturma işlemini başlatalım.
İkinci diskimizde oluştu. Close ile ekranımızı kapatabiliriz.
Şu anda SQL Failover Cluster Mimarisi kurmak için bize gerekli olan iSCSI disklerimiz tanımlanmış oldu.
Bu aşamadan sonra bize gerekli olan Failover Cluster özelliğini kurmamız gerekmekte. Bu işlemleri SQL-Server1 ve SQL-Server2 sunucularımızda ayrı ayrı yapıyor olacağız. Öncelikle SQL-Server1 sunucumuz üzerinde işleme başlayalım. Server Manager konsolumuz açalım. Manage-> Add Roles and Features kısmına tıklayalım. Bunu aşağıdaki resimde görülen iki alana tıklayarak yapabilmekteyiz.
Gelen sihirbaz ekranını Next ile geçelim.
Biz bir RDS rolü yapılandırmayacağımız için Role-based or feature-based installation seçeneği seçiliyken Next ile ilerleyelim.
Kurulum yapacak olduğumuz ortamda mevcut serverimiz olduğundan bu seçiliyken Next ile ilerleyelim.
Bir Role kurma işlemi yapmayacağımı ve özellik ekleyeceğimiz için bu ekranda bir işlem yapmadan Next ile bir sonraki adıma ilerleyelim.
Bize gerekli olan Failover Clustering ve Multipath I/O özelliklerini seçerek Next ile sonraki adıma ilerleyelim.
Şu anda seçtiğimiz ve yüklenecek olan rol bileşenlerini gösteren biz özet ekran karşımızda duruyor. Restart the destination server automatically if required seçeneği ile eğer yeniden başlatma gerekirse bunu bileşenleri yüklemesinden sonra yapmasını sağlayabiliriz. Seçimi yapıp gelen uyarıyı Yes ile geçelim.
Install ile kurulum işlemlerini başlatalım.
Kurulum işlemi başladı.
Kurulumun tamamlanabilmesi için otomatik olarak yeniden başlatma işlemi gerçekleşiyor.
Sunucumuz yeniden başladı ve özelliklerimizin kurulumu tamamlandı. MPIO özelliğimiz kuruldu ve Denetim Masası üzerinde ikonu oluştu.
Failover Cluster Manager Konsolumuzda geliyor konsolumuzu açalım.
Şimdi ISCSI Initiator konsolumuzu açalım. Bu işlem sırasında stop servisin otomatik olarak start duruma gelmesi konusunda gelen uyarımızı Yes ile geçelim.
Açılan ekranımızda Domain Controller sunucumuz üzerinde tanımladığımı ve cluster kurulumu için kullanacağımız iSCSI disklerimize bağlantımızı gerçekleştirmemiz gerekmekte.
Target alanına Target sunucumuz yani Domain Controller ip adresimizi girelim ve Quick Connect… butonuna tıklayalım.
Target sunucumuz bulunarak bağlantı sağlandı. Done ile bu ekranımızı kapatabiliriz.
Bu ekranımızda OK ile işlemlerimizi tamamlayalım.
Sunucumuz üzerinde Disk Manager konsolumuza baktığımızda disklerimizin geldiğini görebiliyoruz.
Failover Cluster Manager konsolumuzda sorunsuz çalışır durumda.
Cluster üyesi olacak olan birinci sunucumuz üzerinde gerekli ön adım işlemlerini tamamladık. Şimdi ise SQL-Server2 isimli sunucumuz üzerinde Failover Clustering ve Multipath I/O özelliklerini kurmamız gerekiyor. Sunucumuz üzerinde Server Manager konsolumuz açalım. Manage-> Add Roles and Features kısmına tıklayalım. Bunu aşağıdaki resimde görülen iki alana tıklayarak yapabilmekteyiz.
Gelen sihirbaz ekranını Next ile geçelim.
Biz bir RDS rolü yapılandırmayacağımız için Role-based or feature-based installation seçeneği seçiliyken Next ile ilerleyelim.
Kurulum yapacak olduğumuz ortamda mevcut serverimiz olduğundan bu seçiliyken Next ile ilerleyelim.
Bir Role kurma işlemi yapmayacağımı ve özellik ekleyeceğimiz için bu ekranda bir işlem yapmadan Next ile bir sonraki adıma ilerleyelim.
Bize gerekli olan Failover Clustering ve Multipath I/O özelliklerini seçerek Next ile sonraki adıma ilerleyelim.
Şu anda seçtiğimiz ve yüklenecek olan rol bileşenlerini gösteren biz özet ekran karşımızda duruyor. Restart the destination server automatically if required seçeneği ile eğer yeniden başlatma gerekirse bunu bileşenleri yüklemesinden sonra yapmasını sağlayabiliriz. Seçimi yapıp gelen uyarıyı Yes ile geçelim.
Install butonuna tıklayarak özelliklerimizin kurulumu başlatalım.
Kurulum işlemi başladı. Close ile çıkarak arka planda kurulumun devam etmesini sağlayabilir veya otomatik olarak sistemin yeniden başlamasını bekleyebiliriz.
Gerekli kurulum tamamlandı, rollerin yapılandırılması için sistemimiz otomatik olarak yeniden başlıyor.
Sunucumuz yeniden başladı ve özelliklerimizin kurulumu tamamlandı. MPIO özelliğimiz kuruldu ve Denetim Masası üzerinde ikonu oluştu.
Şimdi ISCSI Initiator konsolumuzu açalım. Bu işlem sırasında stop servisin otomatik olarak start duruma gelmesi konusunda gelen uyarımızı Yes ile geçelim.
Açılan ekranımızda Domain Controller sunucumuz üzerinde tanımladığımı ve cluster kurulumu için kullanacağımız iSCSI disklerimize bağlantımızı gerçekleştirmemiz gerekmekte.
Target alanına Target sunucumuz yani Domain Controller ip adresimizi girelim ve Quick Connect… butonuna tıklayalım.
Target sunucumuz bulunarak bağlantı sağlandı. Done ile bu ekranımızı kapatabiliriz.
Bu ekranımızda OK ile işlemlerimizi tamamlayalım.
Sunucumuz üzerinde Disk Manager konsolumuza baktığımızda disklerimizin geldiğini görebiliyoruz.
Failover Cluster Manager konsolumuz sorunsuz olarak açılır durumda.
Buraya kadar olan adımları açıklayacak olursak, Öncelikle SQL Server Failover Clustering mimarisinin genel mantığını anlattık. Gerekli olan test kurulum ortamı hakkında detaylı açıklama yaparak şema ve tablo üzerinde detaylı ayarların paylaşımını yaptık. Bize Gerekli olan iSCSI target üzerindeki diskler için Domain Controller sunucumuz üzerinde, iSCSI Target rolünü kurarak gerekli olan ayarları yaptık. Sonrasında ise yine bize Cluster kurulumu sırasında gerekli olan Failover Clustering ve Mpio özelliklerinin kurulumlarını SQL-Server1 ve SQL-Server2 isimli sunucularımız üzerinde gerçekleştirdik. Buraya kadar olan bu kısımda makalemizin birinci kısmını tamamlamış oluyoruz. İkinci makalemizde ise iSCSI disklerin yapılandırılması ve cluster kurulumu için test işleminin yapılarak sonrasında Cluster kurulum aşamalarını ele alıyor olacağız. Sonraki makalemizde görüşmek dileğiyle.