Konfigurace instance failover clusteru v systému Linux (RHEL)

Platí pro:SQL Server na Linuxu

Instance dvouuzlového clusteru SQL Serveru se sdíleným diskem a podporou převzetí služeb při selhání poskytuje redundanci na úrovni serveru pro zajištění vysoké dostupnosti. V tomto kurzu se naučíte, jak vytvořit instanci clusteru pro převzetí služeb při selhání se dvěma uzly SQL Serveru na Linuxu. Mezi konkrétní kroky, které dokončíte, patří:

  • Nastavení a konfigurace Linuxu
  • Instalace a konfigurace SQL Serveru
  • Nakonfigurujte soubor hosts
  • Konfigurace sdíleného úložiště a přesunutí databázových souborů
  • Instalace a konfigurace Pacemakeru na každém uzlu clusteru
  • Nakonfigurujte instanci clusteru pro převzetí služeb při selhání

Tento článek vysvětluje, jak vytvořit instanci dvouuzlového clusteru pro převzetí služeb při selhání se sdíleným diskem pro SQL Server. Tento článek obsahuje pokyny a příklady skriptů pro Red Hat Enterprise Linux (RHEL). Distribuce Ubuntu jsou podobné RHEL, takže příklady skriptů budou normálně fungovat i na Ubuntu.

Pro konceptuální informace viz instance clusterů při failoveru na Linuxu.

Předpoklady

K dokončení následujícího kompletního scénáře potřebujete dva počítače pro nasazení clusteru se dvěma uzly a dalším serverem pro úložiště. Následující kroky popisují, jak budou tyto servery nakonfigurované.

Nastavení a konfigurace Linuxu

Prvním krokem je konfigurace operačního systému na uzlech clusteru. Na každém uzlu v clusteru nakonfigurujte linuxovou distribuci. Na obou uzlech použijte stejnou distribuci a verzi. Použijte jednu nebo druhou z následujících distribucí:

  • RHEL s platným předplatným rozšíření HA

Instalace a konfigurace SQL Serveru

  1. Instalace a nastavení SQL Serveru na obou uzlech Podrobné pokyny najdete v tématu Pokyny k instalaci SQL Serveru v Linuxu.

  2. Označte jeden uzel jako primární a druhý jako sekundární pro účely konfigurace. Použijte tyto termíny při používání tohoto průvodce.

  3. Na sekundárním uzlu zastavte a zakažte SQL Server. Následující příklad zastaví a zakáže SQL Server:

    sudo systemctl stop mssql-server
    sudo systemctl disable mssql-server
    

    Note

    V době nastavení se pro instanci SQL Serveru vygeneruje hlavní klíč serveru a umístí se do var/opt/mssql/secrets/machine-key. V Linuxu SQL Server vždy běží jako místní účet s názvem mssql. Vzhledem k tomu, že se jedná o místní účet, jeho identita se nesdílí napříč uzly. Proto je potřeba zkopírovat šifrovací klíč z primárního uzlu do každého sekundárního uzlu, aby k němu každý místní mssql účet měl přístup k dešifrování hlavního klíče serveru.

  4. Na primárním uzlu vytvořte přihlášení k SQL Serveru pro Pacemaker a udělte přihlašovací oprávnění ke spuštění sp_server_diagnostics. Pacemaker používá tento účet k ověření, na kterém uzlu běží SQL Server.

    sudo systemctl start mssql-server
    

    Připojte se k databázi sql Serveru master pomocí účtu sa a spusťte následující příkaz:

    USE master;
    GO
    
    CREATE LOGIN [<loginName>]
        WITH PASSWORD = N'<password>';
    
    ALTER SERVER ROLE [sysadmin] ADD MEMBER [<loginName>];
    

    Caution

    Vaše heslo by mělo splňovat výchozí zásady hesla pro SQL Server. Ve výchozím nastavení musí heslo obsahovat alespoň osm znaků a musí obsahovat znaky ze tří z následujících čtyř sad: velká písmena, malá písmena, číslice se základem 10 a symboly. Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.

    Případně můžete oprávnění nastavit na podrobnější úrovni. Přihlášení Pacemakeru vyžaduje VIEW SERVER STATE dotazování na stav sp_server_diagnosticszdraví pomocí , setupadmin, a ALTER ANY LINKED SERVER aktualizaci názvu instance FCI názvem zdroje, spuštěním sp_dropserver a sp_addserver.

  5. Na primárním uzlu zastavte a zakažte SQL Server.

