Linux'ta failover kümesi örneğini çalıştırın

Şunlar için geçerlidir:Linux üzerinde SQL Server

Bu makale, Linux'ta bir SQL Server failover kümesi örneğinin (FCI) nasıl işletileceğini açıklar. Linux'ta SQL Server FCI oluşturmak için Linux'ta failover kümesi örneğini yapılandır (RHEL) bölümüne bakınız.

Mimari açıklaması

Küme katmanı, Pacemaker üzerine inşa edilmiş Red Hat Enterprise Linux (RHEL) HA eklentisine dayanmaktadır. Corosync ve Pacemaker, küme iletişimlerini ve kaynak yönetimini koordine ediyor. SQL Server örneği aynı anda tek bir düğümde aktiftir.

Aşağıdaki diyagramda SQL Server içeren bir Linux kümesindeki bileşenler gösterilmektedir.

Linux'ta paylaşılan bir disk SQL Server failover kümesinin diyagramı.

Küme yapılandırması, kaynak ajanı seçenekleri ve yönetim hakkında daha fazla bilgi için RHEL referans dokümantasyonu sayfasını ziyaret edin.

Failover

FCI'ler için yük devretme, Windows Server yük devretme kümesine (WSFC) benzer. FCI'yi barındıran düğüm bir tür hatayla karşılaşırsa, FCI otomatik olarak başka bir düğüme geçiş yapmalıdır. WSFC'nin aksine, tercih edilen sahipleri ayarlamanın bir yolu yoktur, bu yüzden Pacemaker, FCI'ye yeni ev sahipliği yapacak olan düğümü seçer.

Bazen FCI'yı manuel olarak başka bir düğüme devretmek isteyebilirsiniz. Süreç, WSFC üzerindeki FCI'lerle aynı değildir. WSFC'de, kaynakları rol seviyesinde devredersiniz. Pacemaker'da hareket ettirecek bir kaynak seçiyorsunuz ve tüm kısıtlamalar doğruysa diğer her şey de hareket eder.

Failover yöntemi Linux dağıtımına bağlıdır. Linux dağıtımınız için talimatları takip edin.

Manuel yük devretme (RHEL veya Ubuntu)

Red Hat Enterprise Linux (RHEL) veya Ubuntu sunucularında el ile yük devretme gerçekleştirmek için aşağıdaki adımları yürütebilirsiniz.

  1. Aşağıdaki komutu yazın:

    sudo pcs resource move <FCIResourceName> <NewHostNode>
    

    <FCIResourceName>SQL Server FCI için Pacemaker kaynak adıdır ve <NewHostNode> FCI'yı barındırmak istediğiniz küme düğümünün adıdır.

  2. El ile yük devretme sırasında Pacemaker, el ile taşınması için seçilen kaynak için bir konum kısıtlaması oluşturur. Bu kısıtlamayı görmek için sudo pcs constraintçalıştırın.

  3. Yük devretme tamamlandıktan sonra kısıtlamayı kaldırın:

    sudo pcs resource clear <FCIResourceName>
    

Manuel devralma (SLES)

Note

SQL Server 2025(17.x) tarihinden itibaren SUSE Linux Enterprise Server (SLES) desteklenmez. SQL Server 2022 (16.x) ve önceki sürümler için yalnızca SLES 15 desteklenmektedir.

SUSE Linux Enterprise Server'da (SLES), sql Server FCI'sinin yükünü el ile devretmek için migrate komutunu kullanın. Örneğin:

crm resource migrate <FCIResourceName> <NewHostNode>

<FCIResourceName> failover kümesi örneğinin kaynak adıdır ve <NewHostNode> yeni hedef ana bilgisayarın adıdır.

Bir failover kümesini izleyin

Geçerli küme durumunu görüntüleyin:

sudo pcs status

Küme ve kaynakların canlı durumunu görüntüleyin:

sudo crm_mon

Kaynak aracısı günlüklerini /var/log/cluster/corosync.log görüntüleyin.

