Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Linux üzerinde SQL Server
Bu kılavuz, Red Hat Enterprise Linux üzerinde SQL Server için iki düğümlü bir paylaşılan disk yük devretme kümesi oluşturmaya yönelik yönergeler sağlar. Kümeleme katmanı, Pacemakerüzerinde oluşturulan Red Hat Enterprise Linux (RHEL) HA eklentisi temel alır. SQL Server örneği bir düğümde veya diğerinde etkindir.
Not
Red Hat HA eklentisine ve belgelerine erişim için abonelik gerekir.
Aşağıdaki diyagramda gösterildiği gibi, depolama iki sunucuya sunulur. Kümeleme bileşenleri - Corosync ve Pacemaker - iletişim ve kaynak yönetimini koordine eder. Sunuculardan birinin depolama kaynaklarına ve SQL Server'a etkin bağlantısı vardır. Pacemaker bir hata algıladığında, kaynakların diğer düğüme taşınması kümeleme bileşenlerinin sorumluluğundadır.
Daha fazla bilgi için küme yapılandırması, kaynak aracıları seçenekleri ve yönetimi ile ilgili RHEL başvuru belgeleriniziyaret edin.
Bu noktada Pacemaker ile SQL Server tümleştirmesi, Windows üzerinde WSFC ile aynı değildir. SQL Server'ın içinden bakıldığında kümenin varlığı hakkında bilgi yoktur, tüm düzenlemeler dışarıdan içeriye doğrudur ve hizmet, Pacemaker tarafından bağımsız bir örnek olarak denetlenir. Ayrıca, sys.dm_os_cluster_nodes ve sys.dm_os_cluster_properties kümeleri için herhangi bir DMV kaydı bulunmayacak.
Bir dize sunucusu adına işaret eden ve IP'yi kullanmayan bir bağlantı dizesi kullanmak için, dns sunucularına sanal IP kaynağını oluşturmak için kullanılan IP'yi (aşağıdaki bölümlerde açıklandığı gibi) seçilen sunucu adıyla kaydetmeleri gerekir.
Aşağıdaki bölümlerde bir yük devretme kümesi çözümünü kurma adımları gösterilmektedir.
Önkoşullar
Aşağıdaki uçtan uca senaryoyu tamamlamak için iki düğüm kümesini dağıtmak için iki makineye ve NFS sunucusunu yapılandırmak için başka bir sunucuya ihtiyacınız vardır. Aşağıdaki adımlarda bu sunucuların nasıl yapılandırılacağı özetlenir.
Her küme düğümünde işletim sistemini ayarlama ve yapılandırma
İlk adım, küme düğümlerinde işletim sistemini yapılandırmaktır. Bu kılavuzda RHEL'i HA eklentisi için geçerli bir abonelikle kullanın.
Her küme düğümüne SQL Server yükleme ve yapılandırma
Sql Server'ı her iki düğüme de yükleyin ve kurun. Ayrıntılı yönergeler için bkz. linux sql server için yükleme kılavuzu.
Yapılandırma amacıyla bir düğümü birincil, diğerini ikincil olarak belirleyin. Aşağıdaki kılavuz için bu terimleri kullanın.
İkincil düğümde SQL Server'ı durdurun ve devre dışı bırakın.
Aşağıdaki örnek SQL Server'ı durdurur ve devre dışı bırakır:
sudo systemctl stop mssql-server sudo systemctl disable mssql-server
Not
Kurulum sırasında, SQL Server örneği için bir Sunucu Ana Anahtarı oluşturulur ve /var/opt/mssql/secrets/machine-keyyerleştirilir. Linux'ta SQL Server her zaman mssqladlı yerel bir hesap olarak çalışır. Yerel bir hesap olduğundan kimliği düğümler arasında paylaşılmamaktadır. Bu nedenle, her yerel mssql hesabının Sunucu Ana Anahtarını şifresini çözebilmesi için şifreleme anahtarını ana düğümden her ikincil düğüme kopyalamanız gerekir.
Birincil düğümde Pacemaker için bir SQL Server girişi oluşturun ve
sp_server_diagnosticsçalıştırmak için giriş izni verin. Pacemaker, hangi düğümün SQL Server çalıştırdığını doğrulamak için bu hesabı kullanır.sudo systemctl start mssql-servermasterhesabıyla SQL Serversaveritabanına bağlanın ve aşağıdakileri çalıştırın:USE [master]; GO CREATE LOGIN [<loginName>] WITH PASSWORD = N'<password>'; ALTER SERVER ROLE [sysadmin] ADD MEMBER [<loginName>];Dikkat
Parolanız, SQL Server varsayılanparola ilkesine uygun olmalıdır. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.
Alternatif olarak, izinleri daha ayrıntılı bir düzeyde ayarlayabilirsiniz. Pacemaker oturum açma işlemi,
VIEW SERVER STATEile sağlık durumunu sorgulamak vesp_server_diagnosticsilesetupadmin'i çalıştırarakALTER ANY LINKED SERVER,sp_dropservervesp_addserver'ün kaynak adını kullanarak FCI örneği adını güncelleştirmek için gereklidir.Birincil düğümde SQL Server'ı durdurun ve devre dışı bırakın.
Her küme düğümü için hosts dosyasını yapılandırın. Konak dosyası, her küme düğümünün IP adresini ve adını içermelidir.
Her düğümün IP adresini denetleyin. Aşağıdaki betik, geçerli düğümünüzün IP adresini gösterir.
sudo ip addr showHer düğümde bilgisayar adını ayarlayın. Her düğüme 15 karakter veya daha az benzersiz bir ad verin. bilgisayar adını
/etc/hostsekleyerek ayarlayın. Aşağıdaki betik,/etc/hostsilevidüzenlemenizi sağlar.sudo vi /etc/hostsAşağıdaki örnekte,
/etc/hostsvesqlfcivm1adlı iki düğüm için eklemeler içerensqlfcivm2gösterilmektedir.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2
Sonraki bölümde paylaşılan depolamayı yapılandıracak ve veritabanı dosyalarınızı bu depolama alanına taşıyacaksınız.
Paylaşılan depolamayı yapılandırma ve veritabanı dosyalarını taşıma
Paylaşılan depolama sağlamak için çeşitli çözümler vardır. Bu kılavuzda NFS ile paylaşılan depolamanın yapılandırılması gösterilmektedir. En iyi yöntemlerin izlenmesini ve NFS'nin güvenliğini sağlamak için Kerberos'u kullanmanızı öneririz. Örnek için bkz. RHEL7:NFS ağ paylaşımlarına erişimi denetlemek için Kerberos kullanma.
Uyarı
NFS'nin güvenliğini sağlamazsanız, ağınıza erişebilen ve bir SQL düğümünün IP adresini sahtekarlık edebilen herkes veri dosyalarınıza erişebilir. Her zaman olduğu gibi, üretim ortamında kullanmadan önce sisteminizi tehdit modeli yaptığınızdan emin olun. Başka bir depolama seçeneği de SMB dosya paylaşımını kullanmaktır.
NFS ile paylaşılan depolamayı yapılandırma
Önemli
Sürüm <4'e sahip bir NFS sunucusunda veritabanı dosyalarını barındırmak bu sürümde desteklenmez. Bu, paylaşılan disk yük devretme kümelemesi ve kümelenmemiş örneklerdeki veritabanları için NFS kullanmayı da içerir. Gelecek sürümlerde diğer NFS sunucu sürümlerini etkinleştirmeye çalışıyoruz.
NFS Sunucusu'nda aşağıdaki adımları gerçekleştirin:
nfs-utilsyüklemesudo yum -y install nfs-utilsrpcbindetkinleştir ve başlatsudo systemctl enable rpcbind && sudo systemctl start rpcbindnfs-serveretkinleştir ve başlatsudo systemctl enable nfs-server && sudo systemctl start nfs-serverPaylaşmak istediğiniz dizini dışarı aktarmak için
/etc/exportsdüzenleyin. İstediğiniz her paylaşım için bir satıra ihtiyacınız vardır. Mesela:/mnt/nfs 10.8.8.0/24(rw,sync,no_subtree_check,no_root_squash)Hisseleri dışa aktarma
sudo exportfs -ravYolların paylaşıldığını/dışarı aktarıldığını doğrulayın, NFS sunucusundan çalıştırın
sudo showmount -eSELinux'ta özel durum ekleme
sudo setsebool -P nfs_export_all_rw 1Sunucuyu güvenlik duvarını açın.
sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --reload
Tüm küme düğümlerini NFS paylaşılan depolama alanına bağlanacak şekilde yapılandırma
Tüm küme düğümlerinde aşağıdaki adımları uygulayın.
nfs-utilsyüklemesudo yum -y install nfs-utilsİstemcilerde ve NFS sunucusunda güvenlik duvarını açma
sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --reloadİstemci makinelerinde NFS paylaşımlarını görebildiğinizi doğrulayın
sudo showmount -e <IP OF NFS SERVER>Bu adımları tüm küme düğümlerinde yineleyin.
NFS kullanma hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:
- NFS sunucularını ve güvenlik duvarını | Stack Exchange
- NFS Birimi Bağlama | Linux Ağ Yöneticileri Kılavuzu
- NFS sunucu yapılandırması | Red Hat Müşteri Portalı
Veritabanı dosyaları dizinini paylaşılan depolama alanına işaret etmek için bağlama
Yalnızcabirincil düğümde veritabanı dosyalarını geçici bir konuma kaydedin. Aşağıdaki betik, yeni bir geçici dizin oluşturur, veritabanı dosyalarını yeni dizine kopyalar ve eski veritabanı dosyalarını kaldırır. SQL Server
mssqlyerel kullanıcı olarak çalıştığından, bağlı paylaşıma veri aktarımından sonra yerel kullanıcının paylaşıma okuma-yazma erişimi olduğundan emin olmanız gerekir.sudo su mssql mkdir /var/opt/mssql/tmp cp /var/opt/mssql/data/* /var/opt/mssql/tmp rm /var/opt/mssql/data/* exitTüm küme düğümlerinde
/etc/fstabdosyasını bağlama komutunu içerecek şekilde düzenleyin.<IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intrAşağıdaki kod, düzenlemenin bir örneğini gösterir.
10.8.8.0:/mnt/nfs /var/opt/mssql/data nfs timeo=14,intr
Not
Burada önerilen şekilde bir Dosya Sistemi (FS) kaynağı kullanıyorsanız ,/etc/fstab içinde bağlama komutunu korumanız gerekmez. Pacemaker, FS kümelenmiş kaynağı başlattığında klasörü bağlar. Çit yardımıyla, FS'nin asla iki kez monte edilmeyeceğinden emin olunacaktır.
Bağlı yolları güncellemek için sistemde
mount -akomutunu çalıştırın./var/opt/mssql/tmp'a kaydettiğiniz veritabanı ve günlük dosyalarını, yeni bağlanan/var/opt/mssql/datapaylaşımına kopyalayın. Bu adımın yalnızca birincil düğümüzerinde yapılması gerekir.mssqlyerel kullanıcıya okuma yazma izinleri verdiğinizden emin olun.sudo chown mssql /var/opt/mssql/data sudo chgrp mssql /var/opt/mssql/data sudo su mssql cp /var/opt/mssql/tmp/* /var/opt/mssql/data/ rm /var/opt/mssql/tmp/* exitSQL Server'ın yeni dosya yolu ile başarıyla başlatıldığını doğrulayın. Bunu her düğümde yapın. Bu noktada SQL Server'ı aynı anda yalnızca bir düğüm çalıştırmalıdır. Her ikisi de veri dosyalarına aynı anda erişmeye çalışacağından aynı anda çalışamaz (her iki düğümde de YANLıŞLıKLA SQL Server'ı başlatmayı önlemek için, paylaşımın farklı düğümler tarafından iki kez bağlanmadığından emin olmak için bir Dosya Sistemi küme kaynağı kullanın). Aşağıdaki komutlar SQL Server'ı başlatır, durumu denetler ve SQL Server'ı durdurur.
sudo systemctl start mssql-server sudo systemctl status mssql-server sudo systemctl stop mssql-server
Bu noktada, SQL Server'ın her iki örneği de paylaşılan depolamadaki veritabanı dosyalarıyla çalışacak şekilde yapılandırılır. Sonraki adım Pacemaker için SQL Server'ı yapılandırmaktır.
Her küme düğümüne Pacemaker'ı yükleme ve yapılandırma
Her iki küme düğümünde de Pacemaker oturum açma bilgilerinin SQL Server kullanıcı adını ve parolasını depolamak için bir dosya oluşturun. Aşağıdaki komut bu dosyayı oluşturur ve doldurur:
sudo touch /var/opt/mssql/secrets/passwd echo '<loginName>' | sudo tee -a /var/opt/mssql/secrets/passwd echo '<password>' | sudo tee -a /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdDikkat
Parolanız, SQL Server varsayılanparola ilkesine uygun olmalıdır. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.
Her iki küme düğümünde de Pacemaker güvenlik duvarı bağlantı noktalarını açın. Bu bağlantı noktalarını
firewalldile açmak için aşağıdaki komutu çalıştırın:sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reloadYerleşik yüksek kullanılabilirlik yapılandırmasına sahip olmayan başka bir güvenlik duvarı kullanıyorsanız Pacemaker'ın kümedeki diğer düğümlerle iletişim kurabilmesi için aşağıdaki bağlantı noktalarının açılması gerekir:
- TCP : bağlantı noktaları 2224, 3121, 21064
- UDP: Bağlantı Noktası 5405
Her düğüme Pacemaker paketlerini yükleyin.
sudo yum install pacemaker pcs fence-agents-all resource-agentsPacemaker ve Corosync paketleri yüklenirken oluşturulan varsayılan kullanıcının parolasını ayarlayın. Her iki düğümde de aynı parolayı kullanın.
sudo passwd haclusterpcsdhizmetini ve Pacemaker'ı etkinleştirin ve başlatın. Bu, düğümlerin yeniden başlatmadan sonra kümeye yeniden katılmasını sağlar. Her iki düğümde de aşağıdaki komutu çalıştırın.sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemakerSQL Server için FCI kaynak aracısını yükleyin. Her iki düğümde de aşağıdaki komutları çalıştırın.
sudo yum install mssql-server-ha
Eskrim aracısını yapılandırma
STONITH cihazı bir eskrim aracısı sağlar. Azure'da Red Hat Enterprise Linux üzerinde Pacemaker'ı ayarlama, Azure'da bu küme için STONITH cihazının nasıl oluşturulacağını gösteren bir örnek sağlar. Ortamınız için yönergeleri değiştirin.
Kümeyi oluşturma
Düğümlerden birinde kümeyi oluşturun.
sudo pcs cluster auth <nodeName1 nodeName2 ...> -u hacluster sudo pcs cluster setup --name <clusterName> <nodeName1 nodeName2 ...> sudo pcs cluster start --allSQL Server, Dosya Sistemi ve sanal IP kaynakları için küme kaynaklarını yapılandırın ve yapılandırmayı kümeye gönderin. Aşağıdaki bilgilere ihtiyacınız vardır:
- SQL Server Kaynak Adı: Kümelenmiş SQL Server kaynağının adı.
- Kayan IP Kaynağı Adı: Sanal IP adresi kaynağının adı.
- IP Adresi: İstemcilerin SQL Server'ın kümelenmiş örneğine bağlanmak için kullandığı IP adresi.
- Dosya Sistemi Kaynak Adı: Dosya Sistemi kaynağının adı.
- cihaz: NFS paylaşım yolu
- cihaz: Bağlandığı paylaşımdaki yerel yol
-
fstype: Dosya paylaşımı türü (yani,
nfs)
Ortamınız için aşağıdaki betikten değerleri güncelleştirin. Küme hizmetini yapılandırmak ve başlatmak için bir düğümde çalıştırın.
sudo pcs cluster cib cfg sudo pcs -f cfg resource create <sqlServerResourceName> ocf:mssql:fci sudo pcs -f cfg resource create <floatingIPResourceName> ocf:heartbeat:IPaddr2 ip=<ip Address> sudo pcs -f cfg resource create <fileShareResourceName> Filesystem device=<networkPath> directory=<localPath> fstype=<fileShareType> sudo pcs -f cfg constraint colocation add <virtualIPResourceName> <sqlResourceName> sudo pcs -f cfg constraint colocation add <fileShareResourceName> <sqlResourceName> sudo pcs cluster cib-push cfgÖrneğin, aşağıdaki betik
mssqlhaadlı bir SQL Server kümelenmiş kaynağı ve10.0.0.99IP adresine sahip kayan bir IP kaynağı oluşturur. Ayrıca bir Dosya Sistemi kaynağı oluşturur ve tüm kaynakların SQL kaynağıyla aynı düğümde birlikte bulunması için kısıtlamalar ekler.sudo pcs cluster cib cfg sudo pcs -f cfg resource create mssqlha ocf:mssql:fci sudo pcs -f cfg resource create virtualip ocf:heartbeat:IPaddr2 ip=10.0.0.99 sudo pcs -f cfg resource create fs Filesystem device="10.8.8.0:/mnt/nfs" directory="/var/opt/mssql/data" fstype="nfs" sudo pcs -f cfg constraint colocation add virtualip mssqlha sudo pcs -f cfg constraint colocation add fs mssqlha sudo pcs cluster cib-push cfgYapılandırma gönderildikten sonra SQL Server bir düğümde başlatılır.
SQL Server'ın başlatıldığını doğrulayın.
sudo pcs statusAşağıdaki örnekte Pacemaker'ın SQL Server'ın kümelenmiş örneğini başarıyla başlattığında elde edilen sonuçlar gösterilmektedir.
fs (ocf::heartbeat:Filesystem): Started sqlfcivm1 virtualip (ocf::heartbeat:IPaddr2): Started sqlfcivm1 mssqlha (ocf::mssql:fci): Started sqlfcivm1 PCSD Status: sqlfcivm1: Online sqlfcivm2: Online Daemon Status: corosync: active/disabled pacemaker: active/enabled pcsd: active/enabled
İlgili içerik
- Sıfırdan Küme
- SQL Server için RHEL yük devretme kümesi örneğini (FCI) çalıştırma