Nakonfigurujte soubor hosts

Na každém uzlu clusteru nakonfigurujte soubor hostitelů. Soubor hostitelů musí obsahovat IP adresu a název každého uzlu clusteru.

  1. Zkontrolujte IP adresu pro každý uzel. Následující skript ukazuje IP adresu vašeho aktuálního uzlu.

    sudo ip addr show
    
  2. Nastavte název počítače na každém uzlu. Dejte každému uzlu jedinečný název, který je 15 znaků nebo méně. Nastavte název počítače tak, že ho přidáte do /etc/hosts. Následující skript umožňuje upravovat /etc/hosts pomocí vi.

    sudo vi /etc/hosts
    

    Následující příklad ukazuje /etc/hosts s doplňky pro dva uzly pojmenované sqlfcivm1 a sqlfcivm2.

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

Konfigurace úložiště a přesouvání databázových souborů

Potřebujete poskytnout úložiště, ke kterému mají oba uzly přístup. Můžete použít iSCSI, NFS nebo SMB. Nakonfigurujte úložiště, předložte úložiště uzlům clusteru a přesuňte soubory databáze do nového úložiště. Následující články popisují postup pro každý typ úložiště:

Instalace a konfigurace Pacemakeru na každém uzlu clusteru

  1. Na obou uzlech clusteru vytvořte soubor pro uložení uživatelského jména a hesla SQL Serveru pro přihlášení Pacemaker.

    Následující příkaz vytvoří a naplní tento soubor:

    sudo touch /var/opt/mssql/secrets/passwd
    echo '<loginName>' | sudo tee -a /var/opt/mssql/secrets/passwd
    echo '<loginPassword>' | 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
    
  2. Na obou uzlech clusteru otevřete porty firewallu pro Pacemaker. Pokud chcete tyto porty otevřít pomocí firewalld, spusťte následující příkaz:

    sudo firewall-cmd --permanent --add-service=high-availability
    sudo firewall-cmd --reload
    

    Pokud používáte jiný firewall, který nemá vestavěnou konfiguraci vysoké dostupnosti, otevřete následující porty, aby Pacemaker mohl komunikovat s ostatními uzly v clusteru:

    • TCP: porty 2224, 3121, 21064
    • UDP: port 5405
  3. Nainstalujte balíčky Pacemaker na každý uzel.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  4. Nastavte heslo pro výchozího uživatele, který se vytvoří při instalaci balíčků Pacemaker a Corosync. Na obou uzlech použijte stejné heslo.

    sudo passwd hacluster
    
  5. Povolte a spusťte službu pcsd a Pacemaker. Uzly se tak po restartování znovu připojí ke clusteru. Na obou uzlech spusťte následující příkaz.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  6. Nainstalujte zdrojového agenta FCI pro SQL Server. Na obou uzlech spusťte následující příkazy.

    sudo yum install mssql-server-ha
    

Nastavení agenta oplocení

Zařízení STONITH poskytuje agenta izolace. Pro produkční klastry musíte nakonfigurovat fencing agent. Pro příklad, jak vytvořit zařízení STONITH v Azure, viz Nastavení Pacemakeru na Red Hat Enterprise Linux v Azure. Upravte pokyny pro vaše prostředí.

Nakonfigurujte instanci clusteru pro převzetí služeb při selhání