Kümeye düğüm ekleme

  1. Her düğümün IP adresini denetleyin. Aşağıdaki betik, geçerli düğümünüzün IP adresini gösterir.

    ip addr show
    
  2. Yeni düğüm için 15 karakter veya daha az benzersiz bir isim gerekiyor. 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 örnek, /etc/hosts ile sqlfcivm1, sqlfcivm2, ve sqlfcivm3 adlı üç düğüm için eklemeleri gösterir.

    127.0.0.1      localhost localhost4 localhost4.localdomain4
    ::1            localhost localhost6 localhost6.localdomain6
    10.128.18.128  sqlfcivm1
    10.128.16.77   sqlfcivm2
    10.128.14.26   sqlfcivm3
    

    Dosya her düğümde aynı olmalıdır.

  3. Yeni düğümde SQL Server hizmetini durdurun.

  4. Veritabanı dosya dizinini paylaşılan konuma bağlamak için talimatları takip edin.

    NFS sunucusundan yükleyin nfs-utils:

    sudo yum -y install nfs-utils
    

    İstemcilerde ve NFS sunucusunda 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
    

    /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
    

    Değişikliklerin geçerli olması için mount -a çalıştırın.

  5. Yeni düğümde, 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
    

    Caution

    Parolanız varsayılan SQL Server password ilkesini izlemelidir. 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.

  6. Yeni düğümde 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
    

    Eğer yerleşik yüksek erişilebilirlik yapılandırması olmayan başka bir güvenlik duvarı kullanıyorsanız, Pacemaker'ın kümedeki diğer düğümlerle iletişim kurması için aşağıdaki portları açın:

    • TCP : bağlantı noktaları 2224, 3121, 21064
    • UDP: Bağlantı Noktası 5405
  7. Pacemaker paketlerini yeni düğüme yükleyin.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  8. Pacemaker ve Corosync paketleri yüklenirken oluşturulan varsayılan kullanıcının parolasını ayarlayın. Mevcut düğümler ile aynı parolayı kullanın.

    sudo passwd hacluster
    
  9. pcsd hizmetini ve Pacemaker'ı etkinleştirin ve başlatın. Yeni düğüm, yeniden başlatmadan sonra kümeye yeniden katılabilir. Yeni düğümde aşağıdaki komutu çalıştırın.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    sudo systemctl start pacemaker
    
  10. SQL Server için FCI kaynak aracısını yükleyin. Yeni düğümde aşağıdaki komutu çalıştırın.

    sudo yum install mssql-server-ha
    
  11. Kümedeki mevcut bir düğümde, yeni düğümü doğrulama yapın ve kümeye ekleyin:

    sudo pcs cluster auth <nodeName3> -u hacluster
    sudo pcs cluster node add <nodeName3>
    

Kümeden düğümleri kaldırma

Kümeden bir düğümü kaldırmak için aşağıdaki komutu çalıştırın:

sudo pcs cluster node remove <nodeName>

Kaynak izleme sıklığını değiştirin

sudo pcs resource op monitor interval=<interval>s <sqlResourceName>

Aşağıdaki örnek, kaynak için izleme aralığını 2 saniyeye mssqlha ayarlamaktadır:

sudo pcs resource op monitor interval=2s mssqlha

Troubleshoot

Küme sorunlarını giderdiğinizde, üç daemon'un küme kaynaklarını yönetmek için birlikte nasıl çalıştığını anlamanıza yardımcı olur.

Daemon Description
Corosync Küme düğümleri arasında çoğunluk üyeliği ve mesajlaşmayı sağlar.
Kalp pili Corosync'in üzerinde yer alır ve kaynaklar için durum yönetim sistemleri sağlar.
PCSD pcs araçlarıyla hem Pacemaker hem de Corosync'i yönetir.

pcs araçlarını kullanabilmek için PCSD'nin çalışıyor olması gerekir.

Geçerli küme durumu

sudo pcs status her düğüm için küme, çekirdek, düğümler, kaynaklar ve daemon durumu hakkında temel bilgileri döndürür.

Aşağıdaki örnek, sağlıklı bir Pacemaker quorum çıktısını göstermektedir:

Cluster name: MyAppSQL
Last updated: Thu Oct 31 12:00:00 2024  Last change: Thu Oct 31 11:00:00 2024 by root via crm_resource on sqlvmnode1
Stack: corosync
Current DC: sqlvmnode1  (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
3 nodes and 1 resource configured

Online: [ sqlvmnode1 sqlvmnode2 sqlvmnode3 ]

Full list of resources:

mssqlha (ocf::sql:fci): Started sqlvmnode1

PCSD Status:
sqlvmnode1: Online
sqlvmnode2: Online
sqlvmnode3: Online

Daemon Status:
corosync: active/disabled
pacemaker: active/enabled

Bu örnekte, partition with quorum düğümlerin çoğunluğunun çevrimiçi olduğu anlamına gelir. Küme, düğümlerin çoğunluğunu kaybederse, pcs statuspartition WITHOUT quorum döndürür ve tüm kaynaklar durdurulur.

Online: [sqlvmnode1 sqlvmnode2 sqlvmnode3], şu anda kümeye katılan tüm düğümlerin adını döndürür. Hiçbir düğüm katılmıyorsa, pcs statusOFFLINE: [<nodename>]döndürür.

PCSD Status her düğümün küme durumunu gösterir.

Düğümün çevrimdışı olmasının nedenleri

Bir düğüm çevrimdışı olduğunda aşağıdaki öğeleri denetleyin.

  • Güvenlik Duvarı

    Pacemaker'ın iletişim kurması için tüm düğümlerde aşağıdaki portları açın:

    • TCP : bağlantı noktaları 2224, 3121, 21064
    • UDP: Bağlantı Noktası 5405
  • Pacemaker veya Corosync hizmetleri çalışıyor

  • Düğüm iletişimi

  • Düğüm adı eşlemeleri