Aracılığıyla paylaş


SQL Server için RHEL yük devretme kümesi örneğini (FCI) yapılandırma

Ş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.

Red Hat Enterprise Linux 7 paylaşılan disk SQL Server kümesi diyagramı.

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

  1. 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.

  2. 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.

  3. İ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.

  1. 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-server
    

    master hesabıyla SQL Server sa veritabanı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 STATE ile sağlık durumunu sorgulamak ve sp_server_diagnostics ile setupadmin'i çalıştırarak ALTER ANY LINKED SERVER, sp_dropserver ve sp_addserver'ün kaynak adını kullanarak FCI örneği adını güncelleştirmek için gereklidir.

  2. Birincil düğümde SQL Server'ı durdurun ve devre dışı bırakın.

  3. 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 show
    

    Her 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/hostsile vi düzenlemenizi sağlar.

    sudo vi /etc/hosts
    

    Aşağıdaki örnekte, /etc/hosts ve sqlfcivm1adlı iki düğüm için eklemeler içeren sqlfcivm2 gö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:

  1. nfs-utils yükleme

    sudo yum -y install nfs-utils
    
  2. rpcbind etkinleştir ve başlat

    sudo systemctl enable rpcbind && sudo systemctl start rpcbind
    
  3. nfs-server etkinleştir ve başlat

    sudo systemctl enable nfs-server && sudo systemctl start nfs-server
    
  4. Paylaşmak istediğiniz dizini dışarı aktarmak için /etc/exports dü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)
    
  5. Hisseleri dışa aktarma

    sudo exportfs -rav
    
  6. Yolların paylaşıldığını/dışarı aktarıldığını doğrulayın, NFS sunucusundan çalıştırın

    sudo showmount -e
    
  7. SELinux'ta özel durum ekleme

    sudo setsebool -P nfs_export_all_rw 1
    
  8. Sunucuyu 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.

  1. nfs-utils yükleme

    sudo yum -y install nfs-utils
    
  2. İ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
    
  3. İstemci makinelerinde NFS paylaşımlarını görebildiğinizi doğrulayın

    sudo showmount -e <IP OF NFS SERVER>
    
  4. 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:

Veritabanı dosyaları dizinini paylaşılan depolama alanına işaret etmek için bağlama

  1. 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/*
    exit
    
  2. Tüm küme düğümlerinde /etc/fstab dosyasını bağlama komutunu içerecek şekilde düzenleyin.

    <IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intr
    

    Aş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.

  1. Bağlı yolları güncellemek için sistemde mount -a komutunu çalıştırın.

  2. /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. mssql yerel 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/*
    exit
    
  3. SQL 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

  1. 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/passwd
    

    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.

  2. 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 --reload
    

    Yerleş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
  3. Her düğüme Pacemaker paketlerini yükleyin.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  4. Pacemaker 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 hacluster
    
  5. pcsd hizmetini 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 pacemaker
    
  6. SQL 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

  1. 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 --all
    
  2. SQL 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ğı ve 10.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 cfg
    

    Yapılandırma gönderildikten sonra SQL Server bir düğümde başlatılır.

  3. SQL Server'ın başlatıldığını doğrulayın.

    sudo pcs status
    

    Aş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
    
  • Sıfırdan Küme
  • SQL Server için RHEL yük devretme kümesi örneğini (FCI) çalıştırma