FCI se vytvoří ve skupině prostředků. To je trochu jednodušší, protože skupina prostředků snižuje potřebu omezení. Prostředky však přidejte do skupiny prostředků v pořadí, v jakém se mají spustit. Pořadí, ve které by měly začít, je:

  1. Zdroj úložiště
  2. Síťový prostředek
  3. Prostředek aplikace

Tento příklad vytvoří FCI ve skupině NewLinFCIGrp. Název skupiny prostředků musí být jedinečný z jakéhokoli prostředku vytvořeného v Pacemakeru.

  1. Vytvořte prostředek disku. Pokud se nejedná o problém, nedostanete zpět žádnou odpověď. Způsob vytvoření prostředku disku závisí na typu úložiště. Následující část ukazuje příklady pro každý typ úložiště (iSCSI, NFS a SMB). Použijte příklad, který se vztahuje na typ úložiště pro clusterované úložiště.

    sudo pcs resource create <iSCSIDiskResourceName> Filesystem device="/dev/<VolumeGroupName>/<LogicalVolumeName>" directory="<FolderToMountiSCSIDisk>" fstype="<FileSystemType>" --group RGName
    
    • <iSCSIDIskResourceName> je název prostředku přidruženého k disku iSCSI.
    • <VolumeGroupName> je název skupiny svazků.
    • <LogicalVolumeName> je název vytvořeného logického svazku.
    • <FolderToMountiSCSIDIsk> je složka pro připojení disku (pro systémové databáze a výchozí umístění by to bylo /var/opt/mssql/data)
    • <FileSystemType> bude ext4 nebo XFS v závislosti na tom, jak byly věci formátovány a jaké distribuce podporuje.

  1. Vytvořte IP adresu, kterou bude používat FCI. Pokud se nejedná o problém, nedostanete zpět žádnou odpověď.

    sudo pcs resource create <IPResourceName> ocf:heartbeat:IPaddr2 ip=<IPAddress> nic=<NetworkCard> cidr_netmask=<NetMask> --group <RGName>
    
    • <IPResourceName> je název prostředku přidruženého k IP adrese.
    • <IPAddress> je IP adresa FCI.
    • <NetworkCard> je síťová karta přidružená k podsíti (to znamená eth0).
    • <NetMask> je maska podsítě (tj. 24).
    • <RGName> je název skupiny prostředků.
  2. Vytvořte prostředek FCI. Pokud se nejedná o problém, nedostanete zpět žádnou odpověď.

    sudo pcs resource create FCIResourceName ocf:mssql:fci op defaults timeout=60s --group RGName
    
    • <FCIResourceName> není pouze název prostředku, ale také uživatelsky přívětivý název spojený s FCI. Toto je to, co uživatelé a aplikace používají k připojení.
    • <RGName> je název skupiny prostředků.
  3. Spusťte příkaz sudo pcs resource. FCI by měl být online.

  4. Připojte se k FCI přes SSMS nebo sqlcmd pomocí názvu DNS/prostředku FCI.

  5. Vydat prohlášení SELECT @@SERVERNAME. Mělo by se vrátit jméno FCI.

  6. Vydat prohlášení SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS'). Mělo by vrátit název uzlu, na kterém FCI běží.

  7. Ručně přepněte FCI na jiné uzly. Viz instrukce pod Provozovat instanci failover clusteru na Linuxu.

  8. Nakonec nastavte FCI zpět do původního uzlu a odeberte omezení kolokace.

Summary

V tomto kurzu jste dokončili následující úlohy.

  • Nastavení a konfigurace Linuxu
  • Instalace a konfigurace SQL Serveru
  • Nakonfigurujte soubor hosts
  • Konfigurace sdíleného úložiště a přesunutí databázových souborů
  • Instalace a konfigurace Pacemakeru na každém uzlu clusteru
  • Nakonfigurujte instanci clusteru pro převzetí služeb při selhání